处理Oracle数据库中的坏块
2007-05-08 12:10:02 来源:WEB开发网核心提示: 3) 恢复数据文件,执行以下语句RECOVER DATAFILE 'name_of_file';4) Online恢复后的数据文件,处理Oracle数据库中的坏块(3),执行以下的语句ALTER DATABASE DATAFILE 'name_of_file'
3) 恢复数据文件,执行以下语句RECOVER DATAFILE 'name_of_file';
4) Online恢复后的数据文件,执行以下的语句ALTER DATABASE DATAFILE 'name_of_file' ONLINE;
只恢复坏的block(9i以上版本可用)
使用这种方法要求数据库版本是9.2.0以上,要求配置了Rman的catalog数据库,数据库为归档方式,并且有完整的物理备份。
步骤如下:
使用RMAN的BLOCKRECOVER命令
Rman>run{blockrecover datafile 5 block 11,16;}
也可以强制使用某个SCN号之前的备份,恢复数据块。Rman>run{blockrecover datafile 5 block 11,16 restore until sequence 8505;}
通过ROWID RANGE SCAN 保存数据:
1) 先取得坏块中ROW ID的最小值,执行以下的语句SELECT dbms_rowid.rowid_create(1,,,,0) from DUAL;
2)取得坏块中的ROW ID的最大值,执行以下的语句SELECT dbms_rowid.rowid_create(1,,,+1,0) from DUAL;
3)建议一个临时表存储那些没有坏块的数据,执行以下的语句CREATE TABLE salvage_table AS SELECT * FROM corrupt_tab Where 1=2;
INSERT INTO salvage_table SELECT /*+ ROWID(A) */ * FROM A WHERE rowid < '';
INSERT INTO salvage_table SELECT /*+ ROWID(A) */ * FROM A WHERE rowid >= '‘;
5) 根据临时表中的数据重建表,重建表上的索引,限制。
使用10231诊断事件,在做全表扫描的时候跳过坏块
可以在session级别设定ALTER SESSION SET EVENTS '10231 TRACE NAME CONTEXT FOREVER, LEVEL 10';
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接