说明
此说明基于ora2pg v21.0版本
配置文件说明
配置项 | 用途 | 说明 | 默认值/格式 |
---|---|---|---|
IMPORT | 导入配置文件 | 将通用配置保存为文件后,其他文件导入后不用再编辑通用配置 | - |
INPUT_FILE | 导入文件内容 | 只能用于导入函数、存储过程和包定义 | - |
ORACLE_HOME | 设置Oracle home目录 | ora2pg安装前已配置环境变量,这项基本用不到 | - |
ORACLE_DSN | Oracle连接地址 | 可用service_name替代sid,实现服务名连接 | dbi:Oracle:host=xx;sid=SIDNAME;port=xx |
ORACLE_USER | Oracle连接用户名 | - | |
ORACLE_PWD | Oracle连接密码 | - | |
USER_GRANTS | 使用非DBA账号时需设为1 | 建议还是使用DBA账号 | 0 |
DEBUG | 输出迁移过程详细日志到控制台 | 建议开启配置为1 | 0 |
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的schema | schema_name | |
POSTGIS_SCHEMA | 指定用于搜索postgis的schema | schema_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表 | 如果不想导出这些表,需将该项设为0 | 1 |
TRUNCATE_TABLE | COPY或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.english | pg_catalog.french |
USE_UNACCENT | 0 | ||
USE_LOWER_UNACCENT | 0 | ||
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 CASCADE | never 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>=128 | 0 |
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_DSN | PG连接地址 | dbi:Pg:dbname=test_db;host=localhost;port=5432 | |
PG_USER | PG用户名 | ||
PG_PWD | PG密码 | ||
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_TYPE | Oracle的NUMBER(p,s) 将转换为real和浮点类型。关闭后则转换为numeric(p,s) | 仅当对精度要求高的时候,关闭该项。因为numeric比real或double慢 | 1 |
PG_INTEGER_TYPE | Oracle的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中使用者 | 默认是将连接账号设为OWNER | 0 |
FORCE_SECURITY_INVOKER | 覆盖函数的SECURITY DEFINER | 默认是使用Oracle中的SECURITY DEFINER | 0 |
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、PROCEDURE | 1 |
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将这些函数创建为VOLATILE | 1 | |
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转换为epsg | 1 | |
DEFAULT_SRID | 重写默认的epsg srid为4326 | 4326 |