我們知道在Oracle 10g R2以前的版本中,如果使用RMAN恢複資料庫,暫存資料表空間的臨時檔案是不會自動回復的。
這曾經引發了一系列的麻煩,很多DBA在恢複完成之後忘記添加臨時檔案,經常到應用出錯時才能發現。
從Oracle 10g R2開始,使用RMAN恢複資料庫之後,Oracle會自動重新建立臨時檔案,由於臨時檔案是Sparse File,所以建立會非常迅速,通常你不會感覺得到。
以下是我曾經恢複的一段日誌,其中記錄了Oracle的恢複處理過程:
Thu Sep 14 22:52:06 2006
Successfully onlined Undo Tablespace 1.
Dictionary check beginning
Thu Sep 14 22:52:06 2006
Errors in file /opt/oracle/admin/order/bdump/order_dbw0_31025.trc:
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '/data1/oradata/ORDER/datafile/o1_mf_temp_28spyr8h_.tmp'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
Thu Sep 14 22:52:06 2006
Errors in file /opt/oracle/admin/order/bdump/order_dbw0_31025.trc:
ORA-01186: file 201 failed verification tests
ORA-01157: cannot identify/lock data file 201 - see DBWR trace file
ORA-01110: data file 201: '/data1/oradata/ORDER/datafile/o1_mf_temp_28spyr8h_.tmp'
Thu Sep 14 22:52:06 2006
File 201 not verified due to error ORA-01157
Thu Sep 14 22:52:06 2006
Dictionary check complete
Thu Sep 14 22:52:06 2006
SMON: enabling tx recovery
Thu Sep 14 22:52:06 2006
Re-creating tempfile /data1/oradata/ORDER/datafile/o1_mf_temp_28spyr8h_.tmp as
/data1/oradata/ORDER/datafile/o1_mf_temp_2jlv4p90_.tmp
Database Characterset is ZHS16GBK
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
QMNC started with pid=22, OS id=13671
Thu Sep 14 22:52:10 2006
LOGSTDBY: Validating controlfile with logical metadata
Thu Sep 14 22:52:10 2006
LOGSTDBY: Validation complete
Starting control autobackup
Control autobackup written to DISK device
handle '/opt/oracle/product/db10g/dbs/c-1341966532-20060914-03'
Completed: alter database open resetlogs
這也是Oracle10gR2的一個細緻改進。