亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

使用dbms_repair修復塊損壞的具體示例

2024-07-21 02:44:10
字體:
來源:轉載
供稿:網友

使用dbms_repair修復塊損壞的具體示例:


SQL> create tablespace block datafile 'D:/Oracle/oradata/oracle9i/block.dbf' size 5M;


Tablespace created


SQL> connect dlinger/dlinger

Connected to Oracle9i EnterPRise Edition Release 9.2.0.1.0

Connected as dlinger


QL> create table test tablespace block as select * from all_tables;


Table created


SQL> insert into test select * from test;


806 rows inserted


SQL> insert into test select * from test;


1612 rows inserted


SQL> insert into test select * from test;


3224 rows inserted


SQL> insert into test select * from test;


6448 rows inserted


SQL> insert into test select * from test;


insert into test select * from test


ORA-01653: 表DLINGER.TEST無法通過128(在表空間BLOCK中)擴展


SQL> commit;


Commit complete


SQL> select count(*) from test;


COUNT(*)

----------

12896


SQL> create index i_test on test(table_name);


Index created


SQL> alter system checkpoint;


System altered

 

SQL> connect sys/sys as sysdba

已連接。

SQL> shutdown immediate

數據庫已經關閉。

已經卸載數據庫。

ORACLE 例程已經關閉。


--使用UltraEdit編輯block.dbf,修改幾個字符


SQL> startup

ORACLE 例程已經啟動。


Total System Global Area 72424008 bytes

Fixed Size 453192 bytes

Variable Size 46137344 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

數據庫裝載完畢。

數據庫已經打開。

SQL> select count(*) from dlinger.test;

select count(*) from dlinger.test

*

ERROR 位于第 1 行:

ORA-01578: ORACLE 數據塊損壞(文件號14,塊號160)

ORA-01110: 數據文件 14: 'D:/ORACLE/ORADATA/ORACLE9I/BLOCK.DBF'

 

用dbv檢查:

C:/Documents and Settings/duanl>dbv file='D:/oracle/oradata/oracle9i/block.dbf'

blocksize=8192


DBVERIFY: Release 9.2.0.1.0 - Production on 星期二 8月 24 19:58:15 2004


Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


DBVERIFY - 驗證正在開始 : FILE = D:/oracle/oradata/oracle9i/block.dbf

標記為損壞的頁160

***

Corrupt block relative dba: 0x038000a0 (file 14, block 160)

Bad check value found during dbv:

Data in bad block -

type: 6 format: 2 rdba: 0x038000a0

last change scn: 0x0000.0035f5c2 seq: 0x1 flg: 0x06

consistency value in tail: 0xf5c20601

check value in block header: 0x3681, computed block checksum: 0x5bb

spare1: 0x0, spare2: 0x0, spare3: 0x0

***

 


DBVERIFY - 驗證完成


檢查的頁總數 :640

處理的頁總數(數據):510

失敗的頁總數(數據):0

處理的頁總數(索引):0

失敗的頁總數(索引):0

處理的頁總數(其它):9

處理的總頁數 (段) : 0

失敗的總頁數 (段) : 0

空的頁總數 :120

標記為損壞的總頁數:1

匯入的頁總數 :0


使用dbms_repair包

1.創建管理表:

SQL> connect sys/sys as sysdba

Connected to Oracle9i Enterprise Edition Release 9.2.0.1.0

Connected as SYS


SQL> exec DBMS_REPAIR.ADMIN_TABLES('REPAIR_TABLE',1,1,'USERS');


PL/SQL procedure successfully completed


SQL> exec DBMS_REPAIR.ADMIN_TABLES('ORPHAN_TABLE',2,1,'USERS');


PL/SQL procedure successfully completed

 

2.檢查壞塊:dbms_repair.check_object


SQL> declare

2 cc number;

3 begin

4 dbms_repair.check_object(schema_name => 'DLINGER',object_name => 'TEST',cor

rupt_count => cc);

5 dbms_output.put_line(a => to_char(cc));

6 end;

7 /

1


PL/SQL 過程已成功完成。


看到這里用dbms_repair.check,檢查的結果corrupt_count=1,有一個塊損壞,和dbv的結果一致。


check完之后,在我們剛在創建的REPAIR_TABLE中查看塊損壞信息:


SQL> SELECT object_name, relative_file_id, block_id,marked_corrupt, corrupt_description, repair_description,

2 CHECK_TIMESTAMP from repair_table;


OBJECT_NAME RELATIVE_FILE_ID BLOCK_ID MARKED_CORRUPT CORRUPT_DESCRIPTION REPAIR_DESCRIPTION CHECK_TIMESTAMP

-------------- ---------------- ---------- -------------- --------------------- ---------------------------- ---------------

TEST 14 160 TRUE mark block software corrupt 2004-8-24 21:46


在這個table中,可以看到損壞的block的信息,這里的信息和我們用dbv得到的一致。

我們這個實驗是在9i下模擬的,我們注意看MARKED_CORRUPT的值,這里經過check_object后,已經標識為TRUE了。

所以可以直接進行第四步了。

按照oracle文檔上的說法,在8i下,check_object只會檢查壞塊,MARKED_CORRUPT為false

需要使用第3步,fix_corrupt_blocks定位 ,修改MARKED_CORRUPT為true,同時更新CHECK_TIMESTAMP。

這里我們經過實驗,確認在9i下跳過第3步,是完全可行的。

那么8i是否需要執行第三步,我沒有實驗過,但推測應該是不可以跳過的。


3.定位壞塊:dbms_repair.fix_corrupt_blocks


只有將壞塊信息寫入定義的REPAIR_TABLE后,才能定位壞塊。

declare

cc number;

begin

dbms_repair.fix_corrupt_blocks(schema_name => 'DLINGER',object_name => 'TEST',fix_count => cc);

dbms_output.put_line(a => to_char(cc));

end;


4.跳過壞塊:

 

我們前面雖然定位了壞塊,但是,如果我們訪問table:

SQL> select count(*) from dlinger.dbblock;


select count(*) from dlinger.dbblock


ORA-01578: ORACLE 數據塊損壞(文件號14,塊號154)

ORA-01110: 數據文件 14: 'D:/ORACLE/ORADATA/ORACLE9I/BLOCK.DBF'


還是會得到錯誤信息。

這里需要用skip_corrupt_blocks來跳過壞塊:


SQL> exec dbms_repair.skip_corrupt_blocks(schema_name => 'DLINGER',object_name => 'TEST',flags => 1);


PL/SQL procedure successfully completed


SQL> select count(*) from dlinger.test;


COUNT(*)

----------

12850

 

丟失了12896-12850=46行數據。

 


5.處理index上的無效鍵值;dump_orphan_keys


declare

cc number;

begin

dbms_repair.dump_orphan_keys(schema_name => 'DLINGER',object_name => 'I_TEST',object_type => 2,

repair_table_name => 'REPAIR_TABLE',orphan_table_name => 'ORPHAN_TABLE',key_count => CC);

end;

/


SQL> SELECT * FROM ORPHAN_TABLE;


SCHEMA_NAME INDEX_NAME IPART_NAME INDEX_ID TABLE_NAME PART_NAME TABLE_ID KEYROWID KEY DUMP_TIMESTAMP

-------------- ----------- ------------ ---------- ----------- ---------- ---------- ---------------------- ------------------------------------------ --------------

DLINGER I_TEST 30258 TEST 30257 AAAHYxAOwAAAIADA0A *BAAAAAAMTE9HTU5SQ19HU0lJ/g 2004-8-25 22:1

DLINGER I_TEST 30258 TEST 30257 AAAHYxAOwAAAIADAsA *BAAAAAAMTE9HTU5SQ19HVExP/g 2004-8-25 22:1

..............................................


DLINGER I_TEST 30258 TEST 30257 AAAHYxAOwAAAIADB0A *BAAAAAAPTE9HTU5SX0xPQkZSQUck/g 2004-8-25 22:1

DLINGER I_TEST 30258 TEST 30257 AAAHYxAOwAAAIADBYA *BAAAAAAMTE9HTU5SX1RZUEUk/g 2004-8-25 22:1

DLINGER I_TEST 30258 TEST 30257 AAAHYxAOwAAAIADAQA *BAAAAAALTE9HTU5SX1VJRCT+ 2004-8-25 22:1

DLINGER I_TEST 30258 TEST 30257 AAAHYxAOwAAAIADAoA *BAAAAAAMTE9HTU5SX1VTRVIk/g 2004-8-25 22:1


46 rows selected


和上面我們看到的損失的數據行數吻合。


我們根據這個結果來考慮是否需要rebuild index.

 


6.重建freelist:rebuild_freelists


SQL> exec dbms_repair.rebuild_freelists(schema_name => 'DLINGER',object_name => 'TEST');


PL/SQL procedure successfully completed


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区二区三区在线播放| 国产亚洲视频在线观看| 日韩欧美一区二区在线| 3344国产精品免费看| 日韩在线视频免费观看高清中文| 久久久久这里只有精品| 亚洲人成电影在线播放| 亚洲午夜未删减在线观看| 精品久久香蕉国产线看观看亚洲| 亚洲欧美一区二区三区久久| 久久影视电视剧免费网站清宫辞电视| 午夜精品久久久久久久久久久久| 亚洲一区制服诱惑| 69久久夜色精品国产69乱青草| 国产亚洲精品一区二区| 奇米4444一区二区三区| 久久久久久美女| 亚洲欧美成人网| 欧美电影免费观看大全| 精品无人区太爽高潮在线播放| 国产精品国产福利国产秒拍| 欧美日韩国产va另类| 中文字幕在线国产精品| 久久视频免费观看| 日本成人在线视频网址| www.亚洲成人| 在线播放精品一区二区三区| 国产精品夜色7777狼人| 岛国av一区二区| 欧美性69xxxx肥| 欧美最猛黑人xxxx黑人猛叫黄| 97免费中文视频在线观看| 亚洲www在线观看| 日韩成人在线电影网| 亚洲精品日韩在线| 欧美日韩色婷婷| 不卡av电影院| 成人福利免费观看| 91精品国产成人www| 亚洲欧美制服综合另类| 国产精品亚洲аv天堂网| 日韩中文字幕网址| 一区二区国产精品视频| 欧美日韩ab片| 国产精品久久久91| 国产精品午夜一区二区欲梦| 爽爽爽爽爽爽爽成人免费观看| 在线精品播放av| 91精品中国老女人| 91精品国产色综合久久不卡98| 一道本无吗dⅴd在线播放一区| 久久99久久久久久久噜噜| 国产欧美 在线欧美| 一本色道久久88精品综合| 亚洲va欧美va在线观看| 国产精品男人的天堂| 久久久久成人精品| 久久久久国产精品免费| 国产精品一区二区在线| 久久久免费观看视频| 亚洲国产第一页| 国产欧美在线视频| 日韩中文字幕视频在线| 亚洲最大激情中文字幕| 57pao成人永久免费视频| 韩国19禁主播vip福利视频| 最近2019中文字幕mv免费看| 国产精品影院在线观看| 亚洲精品免费av| 欧美激情伊人电影| 日韩精品免费在线观看| 欧美一级高清免费播放| 亚洲午夜国产成人av电影男同| 国产亚洲欧美日韩美女| 欧美性xxxx极品hd满灌| 欧美性生交大片免网| 操日韩av在线电影| 这里只有精品丝袜| 国产精品扒开腿爽爽爽视频| 久久综合免费视频| 国产精品免费久久久久影院| 亚洲国产成人爱av在线播放| 亚洲国产精品va在线观看黑人| 亚洲精品国偷自产在线99热| 91精品国产自产91精品| 欧美丝袜一区二区| 91亚洲人电影| 日韩欧美精品中文字幕| 欧美一区二区三区四区在线| 91高清在线免费观看| 国产精品免费福利| 不卡av在线播放| 2019最新中文字幕| 日本高清不卡在线| 国语自产精品视频在线看一大j8| 国产精品国产自产拍高清av水多| 中文字幕久热精品在线视频| 中文字幕日韩欧美| 亚洲第一精品福利| 色av吧综合网| 亚洲国产欧美一区二区丝袜黑人| 亚洲免费视频在线观看| 亚洲精品美女在线| 亚洲乱码一区二区| 91老司机在线| 九九热精品视频在线播放| 精品一区精品二区| 国产精品久久二区| 九九热最新视频//这里只有精品| 亚洲高清福利视频| 久久久久久久久久久网站| 日韩激情视频在线| 久久久亚洲精品视频| 岛国av一区二区三区| 亚洲欧美国产一本综合首页| 69av视频在线播放| 色偷偷av一区二区三区乱| 日韩欧美中文免费| 国产精品成人在线| 欧美性猛交xxxx| 亚洲精品v天堂中文字幕| 97在线视频国产| 中文字幕在线国产精品| 国产成人精品视| 精品亚洲va在线va天堂资源站| 国产精品精品国产| 国产精品久久久久久久久久免费| 成人欧美一区二区三区在线湿哒哒| 97久久久久久| 最近中文字幕mv在线一区二区三区四区| 欧美久久精品午夜青青大伊人| 岛国av午夜精品| 亚洲一区二区三区sesese| 欧美激情亚洲一区| 日本精品视频在线观看| 亚洲国产日韩一区| 国产成一区二区| 日韩在线www| 国产婷婷成人久久av免费高清| 国产精品美女在线| 久久精品国产成人精品| 精品国产电影一区| 26uuu另类亚洲欧美日本一| 亚洲专区中文字幕| 91精品视频在线免费观看| 91免费的视频在线播放| 国产z一区二区三区| 中文字幕欧美日韩| 欧美黑人xxxⅹ高潮交| 美日韩精品免费观看视频| 欧美性色xo影院| 亚洲精品国产精品自产a区红杏吧| 日韩中文字幕精品视频| 韩日欧美一区二区| 精品在线小视频| 国产精品久久中文| 色无极亚洲影院| 在线观看久久久久久| 久久久国产一区| 色yeye香蕉凹凸一区二区av| 91夜夜揉人人捏人人添红杏| 91在线视频导航| 68精品国产免费久久久久久婷婷| 国外成人在线视频|