夜雨聆风学习资料网

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
可选 DB 直载连接;可由 --connect 提供
database.charset
源库数据库字符集
database.national_charset
国家字符集,用于国家字符类型
database.timezone
数据库时区配置
datafile.default_block_size
默认块大小,默认 8192
datafile.default_raw_offset
默认 raw 偏移,默认 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安装包,请关注

相关学习资料