ARTICLE · 1137270
gdul-rs 第二篇配置说明
gdul-rs 第二篇配置说明
1. 配置选择与优先级
conf/gdul-rs.toml | --gdul-config PATH | |
conf/datafile.json 时使用它,否则回退 conf/datafile.ini | --datafile-config PATH | |
.cache/gdul-rs | --cache-dir DIR | |
export.format | --format SQLLDR|EXP|EXPDP|DB | |
export.directory | --out-dir DIR |
新格式优先规则分别应用于两份文件。配置已存在但内容有错时,不会自动改用旧格式。workspace 会同时生成新旧配置供对照使用,但 --cache-dir 不会把主配置切换成 workspace 内的副本。
CLI 中的相对路径以当前工作目录为基准。配置内部的相对路径遵循兼容规则:先尝试配置所在目录下的路径;若该路径不存在,改用配置目录的父目录。路径的存在状态会影响解析结果,输入文件和长期运行任务建议使用绝对路径。
2. 主配置示例
schema_version = 1
[export]
format = "SQLLDR"
directory = "/path/to/recovered/SQLLDR"
[database]
charset = "ZHS16GBK"
national_charset = "AL16UTF16"
timezone = "+08:00"
[datafile]
default_block_size = 8192
default_raw_offset = 0
read_only = true字符集和时区必须按源库填写,示例值不适用于所有输入。不要直接沿用仓库样例中的数据库连接。
schema_version | 1 |
db_compat_version | "11.0.0.0";不代表已验证支持的 Oracle 版本范围 |
export.format | SQLLDR;DB 会启用目标库直载 |
export.directory | dump,按上述相对路径规则解析 |
export.database.connection | --connect 提供 |
database.charset | |
database.national_charset | |
database.timezone | |
datafile.default_block_size | 8192 |
datafile.default_raw_offset | 0 |
datafile.read_only | true;不应理解为禁止向另一个目标库加载 |
配置 TOML 和数据文件 JSON 均有 schema_version 字段,当前只接受版本 1,并拒绝未知字段。
3. 生成数据文件 JSON
target/release/gdul-rs config datafiles generate \
--dir /path/to/source-datafiles \
--output conf/datafile.json命令只扫描目录的直接子文件,不递归。它读取 Oracle file header,按 file# 排序并写入完整快照;无法识别的文件会显示警告,Oracle tempfile 自动跳过。没有可识别的永久 datafile 时失败且不写输出。
通常不必手工填写 file#、ts#、rfile#、块大小等字段。保留生成时的清单,切换快照时重新生成并使用独立缓存。
从 Oracle 二进制控制文件生成
target/release/gdul-rs config datafiles generate \
--control-file /path/to/control01.ctl \
--datafile-dir /path/to/relocated-datafiles \
--output conf/datafile.json原路径可读时省略 --datafile-dir。--control-file 与 --dir 二选一;控制文件模式要求所有提取的数据文件均可读取并通过文件号、DBID 校验,失败不覆盖配置。当前验证范围是 Oracle 19c 小端布局
4. 文件头损坏与快照回退
正常情况下程序读取文件头,并使用 JSON 中的身份信息进行校验。文件可读但 header 无法识别,且 JSON 有生成时保存的完整快照时,可使用快照继续建立 descriptor。
后续提供免费linux安装包,请关注