Ora2Pg 高级配置之导出指定模式

原文地址:http://ora2pg.darold.net/documentation.html

导出指定 Oracle 模式

导出 Oracle 数据库时可以选择导出指定模式(Schema)或者命名空间(Namespace),可以强制将其设置为连接数据库的用户。

SCHEMA
用于设置导出的模式名称。例如:

SCHEMA  APPS

将会导出 APPS 模式下的对象。

如果没有指定模式名称,并且启用了 EXPORT_SCHEMA ,Ora2Pg 将会导出 Oracle 实例中所有模式下的所有对象,并且对象名称以模式名为前缀。

EXPORT_SCHEMA

默认情况下,Oracle 中的模式不会被迁移到 PostgreSQL 数据库中,所有的对象使用默认的 Pg 命名空间进行创建。如果想要导出模式,并且在该命名空间下创建所有的对象,可以将 EXPORT_SCHEMA 参数设置为 1 。设置该参数将会在导出的 SQL 文件头部添加一个语句,将模式的搜索路径 search_path 设置为 SCHEMA 参数的值。如果想要改变搜索路径,可以使用 PG_SCHEMA 参数。

CREATE_SCHEMA

在输出文件的头部启用/禁用 CREATE SCHEMA 语句。该参数与 TABLE 导出类型相关,默认为启用。

COMPILE_SCHEMA

默认情况下,Ora2Pg 只导出有效的 PL/SQL 代码。设置该参数后,Oracle 会在导出之前尝试编译无效的代码,如果成功编译,就会导出相应的对象。

启用该配置将会强制 Oracle 在导出代码之前执行一次模式的编译。如果启用该参数的同时设置了 SCHEMA,只有该模式下的无效对象会进行重新编译;如果没有设置 SCHEMA,Oracle 中所有的模式都会进行编译。如果想要编译指定模式下的无效对象,可以将 COMPILE_SCHEMA 设置为该模式名称。

‘VALID’ 或者 ‘INVALID’ 状态适用于函数、过程、包以及用户定义类型。

EXPORT_INVALID

如果上面的配置选项无法验证 PL/SQL 代码,可以启用该选项导出所有的PL/SQL 代码,包括无效的代码。 ‘VALID’ 或 ‘INVALID’ 状态适用于函数、过程、包以及用户定义类型。

PG_SCHEMA

定义导入操作使用的 PostgreSQL 模式。默认情况下,如果将 EXPORT_SCHEMA 设置为 1,导入 PostgreSQL 时的 search_path 将会设置为 SCHEMA 参数指定的模式名称。

该参数的值可以是一个逗号分隔的模式名称列表,但是使用 TABLE 导出类型除外,因为这种导出类型会产生 CREATE SCHEMA 语句,而该语句不支持指定多个模式名称。例如,如果将 PG_SCHEMA 设置为 “user_schema,public”,生成的搜索路径设置语句如下:

SET search_path = user_schema, public;

强制导入时使用其他模式(user_schema)而不是 SCHEMA 指定的 Oracle 模式。

也可以使用以下语句为连接 PostgreSQL 的用户设置默认的 search_path:

ALTER ROLE username SET search_path TO user_schema, public;

这样就不需要设置 PG_SCHEMA 参数了。

SYSUSERS
如果没有明确指定模式,Ora2Pg 将会导出不属于以下系统模式或角色的所有对象:

CTXSYS,DBSNMP,EXFSYS,LBACSYS,MDSYS,MGMT_VIEW,OLAPSYS,ORDDATA,OWBSYS,ORDPLUGINS,ORDSYS,OUTLN,SI_INFORMTN_SCHEMA,SYS,SYSMAN,SYSTEM,WK_TEST,WKSYS,WKPROXY,WMSYS,XDB,APEX_PUBLIC_USER,DIP,FLOWS_020100,FLOWS_030000,FLOWS_040100,FLOWS_010600,FLOWS_FILES,MDDATA,ORACLE_OCM,SPATIAL_CSW_ADMIN_USR,SPATIAL_WFS_ADMIN_USR,XS$NULL,PERFSTAT,SQLTXPLAIN,DMSYS,TSMSYS,APEX_040200,DVSYS,OJVMSYS,GSMADMIN_INTERNAL,APPQOSSYS,ODM,ODM_MTR,TRACESRV,MTMSYS,OWBSYS_AUDIT,WEBSYS,WK_PROXY,OSE$HTTP$ADMIN,AURORA$JIS$UTILITY$,AURORA$ORB$UNAUTHENTICATED,DBMS_PRIVILEGE_CAPTURE

某些 Oracle 安装中可能还包含其他的系统角色。使用 SYSUSERS 选项可以定义一个使用逗号分隔的模式排除列表。例如:

SYSUSERS        INTERNAL,SYSDBA,BI,HR,IX,OE,PM,SH

将 INTERNAL 和 SYSDBA 等角色添加到模式排除列表中。

FORCE_OWNER

默认情况下,导入的数据库对象属于连接 PostgreSQL 时使用的用户。如果使用其他用户(例如 postgres)执行导入,将该参数设置为 1,可以强制 Ora2Pg 将导入对象的拥有者设置为与 Oracle 数据库中的同名用户;或者将该参数设置为其他的用户名,可以将导入对象的拥有者设置为该用户。

FORCE_SECURITY_INVOKER

Ora2Pg 使用 Oracle 中设置的函数安全权限,通常是 SECURITY DEFINER。如果想要将所有的函数安全权限设置为 SECURITY INVOKER,可以启用该选项。

USE_TABLESPACE

如果启用了该选项,ora2pg 使用 Oracle 数据库中的表空间名称导出所有的表、索引约束和索引。该选项只能用于非 TEMP、USERS 以及 SYSTEM 表空间。

WITH_OID

如果启用了该选项,Ora2Pg 在创建表或者将视图转换为表时增加 WITH (OIDS) 参数。默认禁用该参数,和 PostgreSQL 一致。

LOOK_FORWARD_FUNCTION

指定一个逗号分隔的模式列表,Ora2Pg 在导出当前模式之前,将会在这些模式下查找所有的函数/过程/包声明。将函数调用替换为 OUT 参数时,如果某个函数是在其他的包中进行了声明,无法进行函数调用的重写,因为 Ora2Pg 只能获取当前模式下的函数声明。

人生本来短暂,你又何必匆匆!点个赞再走吧!

相关文章

文章浏览阅读773次,点赞6次,收藏9次。【代码】c# json字符...
文章浏览阅读8.7k次,点赞2次,收藏17次。此现象一般定位到远...
文章浏览阅读2.8k次。mysql脚本转化为oracle脚本_mysql建表语...
文章浏览阅读2.2k次。cx_Oracle报错:cx_Oracle DatabaseErr...
文章浏览阅读1.1k次,点赞38次,收藏35次。本文深入探讨了Or...
文章浏览阅读1.5k次。默认自动收集统计信息的时间为晚上10点...