微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在除Oracle中的默认用户帐户之外的所有模式及其分配的角色上获取对象特权的备份?

如何解决如何在除Oracle中的默认用户帐户之外的所有模式及其分配的角色上获取对象特权的备份?

基本上在TEST环境中,如何获取用户拥有的所有对象的特权备份生成授予语句,除非数据库中的认值从PROD刷新到TEST,否则oracle中的认对象

因此,我们可以在刷新后恢复到那些特权,以避免出现任何权限被拒绝问题。

,并且还在寻找“ dbms_Metadata.get_dependent_ddl ”和“ dbms_Metadata.get_granted_ddl ”软件包的替代解决方案。因为要花费很多时间,并且会生成很多重复的语句。

解决方法

生成除默认帐户外的所有架构的Grant Code语句脚本

set long 20000 longchunksize 20000 pagesize 0 linesize 1000 feedback off verify off trimspool on

spool file_name.sql
select 'grant '||granted_role||' to '||grantee||';' from DBA_ROLE_PRIVS where grantee in (SELECT usr.username FROM sys.dba_users usr WHERE usr.created > (SELECT created FROM sys.v_$database))
union all
select 'grant '||privilege||' on '||owner||'.'||table_name||' to '||grantee||';' from DBA_TAB_PRIVS where grantee in (SELECT usr.username FROM sys.dba_users usr WHERE usr.created > (SELECT created FROM sys.v_$database))
union all
select 'grant '||privilege||' to '||grantee||';' from DBA_SYS_PRIVS where grantee in (SELECT usr.username FROM sys.dba_users usr WHERE usr.created > (SELECT created FROM sys.v_$database))
union all
select 'grant '||privilege||' ('||column_name||') '||' on '||owner||'.'||table_name||' to '||grantee||';' from DBA_COL_PRIVS where grantee in (SELECT usr.username FROM sys.dba_users usr WHERE usr.created > (SELECT created FROM sys.v_$database));
spool off

查看分配的角色列表。

select granted_role from DBA_ROLE_PRIVS where grantee in (SELECT usr.username FROM sys.dba_users usr WHERE usr.created > (SELECT created FROM sys.v_$database));

生成角色的授予特权声明。

set long 20000 longchunksize 20000 pagesize 0 linesize 1000 feedback off verify off trimspool on

spool file_name.sql
select 'grant '||privilege||' on '||owner||'.'||table_name||' to '||grantee||';' from DBA_TAB_PRIVS where grantee in (select granted_role from DBA_ROLE_PRIVS where grantee in (SELECT usr.username FROM sys.dba_users usr WHERE usr.created > (SELECT created FROM sys.v_$database)));
spool off

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。