Вы здесь
включение защиты словаря данных
То есть необходимо защищать словарь данных от доступа пользователей с системными привилегиями типа ANY (например, SELECT ANY TABLE ). Для этого параметр инициализации O7_DICTIONARY_ACCESSIBILITY устанавливается в значение FALSE. В Oracle9i и выше параметр O7_DICTIONARY_ACCESSIBILITY по умолчанию установлен в FALSE.
При таком значении параметра доступ к словарю вашей базы данных будут иметь только пользователи с административными привилегиями, то есть те, кто имеет возможность подключиться к базе данных как AS SYSDBA. Если администратор решил дать пользователю доступ к словарю, тогда он должен предоставить привилегию SELECT ANY DICTIONARY.
select privilege from dba_sys_privs where grantee ='DBA' and privilege not in (select privilege from dba_sys_privs where grantee ='SYS')
ANALYZE ANY DICTIONARY
SELECT ANY DICTIONARY
Сразу видно, чем отличается SYS от DBA.
И, следовательно, при попытке подключения к базе как CONNECT SYS/ ПАРОЛЬ получение сообщения об ошибке «ORA-28009: connection to sys should be as sysdba or sysoper» вполне прогнозируемо. Доступ к словарю данных, которым владеет пользователь SYS, запрещен всем пользователям, даже если у них есть привилегия SELECT ANY TABLE. Здесь речь идет о таблицах типа SYS.OBJ$, а не представлениях типа ALL_TABLES.
Вывод: при O7_DICTIONARY_ACCESSIBILITY= FALSE пользователь SYS должен подключаться так: connect sys/пароль as sysdba
Post new comment