Dupliquer un utilisateur de base de données Oracle

17

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.

Nous avons un utilisateur existant dans la base de données pour cela. 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?

Gommel
la source

Réponses:

21

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 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;

Attributions de rôles:

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 la sortie pour modifier le nom d'utilisateur.

Philᵀᴹ
la source
Notez que la génération DDL encapsule l'utilisateur existant entre guillemets; cela rend le remplacement du nom d'utilisateur existant très simple.
Andrew Wolfe
1
Le ROLE_GRANT doit précéder l'instruction DEFAULT_ROLE lors de la création du nouvel utilisateur pour réussir.
Theofilos
@Theofilos thanks, édité
Betlista