Скопіювати користувача бази даних Oracle


17

У нас будуть приходити зовнішні аудитори, щоб зробити огляд нашої бази даних Oracle. Вони будуть запускати інструмент для проведення огляду, і для цього їм потрібен ідентифікатор користувача, який може підключитися до бази даних та захопити інформацію з неї.

Для цього в базі даних є вже наявний користувач. Однак це ідентифікатор виробництва, і ми не можемо дозволити собі його закрити. Ми хотіли б клонувати / дублювати цей ідентифікатор, включаючи його ролі та права.

Чи є спосіб це зробити в Oracle?

Відповіді:


21

Створення користувача:

select dbms_metadata.get_ddl( 'USER', 'PHIL' ) from dual;

Роль за замовчуванням:

select dbms_metadata.get_granted_ddl( 'DEFAULT_ROLE', 'PHIL' ) from dual;

Системні гранти:

select dbms_metadata.get_granted_ddl( 'SYSTEM_GRANT', 'PHIL' ) from  dual;

Об'єктні гранти:

select dbms_metadata.get_granted_ddl( 'OBJECT_GRANT', 'PHIL' ) from dual;

Рольові гранти:

select dbms_metadata.get_granted_ddl( 'ROLE_GRANT', 'PHIL' ) from dual;

Квоти:

select dbms_metadata.get_granted_ddl( 'TABLESPACE_QUOTA', 'PHIL' ) from dual;

Якщо будь-яке з перерахованих вище не має результату, ви отримаєте виняток, який виглядає приблизно так:

SQL> select dbms_metadata.get_granted_ddl( 'TABLESPACE_QUOTA', 'PHIL' ) from dual;
ERROR:
ORA-31608: specified object of type TABLESPACE_QUOTA not found
ORA-06512: at "SYS.DBMS_METADATA", line 4018
ORA-06512: at "SYS.DBMS_METADATA", line 5991
ORA-06512: at line 1

no rows selected

SQL>

Потім зробіть пошук і замініть на виході, щоб змінити ім'я користувача.


Зауважте, що покоління DDL обгортає існуючого користувача у подвійних лапках; це робить заміну існуючого імені користувача дуже простою.
Ендрю Вулф

1
ROLE_GRANT повинен передувати оператору DEFAULT_ROLE під час створення нового користувача, щоб досягти успіху.
Теофілос

@Theofilos дякую, відредаговано
Betlista
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.