复制 Oracle 数据库用户

Gom*_*mel 19 oracle

我们将有外部审计员过来对我们的 Oracle 数据库进行审查。他们将运行一个工具来执行审查,为此,他们需要一个可以连接到数据库并从中获取信息的用户 ID。

为此,我们在数据库中有一个现有用户。但是,它是一个生产 ID,我们不能将其锁定。我们想克隆/复制此 ID,包括其角色和权限。

我们可以在 Oracle 中这样做吗?

Phi*_*lᵀᴹ 22

用户创建:

select dbms_metadata.get_ddl( 'USER', 'PHIL' ) from dual;
Run Code Online (Sandbox Code Playgroud)

默认角色:

select dbms_metadata.get_granted_ddl( 'DEFAULT_ROLE', 'PHIL' ) from dual;
Run Code Online (Sandbox Code Playgroud)

系统补助:

select dbms_metadata.get_granted_ddl( 'SYSTEM_GRANT', 'PHIL' ) from  dual;
Run Code Online (Sandbox Code Playgroud)

对象授予:

select dbms_metadata.get_granted_ddl( 'OBJECT_GRANT', 'PHIL' ) from dual;
Run Code Online (Sandbox Code Playgroud)

角色授予:

select dbms_metadata.get_granted_ddl( 'ROLE_GRANT', 'PHIL' ) from dual;
Run Code Online (Sandbox Code Playgroud)

配额:

select dbms_metadata.get_granted_ddl( 'TABLESPACE_QUOTA', 'PHIL' ) from dual;
Run Code Online (Sandbox Code Playgroud)

如果上面的任何一个都没有输出,你会得到一个看起来像这样的异常:

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>
Run Code Online (Sandbox Code Playgroud)

然后在输出上进行搜索和替换以更改用户名。