手動刪除歸檔日誌

victorymoshui發表於2011-04-07

總結一個問題:

因手動刪除歸檔日誌rman報錯

我的環境: linux as4 + oracle 10.2.0.3

今天我手動rm了一個歸檔日誌,結果在rman做備份的時候報瞭如下錯誤:


RMAN> backup archivelog all delete input format '/home/oracle/log_backup/log_%s_%p_%t';

Starting backup at 2007-07-16 17:55:48
current log archived
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 07/16/2007 17:55:49
RMAN-06059: expected archived log not found, lost of archived log compromises recoverability
ORA-19625: error identifying file /home/oracle/archive_log/1_18_627807837.dbf
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3

RMAN> quit


這該怎麼辦,我的rman怎麼才能恢復備份?

手動刪除歸檔日誌後,需要

crosscheck archivelog all;
delete noprompt expired backup;

 

------------------------分割線----------------------------

某一個實驗:

Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\RequieM>sqlplus " / as sysdba"

SQL*Plus: Release 9.2.0.7.0 - Production on 星期一 7月 16 23:54:37 2007

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

已連線到空閒例程。

SQL/IDLE> startup;
ORACLE 例程已經啟動。

Total System Global Area  101785284 bytes
Fixed Size                   454340 bytes
Variable Size              75497472 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL/IDLE> @glogin
SQL> show parameter log_archive_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest                     string      
log_archive_dest_1                   string      LOCATION=F:\oracle\oradata\MYDB\archive
log_archive_dest_10                  string      
log_archive_dest_2                   string      
log_archive_dest_3                   string      
log_archive_dest_4                   string      
log_archive_dest_5                   string      
log_archive_dest_6                   string      
log_archive_dest_7                   string      
log_archive_dest_8                   string      
log_archive_dest_9                   string      
log_archive_dest_state_1             string      enable
log_archive_dest_state_10            string      enable
log_archive_dest_state_2             string      enable
log_archive_dest_state_3             string      enable
log_archive_dest_state_4             string      enable
log_archive_dest_state_5             string      enable
log_archive_dest_state_6             string      enable
log_archive_dest_state_7             string      enable
log_archive_dest_state_8             string      enable
log_archive_dest_state_9             string      enable

SQL> host dir F:\oracle\oradata\MYDB\archive

Volume in drive F is APPLICATION
Volume Serial Number is 684B-6ADC
Directory of F:\ORACLE\ORADATA\MYDB\ARCHIVE

.            

     07-06-24   16:55
..                07-06-24   16:55
1_10     DBF     50688 07-06-28   11:21
1_11     DBF    180224 07-06-28   23:04
1_12     DBF    131584 07-06-29   18:30
1_13     DBF    122368 07-06-30   23:28
1_14     DBF    167936 07-07-01   11:04
1_3      DBF  91852288 07-06-25    5:52
1_4      DBF     60416 07-06-25   21:01
1_5      DBF     89600 07-06-26   17:51
1_6      DBF     99840 07-06-27    6:49
1_7      DBF     50176 07-06-27   12:27
1_8      DBF     53760 07-06-27   14:59
1_9      DBF    129024 07-06-28    6:53
       14 file(s)   92987904 bytes
                  1023932928 bytes free
                  
SQL> host del F:\oracle\oradata\MYDB\archive\1_5.DBF
SQL> host dir F:\oracle\oradata\MYDB\archive

Volume in drive F is APPLICATION
Volume Serial Number is 684B-6ADC
Directory of F:\ORACLE\ORADATA\MYDB\ARCHIVE

.                 07-06-24   16:55
..                07-06-24   16:55
1_10     DBF     50688 07-06-28   11:21
1_11     DBF    180224 07-06-28   23:04
1_12     DBF    131584 07-06-29   18:30
1_13     DBF    122368 07-06-30   23:28
1_14     DBF    167936 07-07-01   11:04
1_3      DBF  91852288 07-06-25    5:52
1_4      DBF     60416 07-06-25   21:01
1_6      DBF     99840 07-06-27    6:49
1_7      DBF     50176 07-06-27   12:27
1_8      DBF     53760 07-06-27   14:59
1_9      DBF    129024 07-06-28    6:53
       13 file(s)   92898304 bytes
                  1023932928 bytes free

SQL> exit

C:\Documents and Settings\RequieM>rman target / nocatalog

恢復管理器: 版本9.2.0.7.0 - Production

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

連線到目標資料庫: MYDB (DBID=2541111196)
正在使用目標資料庫控制檔案替代恢復目錄

RMAN> backup archivelog all delete input;

啟動 backup 於 17-7月 -07
當前日誌已存檔
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=15 devtype=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 07/17/2007 00:02:45
RMAN-06059: expected archived log not found, lost of archived log compromises re
coverability
ORA-19625: 識別檔案F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_5.DBF時出錯
ORA-27041: 無法開啟檔案
OSD-04002: ???????
O/S-Error: (OS 2) ????????????????

RMAN> exit


恢復管理器完成。

C:\Documents and Settings\RequieM>sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.7.0 - Production on 星期二 7月 17 00:11:35 2007

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


連線到:
Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.7.0 - Production

SQL> select name,sequence#,archived,deleted,status from v$archived_log;

NAME                                                                              SEQUENCE# ARCHIVED DELETED STATUS
-------------------------------------------------------------------------------- ---------- -------- ------- ------
F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_3.DBF                                                    3 YES      NO      A
F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_4.DBF                                                    4 YES      NO      A
F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_5.DBF                                                    5 YES      NO      A
F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_6.DBF                                                    6 YES      NO      A
F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_7.DBF                                                    7 YES      NO      A
F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_8.DBF                                                    8 YES      NO      A
F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_9.DBF                                                    9 YES      NO      A
F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_10.DBF                                                  10 YES      NO      A
F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_11.DBF                                                  11 YES      NO      A
F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_12.DBF                                                  12 YES      NO      A
F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_13.DBF                                                  13 YES      NO      A
F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_14.DBF                                                  14 YES      NO      A
F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_15.DBF                                                  15 YES      NO      A

13 rows selected

SQL> exit

從Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.7.0 - Production中斷開

C:\Documents and Settings\RequieM>rman target / nocatalog

恢復管理器: 版本9.2.0.7.0 - Production

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

連線到目標資料庫: MYDB (DBID=2541111196)
正在使用目標資料庫控制檔案替代恢復目錄

RMAN> crosscheck archivelog all;

分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=18 devtype=DISK
對歸檔日誌的驗證失敗
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_3.DBF 記錄 ID=1 時間戳 =6261619
41
對歸檔日誌的驗證失敗
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_4.DBF 記錄 ID=2 時間戳 =6262164
73
對歸檔日誌的驗證成功
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_5.DBF 記錄 ID=3 時間戳 =6262915
00
對歸檔日誌的驗證失敗
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_6.DBF 記錄 ID=4 時間戳 =6263381
89
對歸檔日誌的驗證失敗
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_7.DBF 記錄 ID=5 時間戳 =6263584
60
對歸檔日誌的驗證失敗
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_8.DBF 記錄 ID=6 時間戳 =6263675
48
對歸檔日誌的驗證失敗
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_9.DBF 記錄 ID=7 時間戳 =6264248
15
對歸檔日誌的驗證失敗
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_10.DBF 記錄 ID=8 時間戳 =626440
874
對歸檔日誌的驗證失敗
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_11.DBF 記錄 ID=9 時間戳 =626483
071
對歸檔日誌的驗證失敗
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_12.DBF 記錄 ID=10 時間戳 =62655
2999
對歸檔日誌的驗證失敗
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_13.DBF 記錄 ID=11 時間戳 =62665
7288
對歸檔日誌的驗證失敗
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_14.DBF 記錄 ID=12 時間戳 =62678
5441
對歸檔日誌的驗證失敗
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_15.DBF 記錄 ID=13 時間戳 =62812
8164
已交叉檢驗的 13 物件


RMAN> list copy of archivelog all;


已存檔的日誌副本列表
關鍵字     Thrd Seq     S 短時間     名稱
------- ---- ------- - ---------- ----
1       1    3       A 24-6月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_3.DBF
2       1    4       A 25-6月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_4.DBF
3       1    5       X 25-6月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_5.DBF
4       1    6       A 26-6月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_6.DBF
5       1    7       A 27-6月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_7.DBF
6       1    8       A 27-6月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_8.DBF
7       1    9       A 27-6月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_9.DBF
8       1    10      A 28-6月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_10.DBF
9       1    11      A 28-6月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_11.DBF
10      1    12      A 28-6月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_12.DBF
11      1    13      A 29-6月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_13.DBF
12      1    14      A 30-6月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_14.DBF
13      1    15      A 01-7月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_15.DBF


RMAN> backup archivelog all delete input;

啟動 backup 於 17-7月 -07
當前日誌已存檔
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在啟動存檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集中的存檔日誌
輸入存檔日誌執行緒 =1 序列 =4 記錄 ID=2 時間戳=626216473
輸入存檔日誌執行緒 =1 序列 =6 記錄 ID=4 時間戳=626338189
輸入存檔日誌執行緒 =1 序列 =7 記錄 ID=5 時間戳=626358460
輸入存檔日誌執行緒 =1 序列 =8 記錄 ID=6 時間戳=626367548
輸入存檔日誌執行緒 =1 序列 =9 記錄 ID=7 時間戳=626424815
輸入存檔日誌執行緒 =1 序列 =10 記錄 ID=8 時間戳=626440874
輸入存檔日誌執行緒 =1 序列 =11 記錄 ID=9 時間戳=626483071
輸入存檔日誌執行緒 =1 序列 =12 記錄 ID=10 時間戳=626552999
輸入存檔日誌執行緒 =1 序列 =13 記錄 ID=11 時間戳=626657288
輸入存檔日誌執行緒 =1 序列 =14 記錄 ID=12 時間戳=626785441
輸入存檔日誌執行緒 =1 序列 =15 記錄 ID=13 時間戳=628128164
輸入存檔日誌執行緒 =1 序列 =16 記錄 ID=14 時間戳=628129521
通道 ORA_DISK_1: 正在啟動段 1 於 17-7月 -07
通道 ORA_DISK_1: 已完成段 1 於 17-7月 -07
段 handle=F:\ORACLE\ORA92\DATABASE\01IN0VNI_1_1 comment=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:02
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_4.DBF 記錄 ID=2 時間戳 =6262164
73
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_6.DBF 記錄 ID=4 時間戳 =6263381
89
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_7.DBF 記錄 ID=5 時間戳 =6263584
60
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_8.DBF 記錄 ID=6 時間戳 =6263675
48
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_9.DBF 記錄 ID=7 時間戳 =6264248
15
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_10.DBF 記錄 ID=8 時間戳 =626440
874
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_11.DBF 記錄 ID=9 時間戳 =626483
071
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_12.DBF 記錄 ID=10 時間戳 =62655
2999
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_13.DBF 記錄 ID=11 時間戳 =62665
7288
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_14.DBF 記錄 ID=12 時間戳 =62678
5441
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_15.DBF 記錄 ID=13 時間戳 =62812
8164
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_16.DBF 記錄 ID=14 時間戳 =62812
9521
完成 backup 於 17-7月 -07

RMAN> delete copy of archivelog sequence 5;

釋放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=18 devtype=DISK

已存檔的日誌副本列表
關鍵字     Thrd Seq     S 短時間     名稱
------- ---- ------- - ---------- ----
3       1    5       X 25-6月 -07 F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_5.DBF

是否確定要刪除以上物件 (輸入 YES 或 NO)? y
已刪除的存檔日誌
存檔日誌檔名 =F:\ORACLE\ORADATA\MYDB\ARCHIVE\1_5.DBF 記錄 ID=3 時間戳 =6262915
00
1 物件已刪除

---------------------------------分割線---------------------------------------
補充:rman裡面的list copy of archivelog all;j就是查詢select name,sequence#,archived,deleted,status from v$archived_log;

如果以後因為空間不夠等原因不要手動刪除archivelog,可以直接用rman的delete copy of archivelog from sequence XXXX until squence XXX刪除archivelog及時釋放空間,你可以在crontab裡面寫一角本檢測空間,用v$archived_log自動生成上面的命令,刪除archivelog及時釋放空間。然後及時作全備.

總結:其實這個實驗很好,但是步驟太繁雜了,只需要先crosscheck ,然後直接delete  expired  最好

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9390331/viewspace-691817/,如需轉載,請註明出處,否則將追究法律責任。

相關文章