posts - 495,comments - 227,trackbacks - 0
          <2010年4月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          常用鏈接

          留言簿(46)

          隨筆分類(476)

          隨筆檔案(495)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 1396785
          • 排名 - 16

          最新評論

          閱讀排行榜

          評論排行榜

          http://maincoolbo.javaeye.com/blog/568519

          我們都都知道在controlfile中記錄著每一個archivelog的相關(guān)信息,當(dāng)然們在OS下把這些物理文件delete掉后,在我們的

          controlfile中仍然記錄著這些archivelog的信息,在oracle的OEM管理器中有可視化的日志展現(xiàn)出,當(dāng)我們手工清除 archive目錄下的文件后,這些記錄并沒有被我們從controlfile中清除掉,也就是oracle并不知道這些文件已經(jīng)不存在了!這時候我們要 做手工的清除的話,下面我經(jīng)過實驗,可以嘗試這種方法:

          1. 進入rman 

          2. connect target /

          3. crosscheck archivelog all;

          4. delete expired archivelog all;

          這時候我們再去OEM中看就一定看不到,如果你的從來沒有做過這個動作的話,我們可以比較從這個動作前的controlfile后動作后的 controlfile的大小!

          ORACLE正確刪除歸檔并回收空間的方法

          ORACLE正確刪除歸檔并回收空間的方法

          一個ORACLE歸檔日志經(jīng)常滿,表現(xiàn)為/oraarchive 這個文件空間占用100%大家一定抱怨ORACLE為何沒有歸檔維護工具,很多人直接刪除了事,錯了,ORACLE有,而且很智能,可以正確的刪除歸檔和 FLASHBACK,不過切記,ORACLE歸檔日志對于ORACLE的數(shù)據(jù)恢復(fù)和備份非常重要,不到萬不得已不要刪除歸檔日志。

          刪除歸檔日志的過程

          以O(shè)RACLE用戶身份登錄到數(shù)據(jù)庫服務(wù)器主機或通過網(wǎng)絡(luò)連接

          進入ORACLE數(shù)據(jù)備份工具

          rman target/

          或rman target/@orcl

          在命令窗口里面執(zhí)行

          DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

          說明

          SYSDATA-7,表明當(dāng)前的系統(tǒng)時間7天前,before關(guān)鍵字表示在7天前的歸檔日志,如果使用了閃回功能,也會刪除閃回的數(shù)據(jù)。

          同樣道理,也可以刪除從7天前到現(xiàn)在的全部日志,不過這個命令要考慮清楚,做完這個刪除,最好馬上進行全備份數(shù)據(jù)庫

          DELETE ARCHIVELOG FROM TIME 'SYSDATE-7';



          UNIX/LINUX下也可以通過FIND找到7天前的歸檔數(shù)據(jù),使用EXEC子操作刪除



          find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;

          這樣做仍然會在RMAN里留下未管理的歸檔文件

          仍需要在RMAN里執(zhí)行下面2條命令

          crosscheck archivelog all;

          delete expired archivelog all;

          所以還不如上面的方法好用,不過用FIND的好處就是,可以在條件上,和EXEC子項上做很多操作,實現(xiàn)更復(fù)雜的功能

          3.簡要介紹一下report obsolete命令



          使用report obsolete命令報告過期備份

          RMAN> report obsolete;

          RMAN retention policy will be applied to the command

          RMAN retention policy is set to redundancy 1

          Report of obsolete backups and copies

          Type                 Key    Completion Time    Filename/Handle

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

          Backup Set           125    01-NOV-04

          Backup Piece       125    01-NOV-04          /data1/oracle/orabak/full_1_541045804

          Backup Set           131    04-NOV-04

          Backup Piece       131    04-NOV-04          /data1/oracle/orabak/full_AVATAR2_20041104_131

          ....

          Backup Set           173    06-DEC-04

          Backup Piece       173    06-DEC-04          /data1/oracle/orabak/full_AVATAR2_20041206_173

          Backup Set           179    11-DEC-04

          Backup Piece       179    11-DEC-04          /data1/oracle/orabak/arch544588206.arc

          .....

          Backup Piece       189    17-DEC-04          /data1/oracle/orabak/arch545106606.arc

          Backup Set           190    17-DEC-04

          Backup Piece       190    17-DEC-04          /data1/oracle/orabak/arch545106665.arc

          Backup Set           191    20-DEC-04

          Backup Piece       191    20-DEC-04          /data1/oracle/orabak/arch_AVATAR2_20041220_194

          Archive Log          2973   20-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2985.dbf

          Archive Log          2971   20-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2984.dbf

          .....

          Archive Log          2705   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2717.dbf

          Archive Log          2704   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2716.dbf

          Archive Log          2703   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2715.dbf

          Archive Log          2702   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2714.dbf



          4.使用delete obsolete命令刪除過期備份:



          RMAN> delete obsolete;



          RMAN retention policy will be applied to the command

          RMAN retention policy is set to redundancy 1

          using channel ORA_DISK_1

          Deleting the following obsolete backups and copies:

          Type                 Key    Completion Time    Filename/Handle

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

          Backup Set           125    01-NOV-04

          Backup Piece       125    01-NOV-04          /data1/oracle/orabak/full_1_541045804

          ....

          Archive Log          2704   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2716.dbf

          Archive Log          2703   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2715.dbf

          Archive Log          2702   17-DEC-04          /opt/oracle/oradata/avatar2/archive/1_2714.dbf



          Do you really want to delete the above objects (enter YES or NO)? yes

          deleted backup piece

          backup piece handle=/data1/oracle/orabak/full_AVATAR2_20041206_173 recid=173 stamp=544156241

          .....

          deleted archive log

          archive log filename=/opt/oracle/oradata/avatar2/archive/1_2715.dbf recid=2703 stamp=545108268

          deleted archive log

          archive log filename=/opt/oracle/oradata/avatar2/archive/1_2714.dbf recid=2702 stamp=545107659

          Deleted 286 objects





          RMAN> crosscheck archivelog all;



          released channel: ORA_DISK_1

          allocated channel: ORA_DISK_1

          channel ORA_DISK_1: sid=19 devtype=DISK

          specification does not match any archive log in the recovery catalog





          5 在rman中用crosscheck檢查歸檔日志,2個歸檔日志都是失敗的:

          RMAN> crosscheck archivelog all;



          釋放的通道: ORA_DISK_1

          分配的通道: ORA_DISK_1

          通道 ORA_DISK_1: sid=14 devtype=DISK

          對歸檔日志的驗證失敗

          存檔日志文件名 =D:ORACLEORADATATESTARCHIVE1_47.DBF 記錄 ID=1 時間戳 =572866

          683

          對歸檔日志的驗證失敗

          存檔日志文件名 =D:ORACLEORADATATESTARCHIVE11_48.DBF 記錄 ID=2 時間戳 =57286

          6931

          已交叉檢驗的 2 對象



          6 試著同步一下,看行不行,結(jié)果不行,crosscheck還是失敗:

          RMAN> resync catalog;



          正在啟動全部恢復(fù)目錄的 resync

          完成全部 resync



          RMAN> crosscheck archivelog all;



          釋放的通道: ORA_DISK_1

          分配的通道: ORA_DISK_1

          通道 ORA_DISK_1: sid=14 devtype=DISK

          對歸檔日志的驗證失敗

          存檔日志文件名 =D:ORACLEORADATATESTARCHIVE1_47.DBF 記錄 ID=1 時間戳 =572866

          683

          對歸檔日志的驗證失敗

          存檔日志文件名 =D:ORACLEORADATATESTARCHIVE11_48.DBF 記錄 ID=2 時間戳 =57286

          6931

          已交叉檢驗的 2 對象



          7 用list expired看看是否有失效的archive log,證明沒有失效的archive log:

          RMAN> list expired archivelog all;



          說明與恢復(fù)目錄中的任何存檔日志均不匹配



          8 更改語言環(huán)境試試,結(jié)果再次crosscheck,2個archive log 都成功了:

          RMAN> exit





          恢復(fù)管理器完成。



          C:>set nls_lang=american_america.zhs16gbk



          C:>rman catalogrman/rman@safetarget /



          Recovery Manager: Release 9.2.0.1.0 - Production



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



          connected to target database: TEST (DBID=1870953724)

          connected to recovery catalog database



          RMAN> crosscheck archivelog all;



          allocated channel: ORA_DISK_1

          channel ORA_DISK_1: sid=9 devtype=DISK

          validation succeeded for archived log

          archive log filename=D:ORACLEORADATATESTARCHIVE1_47.DBF recid=1 stamp=57286

          6683

          validation succeeded for archived log

          archive log filename=D:ORACLEORADATATESTARCHIVE11_48.DBF recid=2 stamp=5728

          66931

          Crosschecked 2 objects


          ====================================
          oracle隱藏參數(shù)字典 x$ksppi x$ksppstvl 
          oracle的隱藏參數(shù)字典是 x$ksppi,x$ksppstvl基表中,有關(guān)隱含參數(shù)說明,可以查詢這個基表

          SQL> desc x$ksppi
          名稱 是否為空? 類型
          ------    -----
          ADDR      RAW(4)
          INDX      NUMBER
          INST_ID   NUMBER
          KSPPINM   VARCHAR2(64)
          KSPPITY   NUMBER
          KSPPDESC  VARCHAR2(64)
          KSPPIFLG  NUMBER

          SQL>

          SQL> desc x$ksppcv
          名稱 是否為空? 類型
          ----------------------------------------- -------- ----------------------------

          ADDR RAW(4)
          INDX NUMBER
          INST_ID NUMBER
          KSPPSTVL VARCHAR2(512)
          KSPPSTDF VARCHAR2(9)
          KSPPSTVF NUMBER
          KSPPSTCMNT VARCHAR2(255)

          SQL>

          比如我現(xiàn)在要查詢隱含參數(shù)
          _allow_resetlogs_corruption /// 這個參數(shù)說明允許數(shù)據(jù)庫在不一致的條件下,進行數(shù)據(jù)庫打開


          查看隱含參數(shù)的值,方式是


          SQL> col ksppinm format a30
          SQL> col ksppstvl format a30
          SQL> select ksppinm,ksppstvl from x$ksppcv cv,x$ksppi pi where cv.indx=pi.indx a
          nd pi.ksppinm like '_allow%';

          KSPPINM KSPPSTVL
          ------------------------------ ------------------------------
          _allow_error_simulation FALSE
          _allow_resetlogs_corruption FALSE
          _allow_terminal_recovery_corru FALSE
          ption

          _allow_read_only_corruption FALSE

          SQL>

          這個參數(shù)一般在數(shù)據(jù)庫正常無法恢復(fù)了,可以用它來強行打開數(shù)據(jù)庫,把數(shù)據(jù)文件先備份出來,這是
          一個比較好的辦法。
          posted on 2010-04-21 15:14 SIMONE 閱讀(5013) 評論(0)  編輯  收藏 所屬分類: oracle
          主站蜘蛛池模板: 崇义县| 凭祥市| 永德县| 浠水县| 大田县| 富宁县| 扬州市| 蒲江县| 灵武市| 镇赉县| 桂阳县| 萨嘎县| 虹口区| 运城市| 阜宁县| 连云港市| 屯昌县| 大足县| 巫山县| 长垣县| 嘉兴市| 肇源县| 军事| 玉溪市| 彭山县| 高安市| 竹北市| 武隆县| 木兰县| 刚察县| 六安市| 迭部县| 定远县| 福贡县| 营山县| 察隅县| 涞水县| 珲春市| 樟树市| 邵武市| 平原县|