oracle檢查資料庫是否有壞塊的命令
oracle檢查資料庫是否有壞塊的命令
dbv是檢查物理上是否有壞塊的命令
#su - oracle
#dbv file=/oracleruanko/app/oracle/oracle/product/10.2.0/ruanko/dbs/ruankotest blocksize=8192
DBVERIFY: Release 10.2.0.1.0 - Production on Fri May 28 09:56:37 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
DBVERIFY - Verification starting : FILE = /oracleruanko/app/oracle/oracle/product/10.2.0/ruanko/dbs/ruankotest
DBVERIFY - Verification complete
Total Pages Examined : 2560
Total Pages Processed (Data) : 356
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 255
Total Pages Failing (Index): 0
Total Pages Processed (Other): 112
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 1837
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 140907784 (0.140907784)
2:analyze 是檢查邏輯上是否有壞塊的,還可以對錶進行統計分析最佳化,
SQL>analyze table ruankosystem.RSYS_ACC_ACCOUNT
2 validate structure cascade;
Table analyzed.
SQL>analyze index ruankosystem.PK_RSYS_ACC_ACCOUNT
2 validate structure;
Index analyzed.
3:db_block_checking是邏輯上的,是初始化引數:
是實時的控制和掃描每一個塊,對效能有一點點的影響
可以透過alter session 或alter system deferred 命令對神經過敏進行設定
4:db_block_checksum是物理上的檢查,也是初始化的引數對io來進入實時的
5:dblock media recovery是邏輯和物理上都可以
這個是用RMAN做的如:
rman> blockrecover batafile 6 block3:
-查一下 V$database_bloce_corruption有多少個壞塊
rman > blockrecover corruption list
>restore until time 'sysdate-10';
-查一下v$dackup_corruption檢視顯示資料庫檔案備份中的損壞塊清單
-v$copy_corruption 檢視檔案副本中的壞塊清單
6:exp/expdb匯出的時候就會進行掃描,是物理上的檢查和恢復
7:flashback是邏輯上的
8:dbms_repalr是邏輯上的專是做恢復用的包
有的功能是
-CHECK_OBJECT
-FIX_CORRUPT_BLOCKS
-DUMP_ORPHAN_KEYS
-REBUILD_FREELISTS
-SEGMENT_FIX_STATUS
-SKIP_CORRUPT_BLOCKS
-ADMIN_TABLES
如:先檢查ruankoystem這個使用者下的RSYS_ACC_ACCOUNT表是否有壞塊
set serveroutput on
declare num_corrupt int;
begin
num_corrupt := 0;
dbms_repair.check_object (
schema_name => 'ruankoystem',
object_name => 'RSYS_ACC_ACCOUNT'
repair_table_name => 'repair_table',
corrupt_count => num_corrupt);
end;
如何修復
set serveroutput on
declare num_fix int;
begin
num_fix := 0;
dbms_repair.fix_corrup_blocks (
schema_name => 'ruankoystem',
object_name => 'RSYS_ACC_ACCOUNT'
object_type => dbms_repair.table_object,
repair_table_name => 'repair_table',
fix_count => num_fix );
end;
修理index和重建丟失的資料
set serveroutput on
declare num_orphans int:
begin
num_orphans := 0;
dbms_repair.dump_orphan_reys()
sehema_name => 'ruankosystem'
object_name => 'PK_rsys_acc_acount'
object_type => dbms_repair.index_object,
repair_table_name => 'orpman_key_table',
orphan_table_name => 'ORPMAN_KEY_TABLE',
key_count => num_orphans);
dbms_output.put_line('orphan key count: '|| to_char(num_orphans)
);
end;
表資料可以是壞的,但是index(索引一定要是好的)
set serveroutput on
declare
nrows number;
badrows number;
vyhdabh varchar2(50);
vfgsbh varchar2(50);
vjbh varchar2(50);
begin
badrows := 0;
nrows := 0;
for i in (select /*+ index (tabl1) */ rowid, fgsbh from id_data.yh_dnbtab1) loop
begin
insert into ld_data.newtb select from ld_data.yh_dnb where rowid=i.orwid;
if (mod (nrows,20000)=0) then cmmit; end if;
exception wher others then
badrows := badrows+1;
select / *+ index(a YH_DNB_IND_2) */ yhdabh,fgsbh,jbh into
vyhdabh,ufgsbh,ujbh form. id_data.yh_dnb a where rowid=i.rowid;
insert into bad_rows values (i.rowid,vfgsbh,vyhdabh,vjbh);
commit;
end;
nrow:=nrows+1;
end loop;
dbms_output.put_line('total rows: '||to_char(nrows)||'bad rows:'||to_char(badrows));
commit;
end;
/
用上面那個查出了那些記錄壞了,就可以手動補單了
修復後再用dbms_repair make所有壞塊做一個標識
dbv是檢查物理上是否有壞塊的命令
#su - oracle
#dbv file=/oracleruanko/app/oracle/oracle/product/10.2.0/ruanko/dbs/ruankotest blocksize=8192
DBVERIFY: Release 10.2.0.1.0 - Production on Fri May 28 09:56:37 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
DBVERIFY - Verification starting : FILE = /oracleruanko/app/oracle/oracle/product/10.2.0/ruanko/dbs/ruankotest
DBVERIFY - Verification complete
Total Pages Examined : 2560
Total Pages Processed (Data) : 356
Total Pages Failing (Data) : 0
Total Pages Processed (Index): 255
Total Pages Failing (Index): 0
Total Pages Processed (Other): 112
Total Pages Processed (Seg) : 0
Total Pages Failing (Seg) : 0
Total Pages Empty : 1837
Total Pages Marked Corrupt : 0
Total Pages Influx : 0
Highest block SCN : 140907784 (0.140907784)
2:analyze 是檢查邏輯上是否有壞塊的,還可以對錶進行統計分析最佳化,
SQL>analyze table ruankosystem.RSYS_ACC_ACCOUNT
2 validate structure cascade;
Table analyzed.
SQL>analyze index ruankosystem.PK_RSYS_ACC_ACCOUNT
2 validate structure;
Index analyzed.
3:db_block_checking是邏輯上的,是初始化引數:
是實時的控制和掃描每一個塊,對效能有一點點的影響
可以透過alter session 或alter system deferred 命令對神經過敏進行設定
4:db_block_checksum是物理上的檢查,也是初始化的引數對io來進入實時的
5:dblock media recovery是邏輯和物理上都可以
這個是用RMAN做的如:
rman> blockrecover batafile 6 block3:
-查一下 V$database_bloce_corruption有多少個壞塊
rman > blockrecover corruption list
>restore until time 'sysdate-10';
-查一下v$dackup_corruption檢視顯示資料庫檔案備份中的損壞塊清單
-v$copy_corruption 檢視檔案副本中的壞塊清單
6:exp/expdb匯出的時候就會進行掃描,是物理上的檢查和恢復
7:flashback是邏輯上的
8:dbms_repalr是邏輯上的專是做恢復用的包
有的功能是
-CHECK_OBJECT
-FIX_CORRUPT_BLOCKS
-DUMP_ORPHAN_KEYS
-REBUILD_FREELISTS
-SEGMENT_FIX_STATUS
-SKIP_CORRUPT_BLOCKS
-ADMIN_TABLES
如:先檢查ruankoystem這個使用者下的RSYS_ACC_ACCOUNT表是否有壞塊
set serveroutput on
declare num_corrupt int;
begin
num_corrupt := 0;
dbms_repair.check_object (
schema_name => 'ruankoystem',
object_name => 'RSYS_ACC_ACCOUNT'
repair_table_name => 'repair_table',
corrupt_count => num_corrupt);
end;
如何修復
set serveroutput on
declare num_fix int;
begin
num_fix := 0;
dbms_repair.fix_corrup_blocks (
schema_name => 'ruankoystem',
object_name => 'RSYS_ACC_ACCOUNT'
object_type => dbms_repair.table_object,
repair_table_name => 'repair_table',
fix_count => num_fix );
end;
修理index和重建丟失的資料
set serveroutput on
declare num_orphans int:
begin
num_orphans := 0;
dbms_repair.dump_orphan_reys()
sehema_name => 'ruankosystem'
object_name => 'PK_rsys_acc_acount'
object_type => dbms_repair.index_object,
repair_table_name => 'orpman_key_table',
orphan_table_name => 'ORPMAN_KEY_TABLE',
key_count => num_orphans);
dbms_output.put_line('orphan key count: '|| to_char(num_orphans)
);
end;
表資料可以是壞的,但是index(索引一定要是好的)
set serveroutput on
declare
nrows number;
badrows number;
vyhdabh varchar2(50);
vfgsbh varchar2(50);
vjbh varchar2(50);
begin
badrows := 0;
nrows := 0;
for i in (select /*+ index (tabl1) */ rowid, fgsbh from id_data.yh_dnbtab1) loop
begin
insert into ld_data.newtb select from ld_data.yh_dnb where rowid=i.orwid;
if (mod (nrows,20000)=0) then cmmit; end if;
exception wher others then
badrows := badrows+1;
select / *+ index(a YH_DNB_IND_2) */ yhdabh,fgsbh,jbh into
vyhdabh,ufgsbh,ujbh form. id_data.yh_dnb a where rowid=i.rowid;
insert into bad_rows values (i.rowid,vfgsbh,vyhdabh,vjbh);
commit;
end;
nrow:=nrows+1;
end loop;
dbms_output.put_line('total rows: '||to_char(nrows)||'bad rows:'||to_char(badrows));
commit;
end;
/
用上面那個查出了那些記錄壞了,就可以手動補單了
修復後再用dbms_repair make所有壞塊做一個標識
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29618264/viewspace-2072265/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 資料庫中壞塊概念和檢查指令碼Oracle資料庫指令碼
- 怎樣檢查資料庫壞塊(DBV)資料庫
- 檢查 oracle 壞塊Oracle
- Oracle資料庫壞塊(corruption)-物理壞塊Oracle資料庫
- 【dbv】使用dbv工具檢驗資料檔案是否有壞塊
- 檢查資料塊損壞(Block Corruption)BloC
- Oracle資料庫壞塊修復Oracle資料庫
- 使用validate驗證資料檢查資料壞塊
- Oracle資料庫壞塊典型案例分析Oracle資料庫
- 跳過Oracle資料庫壞塊方法Oracle資料庫
- oracle rman backup命令檢查資料庫錯誤Oracle資料庫
- Oracle資料庫塊的物理損壞與邏輯損壞Oracle資料庫
- Oracle資料庫壞塊典型案例擴充Oracle資料庫
- Oracle___專題研究__資料庫壞塊Oracle資料庫
- 使用dbv和RMAN檢查資料檔案中的壞塊
- 教你如何處理Oracle資料庫中的壞塊Oracle資料庫
- 檢查資料庫是否啟用了跟蹤資料庫
- ORACLE資料庫壞塊的處理 (處理無物件壞快的方法)Oracle資料庫物件
- 資料庫壞塊處理資料庫
- Oracle 11g 通過 RMAN 檢查資料檔案、控制檔案、引數檔案的狀態和是否存在壞塊Oracle
- oracle資料庫巡檢(二)全面檢查Oracle資料庫
- 一次ORACLE資料庫undo壞塊處理Oracle資料庫
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- [zt] 如何處理Oracle資料庫中的壞塊[final]Oracle資料庫
- ORACLE資料庫壞塊的處理 (一次壞快處理過程)Oracle資料庫
- 檢視oracle資料庫是否為歸檔模式Oracle資料庫模式
- 漫談Oracle資料庫健康檢查Oracle資料庫
- Oracle資料庫健康檢查常用SQLOracle資料庫SQL
- 【exp】快速檢測資料檔案壞塊
- 如何使用命令列工具檢查資料庫?命令列資料庫
- 【資料庫資料恢復】Oracle資料庫檔案出現壞塊報錯的資料恢復案例資料庫資料恢復Oracle
- 修復資料庫壞塊之五資料庫
- 修復資料庫壞塊之四資料庫
- 修復資料庫壞塊之三資料庫
- 修復資料庫壞塊之二資料庫
- 修復資料庫壞塊之一資料庫
- ORACLE中修復資料塊損壞Oracle
- oracle 資料庫效能健康檢查指令碼Oracle資料庫指令碼