• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    數據庫相關:如何使用DBMS_REPAIR檢測和修補數據壞塊

    發布: 2008-5-26 12:54 | 作者: 網絡轉載 | 來源: 中程在線 | 查看: 52次 | 進入軟件測試論壇討論

    領測軟件測試網  Oracle提供了許多方法檢測和修補數據庫中的數據壞塊,而DBMS_REPAIR package就是其中之一。

      對任何可能導致數據丟失的損壞,我們都要仔細的分析,以求理解所要涉及的數據。就修補壞塊本身來說, 它可能會丟失數據,也可能會導致數據在邏輯上不一致;因此在進行修補壞塊之前,必須仔細權衡使用DBMS_REPAIR的得失。

      DBMS_REPAIR package 僅僅對transaction層和data層的壞塊(即通常所說的由軟件引起的壞塊)起作用,對物理上損壞的塊,在它被讀到緩沖區中時就已被標識出來了,而DBMS_REPAIR會忽略所有被標識為壞了的塊。

      在DBMS_REPAIR package 初始版本中,“修補壞塊”的功能僅僅是“將塊標識為由軟件引起的壞塊”

      使用DBMS_REPAIR package的注意事項:

      1、 DB_BLOCK_CHECKING和DB_BLOCK_CHECKSUM要設置為FALSE.

      2、 在使用DBMS_REPAIR之前,有壞塊的文件應做一個備份。

      下面我們就通過一個例子來說明DBMS_REPAIR package是如何檢測和修補壞塊的。

      例如,Table T1(結構如下)中存在一個壞塊:

      SQL> desc t1
      Name Null? Type
      ------------------------ -------- --------------------
      COL1 NOT NULL NUMBER(38)
      COL2 CHAR(512)

      用Analyze命令對Table t1進行分析后,會得到如下錯誤提示:

      SQL> analyze table t1 validate structure;
      analyze table t1 validate structure
      *
      ERROR at line 1:
      ORA-01498: block check failure

      在Analyze產生的trace文件中,可以知道壞塊中包含3條記錄的數據(nrows = 3),

      Trace文件中主要的內容如下:

      Dump file /export/home/oracle/product/8.1.5
      /admin/V815/udump/v815_ora_2835.trc
      Oracle8 Enterprise Edition Release 8.1.5.0.0
      With the Partitioning option
      *** 1998.12.16.15.53.02.000
      *** SESSION ID:(7.6) 1998.12.16.15.53.02.000
      kdbchk: row locked by non-existent transaction
      table=0 slot=0
      lockid=32 ktbbhitc=1
      Block header dump: 0x01800003
      Object id on Block? Y
      seg/obj: 0xb6d csc: 0x00.1cf5f itc: 1 flg: - typ: 1 - DATA
      fsl: 0 fnx: 0x0 ver: 0x01
      Itl Xid Uba Flag Lck Scn/Fsc
      0x01 xid: 0x0002.011.00000121 uba: 0x008018fb.0345.0d --U- 3 fsc
      0x0000.0001cf60
      data_block_dump
      ===============
      tsiz: 0x7b8
      hsiz: 0x18
      pbl: 0x28088044
      bdba: 0x01800003
      flag=-----------
      ntab=1
      nrow=3
      frre=-1
      fsbo=0x18
      fseo=0x19d
      avsp=0x185
      tosp=0x185
      0xe:pti[0] nrow=3 offs=0
      0x12:pri[0] offs=0x5ff
      0x14:pri[1] offs=0x3a6
      0x16:pri[2] offs=0x19d
      block_row_dump:
      (注:其余的省略)
      end_of_block_dump

      一、首先使用DBMS_REPAIR.ADMIN_TABLES來建立repair table和orphan key table,

      并且為repair table和orphan key tables提供管理功能

      SQL> @adminCreate
      SQL> connect sys/
      Connected.
      SQL>
      SQL> -- Repair Table
      SQL>
      SQL> declare
      2 begin
      3 -- create repair table
      4 dbms_repair.admin_tables (
      5 -- table_name => 'REPAIR_TABLE',
      6 table_type => dbms_repair.repair_table,
      7 action => dbms_repair.create_action,
      8 tablespace => 'USERS'); -- 如果是使用SYS用戶的缺省表空間,該項就不用指定
      9 end;
      10 /
      PL/SQL procedure successfully completed.

      我們查詢dba_objects,可以看到如下結果:

      SQL> select owner, object_name, object_type
      2 from dba_objects
      3 where object_name like '%REPAIR_TABLE';
      OWNER OBJECT_NAME OBJECT_TYPE
      ------------------------------------------------------------------
      SYS DBA_REPAIR_TABLE VIEW
      SYS REPAIR_TABLE TABLE
      SQL>
      SQL> -- Orphan Key Table
      SQL>
      SQL> declare
      2 begin
      3 -- Create orphan key table
      4 dbms_repair.admin_tables (
      5 table_type => dbms_repair.orphan_table,
      6 action => dbms_repair.create_action,
      7 tablespace => 'USERS'); -- 如果是使用SYS用戶的缺省表空間,該項就不用指定
      8 end;
      9 /
      PL/SQL procedure successfully completed.

      我們查詢dba_objects,可以看到如下結果:

      SQL> select owner, object_name, object_type
      2 from dba_objects
      3 where object_name like '%ORPHAN_KEY_TABLE';
      OWNER OBJECT_NAME OBJECT_TYPE
      ------------------------------------------------------------------
      SYS DBA_ORPHAN_KEY_TABLE VIEW
      SYS ORPHAN_KEY_TABLE TABLE

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 數據庫

    21/212>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>