oracle壞塊問題的解決
1.在alter.log 中找到錯誤block
grep blocknum alter**.log |sort |uniq
2.使用SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME FROM DBA_EXTENTS WHERE file = FILE_ID AND block BETWEEN BLOCK_ID AND BLOCK_ID+BLOCKS -1
查出出錯的表
3.使用db_repair修復,雖然沒有成功.db_repair沒有發現錯誤.但
select count(*) 就報錯.
connect sys/chang_on_install
a. create_admin.sql
declare
begin
dbms_repair.admin_tables(
table_name =>'REPAIR_TABLE',
table_type=>dbms_repair.repair_table,
action=> dbms_repair.create_action,
tablespace => 'system');
end;
/
b. orphan_create
declare
begin
dbms_repair.admin_tables (
table_type=> dbms_repair.orphan_table,
action => dbms_repair.create_action,
tablespace =>'SYSTEM');
end;
/
c. check_object
declare
rpr_count int;
begin
rpr_count :=0;
dbms_repair.check_object(
schema_name=>'OBS56',
object_name=> 'ABS_PROD_BILL_20020521',
repair_table_name=> 'REPAIR_TABLE',
corrupt_count => rpr_count);
dbms_output.put_line('repair count:' || to_char(rpr_count));
end;
/
d. fix_object
declare
fix_count int;
begin
fix_count :=0;
dbms_repair.fix_corrupt_blocks(
schema_name=>'OBS56',
object_name=> 'ABS_PROD_BILL_20020521',
object_type=>dbms_repair.table_object,
repair_table_name=> 'REPAIR_TABLE',
fix_count => fix_count);
dbms_output.put_line('repair count:' || to_char(fix_count));
end;
/
最後使用.
1. 停應用
2.rename A to B;
ALTER SESSION SET EVENTS '10231 TRACE NAME CONTEXT FOREVER, LEVEL 10';
3.create table A as select * from B;
4.刪除A上的index.
退出
重進入sqlplus
重新建立A上的index.
grep blocknum alter**.log |sort |uniq
2.使用SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME FROM DBA_EXTENTS WHERE file = FILE_ID AND block BETWEEN BLOCK_ID AND BLOCK_ID+BLOCKS -1
查出出錯的表
3.使用db_repair修復,雖然沒有成功.db_repair沒有發現錯誤.但
select count(*) 就報錯.
connect sys/chang_on_install
a. create_admin.sql
declare
begin
dbms_repair.admin_tables(
table_name =>'REPAIR_TABLE',
table_type=>dbms_repair.repair_table,
action=> dbms_repair.create_action,
tablespace => 'system');
end;
/
b. orphan_create
declare
begin
dbms_repair.admin_tables (
table_type=> dbms_repair.orphan_table,
action => dbms_repair.create_action,
tablespace =>'SYSTEM');
end;
/
c. check_object
declare
rpr_count int;
begin
rpr_count :=0;
dbms_repair.check_object(
schema_name=>'OBS56',
object_name=> 'ABS_PROD_BILL_20020521',
repair_table_name=> 'REPAIR_TABLE',
corrupt_count => rpr_count);
dbms_output.put_line('repair count:' || to_char(rpr_count));
end;
/
d. fix_object
declare
fix_count int;
begin
fix_count :=0;
dbms_repair.fix_corrupt_blocks(
schema_name=>'OBS56',
object_name=> 'ABS_PROD_BILL_20020521',
object_type=>dbms_repair.table_object,
repair_table_name=> 'REPAIR_TABLE',
fix_count => fix_count);
dbms_output.put_line('repair count:' || to_char(fix_count));
end;
/
最後使用.
1. 停應用
2.rename A to B;
ALTER SESSION SET EVENTS '10231 TRACE NAME CONTEXT FOREVER, LEVEL 10';
3.create table A as select * from B;
4.刪除A上的index.
退出
重進入sqlplus
重新建立A上的index.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25618347/viewspace-713687/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle壞塊問題及解決辦法Oracle
- oracle 壞塊問題急救Oracle
- Oracle壞塊問題總結Oracle
- Oracle壞塊問題處理Oracle
- Oracle日常問題-壞塊修復Oracle
- oracle 壞塊問題 ora-01578Oracle
- 壞塊問題(摘抄總結)
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- Oracle___診斷案例__解決佛山**支隊資料壞塊的問題(20061109)Oracle
- oracle 鎖問題的解決Oracle
- Oracle上的邏輯壞塊和物理壞塊Oracle
- undo表空間出現壞塊導致資料庫重啟問題解決資料庫
- oracle壞塊(二)Oracle
- Oracle資料庫壞塊(corruption)-物理壞塊Oracle資料庫
- Oracle 解決鎖表問題Oracle
- oracle字元亂碼問題的解決Oracle字元
- oracle的2G問題解決Oracle
- Oracle___專題研究__資料庫壞塊Oracle資料庫
- Oracle壞塊處理Oracle
- oracle壞塊Block CorruptionsOracleBloC
- 檢查 oracle 壞塊Oracle
- ORACLE 壞塊處理Oracle
- ORA-01578壞塊解決方法
- 資料庫壞塊解決案例一則資料庫
- 解決「問題」,不要解決問題
- oracle imp字符集問題的解決Oracle
- 解決Oracle序列跳號問題Oracle
- JDBC Oracle executeUpdate 卡死問題解決JDBCOracle
- 解決問題oracle學習篇Oracle
- 解決oracle中not like效率問題Oracle
- 利用oracle9i blockrecover 修復ORA-01578壞塊問題OracleBloC
- ORACLE壞塊總結(轉)Oracle
- ORACLE壞塊總結2Oracle
- [oracle]解決centos 7下oracle的中文亂碼問題OracleCentOS
- Oracle DRM引起的問題解決一例Oracle
- 如何自行解決Oracle的技術問題? (zt)Oracle
- oracle rac asm 問題的官方解決辦法OracleASM
- 解決Oracle死鎖問題步驟Oracle