当前位置: 首页 > 工具软件 > ora2pg > 使用案例 >

Ora2Pg配置文件详解

谢翰学
2023-12-01

说明

此说明基于ora2pg v21.0版本

配置文件说明

配置项用途说明默认值/格式
IMPORT导入配置文件将通用配置保存为文件后,其他文件导入后不用再编辑通用配置-
INPUT_FILE导入文件内容只能用于导入函数、存储过程和包定义-
ORACLE_HOME设置Oracle home目录ora2pg安装前已配置环境变量,这项基本用不到-
ORACLE_DSNOracle连接地址可用service_name替代sid,实现服务名连接dbi:Oracle:host=xx;sid=SIDNAME;port=xx
ORACLE_USEROracle连接用户名-
ORACLE_PWDOracle连接密码-
USER_GRANTS使用非DBA账号时需设为1建议还是使用DBA账号0
DEBUG输出迁移过程详细日志到控制台建议开启配置为10
ORA_INITIAL_COMMAND连接oracle后执行指令如读取数据前设置会话参数或者解锁策略。该项可配置多次-
EXPORT_SCHEMA将oracle的schema导出0
SCHEMA配置oracle的schema或owner当只有dba账号,迁移其他用户数据时可以用到SCHEMA_NAME
CREATE_SCHEMA将创建schema的sql语句定义在输出文件的开头1
COMPILE_SCHEMA迁移前强制编译指定schema中的无效函数、过程、包和用户定义的类型1
PG_SCHEMA配置postgresql的schemaschema_name
POSTGIS_SCHEMA指定用于搜索postgis的schemaschema_name
SYSUSERS指定允许使用的oracle的系统用户名默认排除所有oracle系统用户名OE,HR
LOOK_FORWARD_FUNCTION搜索配置的schema的中查找所有函数、存储过程、包的声明,然后继续导出结构ora2pg默认只会在当前schema中搜索函数SCOTT,OE
NO_FUNCTION_METADATA强制ora2pg不导出函数的声明将导致ora2pg在重写函数时替换调用。除非是函数导出中断,否则不要启用该项0
NLS_NCHAR设置oracle数据库的编码AL32UTF8
CLIENT_ENCODING设置PostgreSQL数据库的编码UTF8
TYPE配置要导出的类型TABLE
DISABLE_COMMENT不导出列注释0
ALLOW配置要导出的对象名TABLE_TEST
EXCLUDE配置导出时要排除的对象名OTHER_TABLES
VIEW_AS_TABLE将指定视图导出成表VIEW_NAME
NO_VIEW_ORDERING禁止视图排序默认导出视图前进行排序,防止视图间相互调用导出后定义写入失败.当视图较多时会占据很长时间0
GRANT_OBJECT指定要导出权限的对象类型默认是导出所有对象的权限TABLE
EXTERNAL_TO_FDW将外部表导出为file_fdw表如果不想导出这些表,需将该项设为01
TRUNCATE_TABLECOPY或INSERT前进行truncate table未配置DELETE项时才生效0
DELETE写入数据前删除部分数据,可配置数据过滤条件TABLE_NAME[DELETE_WHERE_CLAUSE]
USE_TABLESPACE强制根据配置的表空间名导出表、索引约束仅当表空间名非TEMP、USER、SYSTEM时生效0
REORDERING_COLUMNS对列进行排序,以达到最小化磁盘占用,容纳更多行的目的0
WHERE迁移指定数据,可配置数据过滤条件TABLE_NAME[WHERE_CLAUSE]
REPLACE_QUERY替换ora2pg默认读取数据的语句,当你有更复杂的读取需求时TABLENAME[SQL_QUERY]
CONTEXT_AS_TRGM强制使用pg_trgm将Text索引转换为postgresql索引pg_trgm会将上下文索引转换为FTS索引和CTXCAT索引0
FTS_INDEX_ONLY创建一个基于函数的索引来转换oracle的文本索引1
FTS_CONFIG强制使用文本搜索配置如果未配置则默认检测所有的索引和pg_catelog.englishpg_catalog.french
USE_UNACCENT0
USE_LOWER_UNACCENT0
SKIP在迁移过程关闭postgres的某些功能fkeys pkeys ukeys indexes checks
KEEP_PKEY_NAMES默认关闭。开启后导出的主键会与oracle库中同名0
PKEY_IN_CREATE开启后会将主键的定义写在表定义中,而不是通过alter table添加GreenPlum PostgreSQL建议开启该项0
FKEY_ADD_UPDATE配置添加ON UPDATE CASCADE定义到外键定义语句中。Oracle不支持该语法,但Postgresql支持该语法never-外键定义与oracle中一致;delete是当外键定义了ON DELETE CASCADE时才会添加ON UPDATE CASCADE选项;always是强制所有选项添加ON UPDATE CASCADEnever delete always
FKEY_DEFERRABLE将外键导出为可延迟的默认是按原样导出的。如果外键未设置延迟则导出来也是不可延迟的,这可能导致一些文件,建议开启0
DEFER_FKEY在数据导出过程延迟所有的外键,导入将在单个事务中完成仅当外键是可延迟且未使用直接导入Postgresql时,该项才有效0
DROP_FKEY导入数据前删除外键,导入完成后恢复外键当外键是不可延迟的时候,可使用该项0
DISABLE_SEQUENCE禁止序列更新在迁移过程中0
DISABLE_TRIGGERS迁移过程禁止触发器 ,在迁移过程中0
MODIFY_STRUCT只导出某些列的数据tables(fields separate by space or comma)
REPLACE_TABLES更换要迁移的表名ORIG_TB_NAME1:NEW_TB_NAME1
REPLACE_COLS更换要迁移的列名TB_NAME(ORIG_COLNAME1:NEW_COLNAME1,ORIG_COLNAME2:NEW_COLNAME2)
PRESERVE_CASE保持迁移对象名的大小写0
INDEXES_SUFFIX给索引名添加后缀当索引跟表同名时,建议配置该项_idx
INDEXES_RENAMING按照“表名_列名“的格式给索引重命名当多次使用相同索引名或相同表名的数据库,建议开启0
USE_INDEX_OPCLASS强制使用运算符导出varchar2和char列上定义的索引运算符类text_pattern_ops、varchar_pattern_ops和bpchar_pattern_ops支持相应类型上的B树索引。与默认运算符类的不同之处在于,这些值严格按字符进行比较,而不是根据特定于区域设置的排序规则进行比较。这使得这些运算符类适合于在数据库不使用标准“C”语言环境时涉及模式匹配表达式(如或POSIX正则表达式)的查询使用。如果启用值为1,则将强制Ora2Pg使用这些运算符导出varchar2()和char()列上定义的所有索引。如果将其设置为大于1的值,则只会更改字符限制大于或等于此值的列的索引。例如,将其设置为128,以便在类型为varchar2(N)的列上创建这类索引,其中N>=1280
PREFIX_PARTITION通过父表导出分区表Oracle可能分区名相同,但父表名不同。PG是不允许的0
PREFIX_SUB_PARTITION如果分区名是子分区名的一部分,禁用该项1
DISABLE_PARTITION开启后会将分区数据全部写到主表默认值是将分区数据写入到PG专用分区表中0
WITH_OID建表或将视图导出成表时,强制添加WITH (OIDS)0
ORA_RESERVED_WORDS允许使用Oracle关键字转义列名audit,comment,references
USE_RESERVED_WORDS允许使用pg关键字,关键字将用双引号包起来0
DISABLE_UNLOGGED禁用UNLOGGED,将表导出为普通标默认会将带有NOLOGGING属性的表导出为UNLOGGED表0
PG_DSNPG连接地址dbi:Pg:dbname=test_db;host=localhost;port=5432
PG_USERPG用户名
PG_PWDPG密码
OUTPUT指定导出的数据文件名
OUTPUT_DIR指定导出的数据文件存放文件夹
FILE_PER_CONSTRAINT将约束保存在单独的文件中,该文件名格式为“CONSTRAINTS_OUTPUT”0
FILE_PER_INDEX将索引保存在单独的文件中,该文件名格式为“INDEXES_OUTPUT”0
FILE_PER_FKEYS将外键保存在单独的文件中,该文件名格式为“CONSTRAINT_output.sql”0
FILE_PER_TABLE将表数据保存在单独的文件中,该文件名格式为“tablename_OUTPUT”0
FILE_PER_FUNCTION将函数或存储过程保存在单独的文件中,该文件名格式为“funcname_OUTPUT”0
BINMODE设置导出的文件的编码utf8
STOP_ON_ERROR当发生错误时停止导出1
COPY_FREEZE使用COPY FREEZE 代替 COPY当-J或者ORACLE_COPIES为1时生效0
CREATE_OR_REPLACE导出后使用CREATE OR REPLACE在函数的DDL中1
PG_INITIAL_COMMAND连接到postgresql后执行的初始指令如读取数据前设置会话参数或者解锁策略。该项可配置多次
DATA_TYPE指定oracle的postgresql的数据类型映射关系DATE:timestamp
PG_NUMERIC_TYPEOracle的NUMBER(p,s) 将转换为real和浮点类型。关闭后则转换为numeric(p,s)仅当对精度要求高的时候,关闭该项。因为numeric比real或double慢1
PG_INTEGER_TYPEOracle的NUMBER§或NUMBER将转换为smallint 将转换为real和浮点类型1
DEFAULT_NUMERIC不带精度的NUMBER将转换为bigint需开启PG_INTEGER_TYPE选项bigint
ENABLE_MICROSECOND如果不想从oracle的时间戳导出毫秒数据,将该项设为0开启后时间格式为“YYYY-MM-DD HH24:MI:SS”,关闭后时间格式为“YYYY-MM-DD HH24:MI:SS.FF”1
REPLACE_AS_BOOLEAN将某些列的类型改为boolean比如当列为number或者char类型,且数据为1时TB_NAME1:COL_NAME1
BOOLEAN_VALUES当为配置的值时,这些可以被转义为pg的boolean类型数据yes:no y:n 1:0 true:false enabled:disabled
REPLACE_ZERO_DATE替换0000-00-00 00:00:00默认是替换为null,但当列有非空约束时,需配置该项1970-01-01 00:00:00
MODIFY_TYPE修改列的数据类型TABLE1:COL3:varchar
TO_NUMBER_CONVERSION将NUMBER强制转换为某类型numeric
GEN_USER_PWD开启后替换用户的默认密码0
FORCE_OWNER强制将对象的使用者设置为Oracle中使用者默认是将连接账号设为OWNER0
FORCE_SECURITY_INVOKER覆盖函数的SECURITY DEFINER默认是使用Oracle中的SECURITY DEFINER0
DATA_LIMIT配置普通数据每次的抽取量该值修改后需确保有足够内存10000
BLOB_LIMIT配置BLOB数据的每次的抽取量默认是抽取普通数据量的10%500
NOESCAPE默认转义所有非date或time类型的数据,可以设置1禁止转义仅在COPY时生效0
TRANSACTION更改数据导出时的事务隔离级别可选值:readonly, readwrite, serializable and committed (read committed)serializable
STANDARD_CONFORMING_STRINGS开启后使用(E’…’) 转义数据0
LONGREADLEN配置数据导出的大小限制。当数据超过限制值时会报ORA-24345错误1047552
LONGTRUNCOK开启后可绕过ORA-24345错误0
NO_LOB_LOCATOR禁止该项将使用LOB locators代替BLOB和CLOB类型数据的全部文本信息0
LOB_CHUNK_SIZE设置LOB CHUNK的大小512000
XML_PRETTY开启后强制使用getStringVal()读取XML数据0
LOG_ON_ERROR开启后,数据导出失败后会继续导出0
TRIM_TYPE当数据转为为varchar或text时,对数据开头和结尾的空格进行修剪可选值:LEADING(删除开头的空格)\TRAILING(删除结尾的空格)\BOTH(都删除空格)BOTH
TRIM_CHAR设置要移除的字段。默认为空格与TRIM_TYPE字段配合使用-
FUNCTION_CHECK对函数体进行检查关闭该项,将会在导出时添加SET check_function_bodies = false;
NO_BLOB_EXPORT不导出blob数据开启该项前需保证blob字段没有设置非空约束0
DATA_EXPORT_ORDER指定数据导出的排序依据默认值是name,即按照对象名进行排序后导致;可设置为size按照对象大小排序后导出name、size
JOBS配置导出线程数用于COPY、FUNCTION、PROCEDURE1
ORACLE_COPIES配置从oracle抽取数据的线程数1
PARALLEL_TABLES配置同时处理的表数量1
DEFAULT_PARALLELISM_DEGREE在oracle每次查询时添加/*+ PARALLEL(tbname, degree) */0
PARALLEL_MIN_ROWS当表的记录数小于该值时,则不会开启多线程模式100000
DEFINED_PK当表进行多线程读取时,通过SELECT * FROM TABLE WHERE MOD(COLUMN, $ORA_COPIES) = ?拆分数据读取,该项用于配置拆分依据。默认是使用主键TABLE:COLUMN TABLE:ROUND(COLUMN)
DROP_INDEXES迁移前删除索引,在数据导入后重建索引0
SYNCHRONOUS_COMMIT设置是否同步提交默认关闭以提高写入速度。当需要数据直接加载到Postgresql需开启该项0
EXPORT_INVALID是否导出不可用的函数、包、存储过程、用户自定义类型0
PLSQL_PGSQL是否启用PLSQL到PLPSQL的转换1
NULL_EQUAL_EMPTY指定null等于空字符串0
EMPTY_LOB_NULL将空的empty数据指定为null如果有大量的空lob数据列,建议开启,可以提升迁移速度0
PACKAGE_AS_SCHEMA如果你只想将包导出成为一个简单的函数,需将该项设为0关闭该项后,导出后的包命名从package_name.function_name() 变为package_name_function_name()1
REWRITE_OUTER_JOIN是否重写(+)语法1
FUNCTION_STABLE通过禁用配置指令,可以强制Ora2Pg将这些函数创建为VOLATILE1
COMMENT_COMMIT_ROLLBACK是否注释COMMIT或ROLLBACK指令0
COMMENT_SAVEPOINT是否注释SAVEPOINT指令0
STRING_CONSTANT_REGEXP设置要临时替换的regexp列表,以不中断解析器regexp列表必须使用分号作为分隔符默认只替换字符常量,即在两个单引号之间的值
ALTERNATIVE_QUOTING_REGEXP支持字符串文本的替代引用机制(“Q”)q’{(.*)}’
AUTONOMOUS_TRANSACTION是否使用orafce函数默认ora2pg会重写add_month(), add_year(), date_trunc() and to_char() 等函数0
AUTONOMOUS_TRANSACTION允许使用dblink或pg_backgroud插件将自治事务转换为wrapper函数如果想将其转为普通函数,需禁用该项1
PG_VERSION指定PostgreSQL的版本11
BITMAP_AS_GIN是否使用gin索引禁用后将使用btree索引。当pg版本大于9.4时该项有效1
PG_BACKGROUND是否使用pg_backgroud替代dblink wrapper当pg版本大于9.5时有效0
DBLINK_CONN配置dblink信息port=5432 dbname=pgdb host=localhost user=pguser password=pgpass
PG_SUPPORTS_SUBSTR指定是否支持substring()redshift是不支持substring(),此时需将该项关闭1
AUTODETECT_SPATIAL_TYPE是否检测空间列中使用的实际空间类型和维度1
CONVERT_SRID是否自动将srid转换为epsg1
DEFAULT_SRID重写默认的epsg srid为43264326
 类似资料: