Oracleデータベースユーザーを複製する


17

Oracleデータベースのレビューを行うために、外部の監査人が来ます。レビューを実行するためのツールを実行するため、データベースに接続してそこから情報を取得できるユーザーIDが必要です。

このためにデータベースに既存のユーザーがいます。ただし、これは実稼働IDであり、ロックアウトすることはできません。ロールと権限を含むこのIDを複製/複製したいと思います。

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.