我们将有外部审计员过来对我们的 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)
然后在输出上进行搜索和替换以更改用户名。
归档时间: |
|
查看次数: |
40276 次 |
最近记录: |