找回密码
 立即注册

QQ登录

只需一步,快速开始

数据库坏块案例

0
回复
4221
查看
[ 复制链接 ]

293

主题

6

回帖

4093

积分

管理员

积分
4093
01
问题描述

某金融企业,下午4点机房突然断电,电力恢复后重启数据库,准备做日终,但是发现数据库启动报错:


02
检查分析
UNDO文件损坏,无法完成事务恢复。
DBV校验发现大量坏块,包括UNDO和普通数据文件。
没有数据库备份。

03
解决方案
修改pfile,添加参数:
*._corrupted_rollback_segments=(_SYSSMU12$,_SYSSMU13$)
*.event="10513 trace name context forever, level 2"
使用pfile启动数据库;
创建新的UNDO表空间;
跳过坏块数据,全表扫描:
Execute DBMS_REPAIR.SKIP_CORRUPT_BLOCKS('<schema>','<tablename>');
导出未损坏的数据;
恢复未损坏数据,根据业务日志恢复丢失的数据。

04
坏块的各种情况

UNDO文件损坏
正常关闭实例=>更换新的UNDO表空间;
无法正常关闭=>_corrupted_rollback_segments=>打开数据库=>更换undo=>删除损坏的undo=>删除参数重启数据库=>核对数据=>备份。

CURRENT REDO文件损坏
正常关闭实例=>recover until cancel=>open resetlogs;
无法正常关闭=> *._allow_resetlogs_corruption=TRUE=>open resetlogs。

控制文件损坏
正常关闭实例=>create database=>recover=>打开数据库;
无法正常关闭=>create database=>recover until cancel=>open resetlogs。

数据文件损坏
BBED修复SYSTEM及普通数据文件;
正常关闭实例=>打开数据库=>跳过坏块导出数据;
不能正常打开数据库=> 10213 event=>open=>跳过坏块导出数据;
跳过坏块:rowid range、dbms_repair、10231、index scan。

回复

使用道具 举报

293

主题

6

回帖

4093

积分

管理员

积分
4093
01
问题描述

某金融企业,下午4点机房突然断电,电力恢复后重启数据库,准备做日终,但是发现数据库启动报错:


02
检查分析
UNDO文件损坏,无法完成事务恢复。
DBV校验发现大量坏块,包括UNDO和普通数据文件。
没有数据库备份。

03
解决方案
修改pfile,添加参数:
*._corrupted_rollback_segments=(_SYSSMU12$,_SYSSMU13$)
*.event="10513 trace name context forever, level 2"
使用pfile启动数据库;
创建新的UNDO表空间;
跳过坏块数据,全表扫描:
Execute DBMS_REPAIR.SKIP_CORRUPT_BLOCKS('<schema>','<tablename>');
导出未损坏的数据;
恢复未损坏数据,根据业务日志恢复丢失的数据。

04
坏块的各种情况

UNDO文件损坏
正常关闭实例=>更换新的UNDO表空间;
无法正常关闭=>_corrupted_rollback_segments=>打开数据库=>更换undo=>删除损坏的undo=>删除参数重启数据库=>核对数据=>备份。

CURRENT REDO文件损坏
正常关闭实例=>recover until cancel=>open resetlogs;
无法正常关闭=> *._allow_resetlogs_corruption=TRUE=>open resetlogs。

控制文件损坏
正常关闭实例=>create database=>recover=>打开数据库;
无法正常关闭=>create database=>recover until cancel=>open resetlogs。

数据文件损坏
BBED修复SYSTEM及普通数据文件;
正常关闭实例=>打开数据库=>跳过坏块导出数据;
不能正常打开数据库=> 10213 event=>open=>跳过坏块导出数据;
跳过坏块:rowid range、dbms_repair、10231、index scan。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

返回顶部