Pull to refresh

Различие между «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 привилегии:

SQL>column sysdba format a10
SQL>column sysdba format a10
SQL>select * from v$pwfile_users;
USERNAME SYSDBA SYSOPER
———- ——– ———-
SYS TRUE TRUE
SCOTT TRUE FALSE


О DBA роли


Роль DBA – это предопределённая роль, которая автоматически создаётся для каждой базы данных Oracle. Эта роль содержит все системные привилегии, кроме SYSDBA и SYSOPER. Поэтому она очень мощная и должна назначаться только администраторам, которым требуется полный доступ.

Выборка всех ролей с базы данных:

SQL> select role from dba_roles;
ROLE
———–
CONNECT
RESOURCE
DBA
…..


Выборка всех пользователей, которым назначена DBA роль:

SQL>select * from dba_role_privs where granted_role = ‘DBA’
GRANTEE GRANTED_ROLE ADM DEF
———– ——————- —– ——
SYS DBA YES YES
SYSMAN DBA NO YES
LETS DBA NO YES
SYSTEM DBA YES YES


Замечание: вы не можете назначить привелегию SYSDBA для роли. Это приводит к ошибке:
ORA-01931: cannot grant SYSDBA to a role

Для пользователя базы данных могут быть назначены роль DBA и привилегия SYSDBA:

SQL> select * from dba_role_privs where granted_role = ‘DBA’
GRANTEE GRANTED_ROLE ADM DEF
———- ——————- —— —–
SYS DBA YES YES
SCOTT DBA NO YES
SYSMAN DBA NO YES
LETS DBA NO YES
SYSTEM DBA YES YES


Литература: Oracle® Database Administrator's Guide
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.