Oracle-如何导出安全策略

Oracle-如何导出安全策略,oracle,security,Oracle,Security,我们的Oracle DBA计划将许多模式移动到新实例。我们注意到的一件事是,安全政策没有在出口中延续。此外-在查询“所有对象”或“用户对象”时,它们似乎不算作“对象”。我猜是不同种类的动物 关于如何顺利迁移这些东西有什么想法吗?我个人使用一个工具为特定的用户或角色提取/生成脚本。蟾蜍可以为用户编写脚本,其他工具也可以。我现在用的是我自己的,但我不能在这里推广。如果你没有这样的工具,还有其他选择 使用导出或数据泵。当您完成完整系统导出(使用exp或数据泵)时,您将获得所有授权。然后,您可以使用im

我们的Oracle DBA计划将许多模式移动到新实例。我们注意到的一件事是,安全政策没有在出口中延续。此外-在查询“所有对象”或“用户对象”时,它们似乎不算作“对象”。我猜是不同种类的动物


关于如何顺利迁移这些东西有什么想法吗?

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

使用导出或数据泵。当您完成完整系统导出(使用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_元数据为用户或角色授予权限

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;