文章目录
- 导出指定 Oracle 模式
导出指定 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,WKSYS,
APEX_040200,DVSYS,OJVMSYS,GSMADMIN_INTERNAL,APPQOSSYS,MGMT_VIEW,
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 只能获取当前模式下的函数声明。
人生本来短暂,你又何必匆匆!点个赞再走吧!