Sybase数据库恢复
Sybase数据库使用也很普遍,通常由于以下原因造成的故障,补天时代通常可以完整修复
(1)系统崩溃只剩下数据文件的情况下的恢复,甚至数据库文件不存在而只有损坏得备份文件情况下得恢复;
(2)误delete数据恢复、误删除表恢复(drop)、truncate表恢复 等;
(3)各种sybase错误的修复. 如 IQ ASA ASE的各种db错误;
(4)sybase数据库被标记为可疑,不可用 不能启动等情况;
(5)sybase数据库中数据文件出现坏块情况下的恢复. 以及启用简单加密 AES加密的不可启动修复;
(6)sybase数据库无数据文件但有有日志的情况下的恢复;
(7)sybase数据库只有设备数据文件 没有任何日志的情况下的恢复;
(8)sybase数据文件被误删除情况下的恢复. 0字节 0KB的恢复;
(9)磁盘阵列上的sybase数据库被误格式化情况下的恢复;
(10)针对UNIX版本,Novell Netware版本,Windows NT版本 的SYBASE数据库误删除,误分区,误格式化,分区打不开等情况我们可以做该数据库的碎片恢复;
(11)DB文件可见 日志LOG文件也存在 文件属性都正常 但数据库无法启动;
(12)硬盘出现物理坏道 数据库无法复制 无法启动,这类故障需要专业设备与人工介入处理。
Sybase(ASE)的数据不是直接放在文件系统上的文件,而是放在"设备"里按页分配。这层结构决定了:直接拷数据文件、或用其它数据库的工具打开,都很难得到结果。
技术难点:设备层 + 页级对象分配
Sybase 由 master 库记录设备与数据库的对应关系,数据库的空间分散在一个或多个设备上,按 2KB/4KB/8KB/16KB 的页分配对象。日志可以单独放在日志设备上,也可以与数据同设备。老的 11.x/12.x 版本还有字符集与页结构差异。元数据一旦损坏,对象存在哪些页上就没人告诉你了。
我们实际怎么做
- 先镜像全部设备文件与日志设备,含跨多个文件分条存放的情况。
- 解析设备与数据库映射:从 master 库结构中定位设备表、数据库与设备的对应关系,重建空间分布。
- 页级提取对象:按分配页链与索引结构找出每张表的数据页,连同表结构一起提取;页大小判断错误会导致行错位,我们会用多组假设交叉验证。
- 用日志补最新事务:日志设备可用时做前滚,尽量保住故障前的最新写入。
- 导出为通用格式:按表导出为脚本或表格文件,交付前由客户验证。
这些操作千万别做
- 用 SQL Server 或其它数据库的恢复流程去处理 Sybase 设备文件。
- 只拷一个数据文件(可能存在多个设备),或漏掉日志设备。
- 在原库上执行修复或重建命令。
Sybase 各版本(含老版本 ASE)均可检测评估;不成功不收费,完整服务流程见 数据恢复服务流程。
