Oracle - 如何导出安全策略

时间:2014-10-01 00:53:20

标签: oracle security

我们的Oracle DBA计划将大量模式移动到新实例。我们注意到的一件事 - 安全政策不会在出口中被转移。此外,在查询“all_objects”或“user_objects”时,它们似乎不算作“对象”。我猜不同种类的动物。

关于如何顺利迁移这些内容的任何想法?

1 个答案:

答案 0 :(得分:2)

我个人使用工具为特定用户或角色提取/生成脚本。 Toad可以像其他工具一样编写用户脚本。我现在使用的是我自己的,但我不能在这里推广它。如果您没有这样的工具,还有其他选择。

使用导出或数据泵。当您进行完整系统导出(使用exp或数据泵)时,您将获得所有授权。然后,您可以使用import / impdp实用程序转储所有感兴趣的用户的授权DDL。一旦你有了dmp文件。

impdp system/ full=Y directory=dumpdir dumpfile=full.dmp logfile=dump.txt grants=y

或出口

imp system/ full=y grants=y file=full.dmp log=dump.txt

这将以文本形式将所有内容转储到dump.txt,您可以提取SQL。不是很漂亮,但很有效。

使用DBMS_METADATA为您提供用户或角色的授权。

SQL> set long 50000

SQL> select dbms_metadata.get_ddl( 'USER', 'MSMITH' ) from dual;
SQL> select dbms_metadata.get_granted_ddl('SYSTEM_GRANT', 'MSMITH') from dual;
SQL> select dbms_metadata.get_granted_ddl('OBJECT_GRANT', 'MSMITH') from dual;
SQL> select dbms_metadata.get_granted_ddl('ROLE_GRANT', 'MSMITH') from dual;

或角色:

SQL> select dbms_metadata.get_ddl( 'ROLE', 'JUNIOR_DBA' ) from dual;
SQL> select dbms_metadata.get_granted_ddl('SYSTEM_GRANT', 'JUNIOR_DBA') from dual;
SQL> select dbms_metadata.get_granted_ddl('OBJECT_GRANT', 'JUNIOR_DBA') from dual;
SQL> select dbms_metadata.get_granted_ddl('ROLE_GRANT', 'JUNIOR_DBA') from dual;