首先,正常的實驗會出現備份非歸檔模式數據庫的錯誤(ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode),但是這裏卻出現了RMAN-06169錯誤
正常實驗會出現下面在linux機子上的錯誤
oracle@gujunpu-HP-ProBook-4410s:~$ export ORACLE_SID=gujunpu
oracle@gujunpu-HP-ProBook-4410s:~$ export NLS_DATE_FORMAT="YYYY/MM/DD HH24:MI"
oracle@gujunpu-HP-ProBook-4410s:~$ rman
Recovery Manager: Release 11.2.0.1.0 - Production on Wed Nov 13 18:01:34 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
RMAN> connect target
connected to target database: GUJUNPU (DBID=2213880084)
RMAN> backup database;
Starting backup at 2013/11/13 18:03
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=125 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 11/13/2013 18:03:49
ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
continuing other job steps, job failed will not be re-run
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 2013/11/13 18:03
channel ORA_DISK_1: finished piece 1 at 2013/11/13 18:03
piece handle=/u01/app/oracle/flash_recovery_area/GUJUNPU/backupset/2013_11_13/o1_mf_ncsnf_TAG20131113T180349_986mn6p8_.bkp tag=TAG20131113T180349 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 11/13/2013 18:03:49
ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
但在一臺windows上的Oracle做實驗時出現下面狀況
E:\程序工作區\JAVA>set ORACL_SID=gujunpu
E:\程序工作區\JAVA>set NLS_DATE_FORMAT=YYYY/MM/DD HH24:MI
E:\程序工作區\JAVA>RMAN
恢復管理器: Release 11.2.0.1.0 - Production on 星期三 11月 13 10:15:30 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved
RMAN> connect target;
已連接到目標數據庫: GUJUNPU (DBID=2206206519, 未打開)
RMAN> alter database open;
使用目標數據庫控制文件替代恢復目錄
數據庫已打開
RMAN> connect target;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-06167: 已經連接
RMAN> backup database;
啓動 backup 於 2013/11/13 10:16
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=67 設備類型=DISK
RMAN-06169: 無法讀取數據文件的文件標頭5錯誤原因4
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: backup 命令 (在 11/13/2013 10:16:43 上) 失敗
RMAN-06056: 無法訪問數據文件5
通過查資料找到發生這種錯誤的原因,我初步斷定的原因是我的某個數據文件offline。你可以去找對應原因的解決辦法
RMAN-06169: could not read file header for datafile 4 error reason 1
The reason code 1 is: 1 - "filename is MISSINGxx in the control file"
...
2 - file is offline
3 - file is not verified
4 - DBWR could not find the file
5 - unable to open file
6 - I/O error during read
7 - file header is corrupt
8 - file is not a datafile
9 - file does not belong to this database
10 - file number is incorrect
12 - wrong file version
15 - control file is not current.
先檢查數據文件狀態
SQL> select file_name,tablespace_name,online_status from dba_data_files;
FILE_NAME TABLESPACE_NAME ONLINE_
---------------------------------------- ------------------------------ -------
G:\APP\ADMINISTRATOR\ORADATA\GUJUNPU\USE USERS ONLINE
RS01.DBF
G:\APP\ADMINISTRATOR\ORADATA\GUJUNPU\UND UNDOTBS1 ONLINE
OTBS01.DBF
G:\APP\ADMINISTRATOR\ORADATA\GUJUNPU\SYS SYSAUX ONLINE
AUX01.DBF
G:\APP\ADMINISTRATOR\ORADATA\GUJUNPU\SYS SYSTEM SYSTEM
TEM01.DBF
FILE_NAME TABLESPACE_NAME ONLINE_
---------------------------------------- ------------------------------ -------
G:\TEST\DADA01.DBF DATA01 RECOVER
切換到online發現根本不存在,其實我在操作系統上刪除了
SQL> alter database gujunpu datafile 'G:\TEST\DADA01.DBF' online;
alter database gujunpu datafile 'G:\TEST\DADA01.DBF' online
*
第 1 行出現錯誤:
ORA-01157: 無法標識/鎖定數據文件 5 - 請參閱 DBWR 跟蹤文件
ORA-01110: 數據文件 5: 'G:\TEST\DADA01.DBF'
不能直接刪除數據文件,只能刪除表空間。這裏有個問題是如果你的表空間見有多個數據文件,並且表空間還有用。我目前知道的一個比較麻煩的方法是:
使要刪除的數據文件脫機
exp導出,full=y
刪除表空間includeing contents
imp導入再聯機
下面直接刪除
SQL> drop tablespace data01 including contents;
表空間已刪除。
SQL> select file_name,tablespace_name,online_status from dba_data_files;
FILE_NAME TABLESPACE_NAME ONLINE_
---------------------------------------- ------------------------------ -------
G:\APP\ADMINISTRATOR\ORADATA\GUJUNPU\USE USERS ONLINE
RS01.DBF
G:\APP\ADMINISTRATOR\ORADATA\GUJUNPU\UND UNDOTBS1 ONLINE
OTBS01.DBF
G:\APP\ADMINISTRATOR\ORADATA\GUJUNPU\SYS SYSAUX ONLINE
AUX01.DBF
G:\APP\ADMINISTRATOR\ORADATA\GUJUNPU\SYS SYSTEM SYSTEM
TEM01.DBF
FILE_NAME TABLESPACE_NAME ONLINE_
---------------------------------------- ------------------------------ -------
結果可以出現正常的備份錯誤
RMAN> backup database
2> ;
啓動 backup 於 2013/11/13 18:20
使用目標數據庫控制文件替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=134 設備類型=DISK
通道 ORA_DISK_1: 正在啓動全部數據文件備份集
通道 ORA_DISK_1: 正在指定備份集內的數據文件
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 11/13/2013 18:20:20 上) 失敗
ORA-19602: 無法按 NOARCHIVELOG 模式備份或複製活動文件
繼續執行其他作業步驟, 將不重新運行失敗的作業
通道 ORA_DISK_1: 正在啓動全部數據文件備份集
通道 ORA_DISK_1: 正在指定備份集內的數據文件
備份集內包括當前控制文件
備份集內包括當前的 SPFILE
通道 ORA_DISK_1: 正在啓動段 1 於 2013/11/13 18:20
通道 ORA_DISK_1: 已完成段 1 於 2013/11/13 18:20
段句柄=G:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\GUJUNPU\BACKUPSET\2013_11_13\O1_MF_NCSNF_TAG20
P 標記=TAG20131113T182019 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:01
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 11/13/2013 18:20:20 上) 失敗
ORA-19602: 無法按 NOARCHIVELOG 模式備份或複製活動文件