Sql110 - Oracle 数据恢复工具 v3.0.0 是一款专业的 Oracle 数据库物理恢复工具,直接从数据文件(.dbf)中解析并恢复数据,无需启动数据库实例,
支持 Oracle 7.2 ~ 23c 全版本,覆盖 30+ 种字段类型,是 DBA 应急恢复、数据救援的必备利器。
## 支持的 Oracle 版本
| 版本系列 | 具体版本 | 支持状态 |
| Oracle 7 | 7.2 | ✅ 完整支持 |
| Oracle 8 | 8.0, 8i (8.1.7) | ✅ 完整支持 |
| Oracle 9 | 9i (9.2) | ✅ 完整支持 |
| Oracle 10 | 10g (10.1, 10.2) | ✅ 完整支持 |
| Oracle 11 | 11g (11.1, 11.2) | ✅ 完整支持 |
| Oracle 12 | 12c (12.1, 12.2) | ✅ 完整支持(含 PDB 插件库) |
| Oracle 18 | 18c | ✅ 完整支持 |
| Oracle 19 | 19c | ✅ 完整支持 |
| Oracle 21 | 21c | ✅ 完整支持 |
| Oracle 23 | 23c | ✅ 完整支持 |
### ???? 紧急故障恢复
| 数据库无法启动 | 实例宕机、mount 失败 | 直接读取数据文件恢复 |
| 控制文件丢失 | controlfile 损坏或丢失 | 无需控制文件,直接解析数据文件 |
| redo 日志损坏 | 在线/归档日志损坏 | 物理块级恢复,不依赖 redo |
| system 表空间损坏 | SYSTEM01.DBF 损坏 | 坏块跳过,借助同结构库字典恢复 |
| 数据文件误删除 | dbf 文件被 rm/delete | 文件系统级恢复后直接解析 |
| 误 DELETE 数据 | 执行了错误的 DELETE 且已 COMMIT | 反删除恢复(undel),从块中找回删除行 |
| 误 TRUNCATE 表 | 执行了 TRUNCATE TABLE | 反截断恢复(untrun),扫描全表空间找回数据 |
| 误 DROP 用户 | DROP USER CASCADE | 反删除用户(undrop),从 USER$ 恢复用户定义 |
| 误 DROP 表 | DROP TABLE 后未 purge | 按对象 ID 恢复(rec objid) |
| 丢失行地址记录 | 行迁移/行链接导致地址丢失 | 物理块扫描匹配恢复 |
| 数据块坏块 | ORA-01578 坏块错误 | 坏块自动跳过,不影响其他数据 |
| LOB 指针指向坏块 | CLOB/BLOB 数据块损坏 | 大字段容错,损坏 LOB 输出为 NULL |
| 块校验和错误 | block checksum 失败 | checksum 校验开关,可跳过校验恢复 |
| 块尾校验失败 | blocktail checksum 错误 | 支持 blocktail_checksum 配置 |
| 文件头损坏 | datafile header 损坏 | 自动检测块大小,跳过损坏文件头 |
| ASM 磁盘损坏 | ASM diskgroup 故障 | 支持 ASM 磁盘配置(asmdisk.ini) |
### ???? 复杂场景恢复
| 故障类型 | 说明 | 恢复方式 |
| 数据字典严重损坏 | tab$/col$/obj$ 无法读取 | 借助同结构库表结构匹配数据块恢复 |
| PDB 插件库恢复 | 12c+ PDB 数据文件 | 支持 PDB 段头块偏移转换 |
| 分区表/子分区表 | 大量分区数据 | 支持分区/子分区级别的精确恢复 |
| 簇表 (Cluster) | C_USER# 等簇表 | 支持簇表行目录解析 |
| 行迁移/行链接 | chained rows / migrated rows | 支持行链接完整拼接 |
| 大文件表空间 | BIGFILE tablespace | 支持大文件(单文件最大 32TB) |
| 多字节字符集 | ZHS16GBK/AL32UTF8 等 | 自动检测字符集,支持 autosystem |
## 支持的字段类型(30+ 种)
| VARCHAR2 | 变长字符串 |
| CHAR | 定长字符串 |
| NUMBER | 数值类型(含精度/小数位) |
| LONG | 长文本 |
| DATE | 日期时间 |
| RAW | 二进制数据 |
| LONG RAW | 长二进制 |
| BINARY_FLOAT | 单精度浮点 |
| BINARY_DOUBLE | 双精度浮点 |
| CLOB | 字符大对象(坏块容错输出 NULL) |
| BLOB | 二进制大对象(坏块容错输出 NULL) |
| BFILE | 外部文件指针 |
| TIMESTAMP | 时间戳 |
| TIMESTAMP WITH TIME ZONE | 带时区时间戳 |
| TIMESTAMP WITH LOCAL TIME ZONE | 本地时区时间戳(可配置 dbtimezone) |
| INTERVAL YEAR TO MONTH | 年-月间隔 |
| INTERVAL DAY TO SECOND | 天-秒间隔 |
| OBJECT / ADT | 用户定义对象类型 |
| VARRAY | 可变数组 |
| NESTED TABLE | 嵌套表 |
| REF | 对象引用 |
| XMLType | XML 数据类型 |
| ANYDATA | 任意数据类型 |
| ROWID | 物理行标识 |
| UROWID | 通用行标识 |
| JSON | 原生 JSON 类型 |
| BOOLEAN | 布尔类型 |
| VECTOR | 向量类型(AI 向量检索) |
### ???? 数据恢复
- **全库恢复** (`rec all`) - 一键恢复所有非系统用户的表和数据
- **按用户恢复** (`rec user`) - 恢复指定用户的所有表
- **按表恢复** (`rec table`) - 精确恢复单张表
- **按对象 ID 恢复** (`rec objid`) - 通过 data_object_id 恢复被 drop/truncate 的表
- **无字典盲恢复** (`rec blind`) - 字典损坏时借助同结构库表结构恢复
- **DDL 恢复** (`rec ddl`) - 恢复表/视图/存储过程/函数/包/触发器/类型/JOB 定义
### ???? 闪回恢复
- **反删除恢复** (`recdel`) - 找回已 COMMIT 的 DELETE 数据
- **反截断恢复** (`recrun`) - 找回 TRUNCATE TABLE 后的数据
- **反删除用户** (`recdrop`) - 恢复被 DROP 的用户及其对象
### ???? 扫描诊断
- **全库扫描** (`scan all`) - 扫描整个数据库,统计各对象段信息
- **表空间扫描** (`scan ts`) - 扫描指定表空间
- **数据文件扫描** (`scan file`) - 扫描指定数据文件
- **段采样分析** (`probe segment`) - 采样数据块,猜测列类型和长度
- **块转储** (`hex block`) - 十六进制+ASCII 块内容转储
- **块验证** (`verify block`) - 校验和验证,统计坏块
### ???? 工具集
- **文件头信息** (`info file`) - 显示数据文件头(版本/DBID/块大小)
- **ROWID 解析** (`decode rowid`) - 解析行标识(对象号/文件号/块号)
- **DBA 解析** (`decode dba`) - 解析块地址
- **校验和修复** (`fix block`) - 重新计算并修复块校验和
- **文件复制** (`copy file`) - 大文件复制(带进度)
- **块复制** (`copy block`) - 从同版本库复制块内容修复损坏块
- **备份文件扫描** (`scan dump/exp`) - 扫描损坏的 expdp/exp 备份文件
### ⚙️ 配置管理
- **自动字符集检测** (`detect charset`) - 从 SYSTEM01.DBF 自动提取 NLS 参数
- **多数据源加载** - 支持 ctl 文件、文件夹、拖拽、文本列表加载数据文件
- **INI 配置文件** - INI 配置(checksum/blocktail_checksum/skipbad 等)
- **PDB 支持** - pdb_block_offset 配置,支持 12c+ PDB 插件库恢复
## 导出格式
| 格式 | 说明 | 配置项 |
| CSV | 逗号分隔文本,默认格式 | `format=csv` |
| SQL | INSERT 语句脚本,可直接执行导入 | `format=sql` |
| DMP | expdp 兼容格式,可用 impdp 导入 | `format=dmp` |
| DB | 生成数据库导入脚本(含建表+插数) | `format=db` |
## 平台支持
| 平台 | 编译器 | 支持状态 |
| Windows x64 | MinGW GCC / TDM64 GCC | ✅ 完整支持 |
| Linux x64 | GCC / g++ | ✅ 完整支持 |
| Linux ARM64 | GCC | ✅ 完整支持 |
## 技术优势
1. **纯物理块级解析** - 不依赖数据库实例,不执行任何 SQL,只读数据文件
2. **坏块容错机制** - 遇到坏块自动跳过,LOB 坏块输出 NULL,保证恢复不中断
3. **全版本覆盖** - 从 Oracle 7.2 到 23c,跨越 30 年版本
4. **全字段类型** - 30+ 种字段类型,含 19c/23c 新类型(JSON/BOOLEAN/VECTOR)
5. **PDB 原生支持** - 12c+ PDB 插件库段头块偏移自动转换
6. **大文件支持** - 支持 BIGFILE 表空间,单文件最大 32TB
7. **跨平台编译** - Windows/Linux 双平台,g++ 一键编译
8. **无行数限制** - 企业版无试用版 1000 行限制,支持 TB 级数据库
- 定制服务:支持特殊字段类型、特殊版本定制开发
*Sql110 - 让 Oracle 数据恢复变得简单可靠*
.jpg)




