Gandakan pengguna basis data Oracle

17

Kami akan meminta auditor eksternal datang untuk melakukan tinjauan pada basis data Oracle kami. Mereka akan menjalankan alat untuk melakukan tinjauan dan untuk itu, mereka memerlukan ID pengguna yang dapat terhubung ke database dan mengambil informasi darinya.

Kami memiliki pengguna yang ada dalam database untuk ini. Namun, ini adalah ID produksi dan kami tidak dapat membuatnya terkunci. Kami ingin mengkloning / menggandakan ID ini termasuk peran dan haknya.

Apakah ada cara yang bisa kita lakukan di Oracle?

Gommel
sumber

Jawaban:

21

Pembuatan pengguna:

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

Peran default:

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

Hibah sistem:

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

Hibah benda:

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

Hibah peran:

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

Kuota:

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

Jika salah satu dari di atas tidak memiliki output, Anda akan mendapatkan pengecualian yang terlihat seperti ini:

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>

Kemudian lakukan pencarian dan ganti pada output untuk mengubah nama pengguna.

Philᵀᴹ
sumber
Perhatikan bahwa generasi DDL membungkus pengguna yang ada dalam tanda kutip ganda; ini membuat mengganti nama pengguna yang ada menjadi sangat sederhana.
Andrew Wolfe
1
ROLE_GRANT harus mendahului pernyataan DEFAULT_ROLE saat membuat pengguna baru agar berhasil.
Theofilos
@Theofilos terima kasih, diedit
Betlista