如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected]
[适用版本]
所有版本
[适用平台]
所有平台
[详细内容]
修复破损块
==================
Document 1746576.1(KROWN:135925) 块破损时的对策:其1(查看破损块)中,我们可以发现与之前查看到的 SEGMENT_TYPE 的 INDEX 与 TABLE 的处理方法不同。
1) SEGMENT_TYPE = INDEX 的情况
索引破损的案例中,可以通过drop/create重新制成索引来处理。
* rebuild 时,无法重新使用现在正在使用的块。
CREATE 语句可以通过dbms_metadata package来查看。
Document 1721853.1(KROWN:63896) dbms_metadata package的概要与使用例
2) SEGMENT_TYPE = TABLE 的情况
1. 想获得RMAN 以及用户管理的备份时请使用。
并且,通过RMAN 来获得备份时,可以以块单位来执行恢复。详细内容请查看以下 KROWN。
Document 1713078.1(KROWN:38393) RMAN 9i新功能: 块介质恢复 (BMR)
2. 理论备份时(exp/imp 以及 csv 等)需要重新制成对象,从备份中加载数据。
3. 使用DBMS_REPAIR package,读取对应块,详细内容请查看以下 KROWN。
Document 1717045.1(KROWN:48684) DBMS_REPAIRpackage的使用例
※DBMS_REPAIR package仅对标记为破损的块有效,无法对LOB段使用。
详细内容请查看 KROWN。
Document 1717169.1(KROWN:49040) 破损块对策
如果有备份的话
—————————-
如果没有备份,也无法使用DBMS_REPAIR package时,从破损对象中尽可能取出数据重新制成
查看一下内容。
1. 使用export utility的修复
查看是否可以通过export utility获得转储文件。
$ exp test/test file=test.dmp tables=test direct=y
* 11g 以后,请使用Datapump utility。
不会发生Document 1737396.1(KROWN:122837)直接输出以及 Data Pump Export ORA-1578
2. 使用CREATE TABLE AS SELECT(CTAS) 修复
a. 发生ORA-1578 时
设定event 10231,执行CTAS。
SQL> CREATE TABLE TEST_TMP AS SELECT * FROM TEST;
Document 1706324.1(KROWN:21385) ORA-1578 块破损时,获得表数据 (event 10231)
无法执行b. a.,并且发生了其他错误时
从获得的块转储中指定发生破损的转储块或者问题行,查看破损的读取对象数据的ROWID
通过DBMS_ROWID.ROWID_CREATE来查看ROWID。
SQL> CREATE TABLE TEST_TMP AS SELECT * FROM TEST WHERE ROWID != ‘AAAAACAABAAANX0AAD’;
SQL> RENAME TEST TO TEST_BAK;
SQL> RENAME TEST_TMP TO TEST;
SQL> DROP TABLE TEST_BAK;
使用Document 1731203.1(KROWN:99901) dbms_rowid package,读取破损块数据的方法(R8.0以后)
3) TEMP 表空间中的破损
在发生TEMP 表空间中发生破损的案例中,请重新制成TEMP表空间。
Document 1722564.1(KROWN:66029) 本地管理临时表空间的备份、恢复方法以及注意事项
4) 本地管理表空间额bitmap块破损时
这些破损案例中,请使用通过用户管理的备份或者RMAN获得的备份执行恢复。
无法获得理论备份时,请在删除表空间并重新制成后,执行数据加载。
没有备份时,请使用export utility取出数据,重新制成表空间。
Leave a Reply