web-dev-qa-db-fra.com

Dupliquer un utilisateur de base de données Oracle

Nous aurons des auditeurs externes à venir pour effectuer un examen de notre base de données Oracle. Ils exécuteront un outil pour effectuer la révision et pour cela, ils ont besoin d'un ID utilisateur qui peut se connecter à la base de données et y récupérer des informations.

Pour cela, nous avons un utilisateur existant dans la base de données. Cependant, il s'agit d'un ID de production et nous ne pouvons pas nous permettre de le verrouiller. Nous aimerions cloner/dupliquer cet ID, y compris ses rôles et droits.

Existe-t-il un moyen de le faire dans Oracle?

17
Gommel

Création d'utilisateurs:

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

Rôle par défaut:

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

Subventions du système:

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

Subventions d'objet:

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

Subventions de rôle:

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

Quotas:

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

Si l'un des éléments ci-dessus n'a pas de sortie, vous obtiendrez une exception qui ressemble à ceci:

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>

Effectuez ensuite une recherche et remplacez sur la sortie pour changer le nom d'utilisateur.

21
Philᵀᴹ