由于ODU命令比较多特别是关键的unload命令比较复杂本文将简单介绍几种场景下使用ODU进行数据恢复时使用的命令序列
场景 数据库不能启动但是SYSTEM表空间中的数据字典是完整的
生成数据字典unload dict
列出用户: list user
列出用户下的所有表: list table username
恢复表: unload table usernametablename
也可以按用户恢复 unload user username
场景 表被TRUNCATE
OFFLINE表所在的表空间
生成数据字典unload dict
显示表的段头desc usernametablename
找到实际的data object id dump datafile file# block block#
扫描数据scan extent
恢复表unload table usernametablename object object_id
UPDATE:
从版本开始恢复Truncate表更方便只需要执行下面的步骤:
OFFLINE表所在的表空间
生成数据字典unload dict
扫描数据scan extent
恢复表unload table usernametablename object auto
场景 表被DROP
OFFLINE表所在的表空间
使用logminer从日志里面挖掘被drop掉的表其data object id如果不能挖掘按下面的场景进行恢复
扫描数据scan extent
如果没有表结构信息需要自动来判断unload object data_object_id sample
恢复表unload object data_object_id column coltype coltype…
场景 系统表空间损坏
扫描数据scan extent
搜索数据unload object all sample
从结果文件sampletxt查找需要的数据
恢复需要的表unload object data_object_id column coltype coltype…
场景 表中数据被DELETE
将参数unload_deleted设置为YES
生成数据字典unload dict
恢复表: unload table usernametablename