Разница между SYSDBA, SYSOPER и DBA в базе данных Oracle
Начинающий разработчики часто путают SYSDBA и DBA между собой. Поэтому столь необходимо осветить различие между ними. Вкратце, SYSDBA – это системная привилегия, а DBA – это роль.
SYSDBA и SYSOPER – это специальные привилегии администратора, которые позволяют выполнять базовые задачи администрирования: запуск или остановка истанса; создание, удаление, открытие или монтирования базы и др. Роль DBA не включает SYSDBA или SYSOPER.
О системной привилегии SYSDBA
Привилегии SYSDBA и SYSOPER позволяют получать доступ к базе данных, даже если база не открыта. Контроль этих привилегий находится за пределами компетенции самой базы данных. SYSDBA и SYSOPER могут также быть расценены как тип подключения, который позволяет выполнять определённые операции для которых привилегии не могут быть назначены другим способом.Обзор возможностей каждой из привилегий:
SYSDBA:
- Выполнять STARTUP и SHUTDOWN операции
- ALTER DATABASE: open, mount, back up, or change character set
- CREATE DATABASE
- DROP DATABASE
- CREATE SPFILE
- ALTER DATABASE ARCHIVELOG
- ALTER DATABASE RECOVER
- Включает привилегию RESTRICTED SESSION
- ALTER DATABASE RECOVER
- Позволяет подключаться как пользователь SYS
SYSOPER:
- Выполнять STARTUP и SHUTDOWN операции
- CREATE SPFILE
- ALTER DATABASE OPEN/MOUNT/BACKUP
- ALTER DATABASE ARCHIVELOG
- ALTER DATABASE RECOVER (Только полное восстановление. Другие формы восстановления, такие как UNTIL TIME|CHANGE|CANCEL|CONTROLFILE требуют SYSDBA.)
- Включает привелегию RESTRICTED SESSION
- Позволяет выполнять базовые операции, но без возможности просмотра данных пользователя
Если подключаться с привилегией SYSOPER или SYSDBA, то вы будете ассоциированы со схемой по умолчанию для данной привилегии, а не с той, которая была назначена пользователю.
Схема по умолчанию для SYSDBA: SYS
Схема по умолчанию для SYSOPER: PUBLIC
Выборка пользователей, которые имеют SYSDBA или SYSOPER привилегии:
select * from v$pwfile_users;
О DBA роли
Роль DBA – это предопределённая роль, которая автоматически создаётся для каждой базы данных Oracle. Эта роль содержит все системные привилегии, кроме SYSDBA и SYSOPER. Поэтому она очень мощная и должна назначаться только администраторам, которым требуется полный доступ.
Выборка всех ролей с базы данных:
select role from dba_roles;
Выборка всех пользователей, которым назначена DBA роль:
select * from dba_role_privs where granted_role = ‘DBA’
Замечание: вы не можете назначить привелегию SYSDBA для роли. Это приводит к ошибке:
ORA-01931: cannot grant SYSDBA to a role
Для пользователя базы данных могут быть назначены роль DBA и привилегия SYSDBA:
select * from dba_role_privs where granted_role = ‘DBA’;
Литература: Oracle® Database Administrator's Guide
V5SH2J1 У вас не израсходован бонусный счёт внутри на сайте www.yandex.ru 4 года назад #