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

  1. select * from v$pwfile_users;

О DBA роли

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

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

  1. select role from dba_roles;

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

  1. select * from dba_role_privs where granted_role = ‘DBA’

Замечание: вы не можете назначить привелегию SYSDBA для роли. Это приводит к ошибке:

  1. ORA-01931: cannot grant SYSDBA to a role

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

  1. select * from dba_role_privs where granted_role = ‘DBA’;

Литература: Oracle® Database Administrator's Guide

Источники
https://habrahabr.ru/sandbox/20438/
21:33
2.93K
V5SH2J1 У вас не израсходован бонусный счёт внутри на сайте www.yandex.ru 4 года назад #
Комментарий удален
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.