it-swarm-eu.dev

Duplikujte uživatele databáze Oracle

Přeneseme externí auditory, abychom provedli kontrolu naší databáze Oracle. Budou používat nástroj k provedení kontroly a za tím vyžadují uživatelské ID, které se může připojit k databázi a získat z ní informace.

K tomu máme v databázi existujícího uživatele. Jde však o výrobní ID a nemůžeme si dovolit uzamknout jej. Chtěli bychom klonovat/duplikovat toto ID včetně jeho rolí a práv.

Existuje nějaký způsob, jak to udělat v Oracle?

17
Gommel

Vytvoření uživatele:

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

Výchozí role:

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

Systémové granty:

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

Granty na objekt:

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

Granty na roli:

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

Kvóty:

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

Pokud některý z výše uvedených výstupů nemá žádný výstup, dostanete výjimku, která vypadá takto:

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>

Poté proveďte hledání a nahraďte na výstupu a změňte uživatelské jméno.

21
Philᵀᴹ