oracle實驗記錄 (恢復-關於控制檔案(1))

fufuh2o發表於2009-08-24

實驗記錄與controlfile有關的恢復(1)  陸續實驗2,3........

SQL> select * from v$version
  2  ;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SQL> archive log list;
資料庫日誌模式            存檔模式
自動存檔             啟用
存檔終點            USE_DB_RECOVERY_FILE_DEST
最早的聯機日誌序列     1
下一個存檔日誌序列   3
當前日誌序列           3


 backupscript.txt
host copy E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF d:\backup\USERS01.DBF
host copy E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF d:\backup\SYSAUX01.DBF
host copy E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF d:\backup\UNDOTBS01.DBF
host copy E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF d:\backup\SYSTEM01.DBF
host copy E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF d:\backup\EXAMPLE01.DBF


restoredbf.txt
host copy  d:\backup\USERS01.DBF E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
host copy  d:\backup\SYSAUX01.DBF E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
host copy  d:\backup\UNDOTBS01.DBF E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
host copy  d:\backup\SYSTEM01.DBF E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
host copy  d:\backup\EXAMPLE01.DBF E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF

 


backupctl.txt
host copy      E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL  d:\backup\CONTROL01.CTL
host copy       E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL d:\backup\CONTROL02.CTL
 host copy      E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL d:\backup\CONTROL03.CTL

restore.txt
host copy    d:\backup\CONTROL01.CTL  E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
host copy  d:\backup\CONTROL02.CTL     E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
 host copy   d:\backup\CONTROL03.CTL    E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL


開始基礎備份
SQL> alter database begin backup;

資料庫已更改。

SQL> @d:\backupscript.txt
SP2-0310: 無法開啟檔案 "d:\backupscript.txt"
SQL> @d:\backup\backupscript.txt
已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

SQL> alter database end backup;

資料庫已更改。


SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> @d:\backup\backupctl.txt
已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。


情況一 備份controlfile後 ADD TABLESPACE
SQL> startup                 
ORACLE 例程已經啟動。
資料庫裝載完畢。
資料庫已經開啟。
SQL> create tablespace test datafile 'd:\test.dbf' size 20m;

表空間已建立。
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> @d:\restore\restorectl.txt~~~~~~~  還原備份的 控制檔案
已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

 

SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             184552324 bytes
Database Buffers          419430400 bytes
Redo Buffers                7135232 bytes
資料庫裝載完畢。
ORA-01122: 資料庫檔案 1 驗證失敗
ORA-01110: 資料檔案 1: 'E:\ORACLE\PRODUCT\10.2.0

\ORADATA\ORCL\SYSTEM01.DBF'~**********************驗證失敗
ORA-01207: 檔案比控制檔案更新 - 舊的控制檔案

 

SQL> select checkpoint_change# from v$datafile;

CHECKPOINT_CHANGE#
------------------
            580885
            580885~~~~~~~~~~~~~~來自與control
            580885
            580885
            580885

SQL> select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#
------------------
            581427~~~~~~~~~來自於datafile 可以看出 controlfile 與datafile不同步SCN 不一樣
            581427
            581427
            581427
            581427

SQL> alter session set events 'immediate trace name file_hdrs level 10';

會話已更改。

 

SQL> alter session set events 'immediate trace name controlf level 8';

會話已更改。
dump controlf
***************************************************************************
DATA FILE

RECORDS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~controlfile中

關於datafile記錄
***************************************************************************
 (size = 428, compat size = 428, section max = 100, section in-use = 5,
  last-recid= 10, old-recno = 0, last-recno = 0)
 (extent = 1, blkno = 11, numrecs = 100)
DATA FILE #1:
  (name #7) E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1                    
 tablespace 0, index=1 krfil=1 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:55 scn: 0x0000.0008dd15 08/24/2009 10:48:40~~~~~~~~~~CNT 55                

    Control Seq=468=0x1d4,
 Stop scn: 0x0000.0008dd15 08/24/2009 10:48:40
 Creation Checkpointed at scn:  0x0000.00000009 08/30/2005 13:50:22

 

 


dump file header中資訊
~~~~~~~~~~~~~~~~~~
 DATA FILE #1:
  (name #7) E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
creation size=0 block size=8192 status=0xe head=7 tail=7 dup=1
 tablespace 0, index=1 krfil=1 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00~~~~~~~~~~~~~~~~~~~~~~~~~~~這部分來

自contrilfile
 Checkpoint cnt:55 scn: 0x0000.0008dd15 08/24/2009 10:48:40~~~~~~~~CNT 55
 Stop scn: 0x0000.0008dd15 08/24/2009 10:48:40
 Creation Checkpointed at scn:  0x0000.00000009 08/30/2005 13:50:22
 thread:0 rba:(0x0.0.0)
~~~~~~~~~~~~~~~~~~~~~~~~~~

FILE HEADER:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~這部分來自datafile header
 Compatibility Vsn = 169869568=0xa200100
 Db ID=1223510333=0x48ed493d, Db Name='ORCL'
 Activation ID=0=0x0
 Control Seq=478=0x1de, File size=61440=0xf000                      Control

Seq=478=0x1de,
 File Number=1, Blksiz=8192, File Type=3 DATA
Tablespace #0 - SYSTEM  rel_fn:1
Creation   at   scn: 0x0000.00000009 08/30/2005 13:50:22
Backup taken at scn: 0x0000.0008dae5 08/24/2009 10:46:37 thread:1
 reset logs count:0x2977fdbf scn: 0x0000.0008297b reset logs terminal rcv data:0x0 scn:

0x0000.00000000
 prev reset logs count:0x21d66184 scn: 0x0000.00000001 prev reset logs terminal rcv

data:0x0 scn: 0x0000.00000000
 recovered at 08/24/2009 10:13:08
 status:0x2000 root dba:0x00400179 chkpt cnt: 57 ctl cnt:56~~~~~~~~~~~~~~~~~~~~~~~~CNT 57

oracle判斷 chkpt cnt: 57 >  Checkpoint cnt:55 所以 為old controlfile


SQL> recover database using backup controlfile;~~~恢復的時候(由於 新庫 還沒有歸檔所以使用指

定file name)
ORA-00283: 恢復會話因錯誤而取消
ORA-01111: 資料檔案 6 名稱未知 - 請重新命名以更正檔案
ORA-01110: 資料檔案 6: 'E:\ORACLE\PRODUCT\10.2.0\DB_1

\DATABASE\UNNAMED00006'~~~~~~~~~~~~~~~~~~會出現這種問題
ORA-01157: 無法標識/鎖定資料檔案 6 - 請參閱 DBWR 跟蹤檔案
ORA-01111: 資料檔案 6 名稱未知 - 請重新命名以更正檔案
ORA-01110: 資料檔案 6: 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00006'


SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\UNNAMED00006********************因為備份的ctl中沒有

新tablesapce 的資訊 現在應用redo會出現這種錯誤

已選擇6行。
SQL> select name from v$datafile_header;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~來自

datafile 現在沒有TEST.DBF的資訊
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF


已選擇6行。


SQL> select name from v$tablespace;

NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
TEMP
EXAMPLE
TEST~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`有test tablespace

已選擇7行。

SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\DB_1

\DATABASE\UNNAMED0000~~~~~~~~~~~~~~~~rename 就可以(test.dbf與其它datafile是同步的)
6' to 'd:\test.dbf';

資料庫已更改。

SQL> recover database using backup controlfile;
ORA-00279: 更改 581141 (在 08/24/2009 10:51:21 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2009_08_24\O1_MF_1_
3_%U_.ARC
ORA-00280: 更改 581141 (用於執行緒 1) 在序列 #3 中


指定日誌: {=suggested | filename | AUTO | CANCEL}
E:\oracle\product\10.2.0\oradata\orcl\redo02.log
已應用的日誌。
完成介質恢復。
SQL> alter database open resetlogs;

資料庫已更改。

SQL> create table t1 (a int) tablespace test;

表已建立。

SQL> insert into t1 values(1);

已建立 1 行。

SQL> commit;

提交完成。

SQL> select name from v$datafile_header;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF

已選擇6行。

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF

已選擇6行。
SQL> select thread#,group#,sequence# from v$log;

   THREAD#     GROUP#  SEQUENCE#
---------- ---------- ----------~~~~~~~~~~~~resetlogs open後 redo sequence重置為0
         1          1          0
         1          2          1
         1          3          0

情況二

備份controlfile後 ADD TABLESPACE 然後rename到新位置

還是用最早的controlfile備份(使用resetlogs前 備份controlfile )

SQL> insert into t1 values(2);

已建立 1 行。

SQL> insert into t1 values(3);

已建立 1 行。

SQL> commit;

提交完成。

SQL> select * from t1;

         A
----------
         1
         2
         3

SQL> col name format a50
SQL> select thread#,sequence#,name from v$archived_log;

   THREAD#  SEQUENCE# NAME
---------- ---------- --------------------------------------------------
         1          2 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\
                      ARCHIVELOG\2009_08_24\O1_MF_1_2_5942NCVR_.ARC

         1          3 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\
                      ARCHIVELOG\2009_08_24\O1_MF_1_3_5942NGV9_.ARC

         1          1 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\
                      ARCHIVELOG\2009_08_24\O1_MF_1_1_5942NJ1D_.ARC

SQL> select group#,status from v$log
  2  ;

    GROUP# STATUS
---------- ----------------
         1 UNUSED
         2 CURRENT
         3 UNUSED

SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> @d:\restore\restorectl.txt
已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。


SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             188746628 bytes
Database Buffers          415236096 bytes
Redo Buffers                7135232 bytes
資料庫裝載完畢。
ORA-01190: 控制檔案或資料檔案 1 來自最後一個 RESETLOGS 之前~~~~~~~~~~~~~~~~~~~~~~~~~oracle

判斷出 來自resetlog之前
ORA-01110: 資料檔案 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'


SQL> select group#,status from v$log
  2  ;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         3 INACTIVE~~~~~~~~~~~~~~~~~~~~~~可以看到備份控制檔案 與當前logfile資訊 不一樣
         2 CURRENT

SQL> select thread#,group#,sequence# from v$log;

   THREAD#     GROUP#  SEQUENCE#
---------- ---------- ----------
         1          1          2
         1          3          1~~~~~~~~~~~~~~~~~可以看到備份控制檔案 與當前logfile資訊 不

一樣
         1          2          3
SQL> select thread#,sequence#,name from v$archived_log;

未選定行   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~沒有歸檔記錄

 

SQL> recover database using backup controlfile;
ORA-00283: 恢復會話因錯誤而取消
ORA-19909: 資料檔案 1 屬於孤立的原型
ORA-01110: 資料檔案 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'

SQL> alter database backup controlfile to trace;~~~~~~~~~來重建下控制檔案

資料庫已更改。


CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOG ~`noresetlog 將用current

redo log資訊
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'  SIZE 50M,
  GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'  SIZE 50M,
  GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF',
  'D:\TEST.DBF'    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~加上test.dbf資訊    

                                                
CHARACTER SET ZHS16GBK
;

SQL> select thread#,group#,sequence# from v$log;

   THREAD#     GROUP#  SEQUENCE#
---------- ---------- ----------
         1          1          0
         1          3          0
         1          2          1~~~~~~~~~~~~~與redo中一樣

SQL> select group#,status from v$log
  2  ;

    GROUP# STATUS
---------- ----------------
         1 UNUSED
         3 UNUSED
         2 CURRENT

SQL> col name format a50
SQL> select thread#,sequence#,name from v$archived_log;~~~~~~~~~~~沒有archive log的資訊

未選定行


SQL> alter database open;~~~~~~~~~OPEN 就可以

資料庫已更改。

SQL> select thread#,sequence#,name from v$archived_log;

   THREAD#  SEQUENCE# NAME
---------- ---------- --------------------------------------------------
         1          1 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\
                      ARCHIVELOG\2009_08_24\O1_MF_1_1_5946V0DN_.ARC

 


情況三 備份控制後刪除tablespace
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> @d:\backup\backupctl.txt~~~~~~~~~~~~~~`備份下控制檔案
已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

SQL> @d:\backup\backupscript.txt~~~~~~~~~~~~備份tablespacce
已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

startup


SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------
TEST                           D:\TEST.DBF
EXAMPLE                        E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\EXAMPLE01.DBF

USERS                          E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\USERS01.DBF

SYSAUX                         E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\SYSAUX01.DBF

UNDOTBS1                       E:\ORACLE\PRODUCT\10.2.0\ORADA

TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------
                               TA\ORCL\UNDOTBS01.DBF

SYSTEM                         E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\SYSTEM01.DBF


已選擇6行。


SQL>  drop tablespace test including contents and datafiles;

表空間已刪除。
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
SQL> @d:\restore\restorectl.txt
已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

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

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             197135236 bytes
Database Buffers          406847488 bytes
Redo Buffers                7135232 bytes
資料庫裝載完畢。
ORA-01122: 資料庫檔案 1 驗證失敗
ORA-01110: 資料檔案 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'
ORA-01207: 檔案比控制檔案更新 - 舊的控制檔案


SQL> select thread#,sequence#,name from v$archived_log;

   THREAD#  SEQUENCE#
---------- ----------
NAME
--------------------------------------------------------------------------------
         1          1
E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2009_08_24\O1_MF_1_
1_5946V0DN_.ARC

 

SQL> recover database using backup controlfile;
ORA-00283: 恢復會話因錯誤而取消
ORA-01110: 資料檔案 6: 'D:\TEST.DBF'
ORA-01157: 無法標識/鎖定資料檔案 6 - 請參閱 DBWR 跟蹤檔案
ORA-01110: 資料檔案 6: 'D:\TEST.DBF'


看下alert.log
Mon Aug 24 13:11:05 2009
Media Recovery failed with error 1110
ORA-283 signalled during: ALTER DATABASE RECOVER  database using backup controlfile  ...
Mon Aug 24 13:12:04 2009
ALTER DATABASE RECOVER  database 
Mon Aug 24 13:12:04 2009
Media Recovery Start
Mon Aug 24 13:12:04 2009
Errors in file e:\oracle\product\10.2.0\admin\orcl\bdump\orcl_dbw0_102980.trc:
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: 'D:\TEST.DBF'
ORA-27041: unable to open file
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的文

SQL> select name from v$datafile_header;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF


已選擇6行。

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~來自控制檔案備份時候有

TEST.DBF 而刪除表空間時候 實際刪除了test.dbf所以 日誌無法應用

已選擇6行。
SQL> alter database create datafile 'd:\test.dbf';
alter database create datafile 'd:\test.dbf'
*
第 1 行出現錯誤:
ORA-01178: 檔案 6 在最後一個 CREATE CONTROLFILE 之前建立, 無法重新建立~~~~~~~~不允許建立
ORA-01110: 資料檔案 6: 'D:\TEST.DBF'

 

SQL> alter database datafile 6 offline;~~~~~~~~~~將其offline  這樣oracle 不會讀取

資料庫已更改。

SQL> recover database using backup controlfile;
ORA-00279: 更改 585198 (在 08/24/2009 12:47:26 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2009_08_24\O1_MF_1_
2_%U_.ARC
ORA-00280: 更改 585198 (用於執行緒 1) 在序列 #2 中


指定日誌: {=suggested | filename | AUTO | CANCEL}
E:\oracle\product\10.2.0\oradata\orcl\redo01.log~~~~~~~~~~~~~~~~~~~~~~應用日誌 指定的(這個

日誌中 有drop tablespace的記錄(DDL修改資料字典還是會被記錄))
已應用的日誌。
完成介質恢復。
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF

SQL> select name from v$datafile_header;

NAME
--------------------------------------------------------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF~~~~~~~~~~~~~~~~~~~~~~~~~~控制檔案中已經

沒有 資料檔案的資訊

SQL> alter database open resetlogs;

資料庫已更改。

SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
EXAMPLE

已選擇6行。

 

如果drop tablespace時候 未帶including contents and datafileS 就簡單多了
SQL> create tablespace test datafile 'd:\test.dbf' size 10m;

SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------
EXAMPLE                        E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\EXAMPLE01.DBF

USERS                          E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\USERS01.DBF

SYSAUX                         E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\SYSAUX01.DBF

UNDOTBS1                       E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\UNDOTBS01.DBF

TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------

SYSTEM                         E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\SYSTEM01.DBF

TEST                           D:\TEST.DBF

已選擇6行。
SQL> shutdown immediate;


SQL> @d:\backup\backupctl.txt
已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             201329540 bytes
Database Buffers          402653184 bytes
Redo Buffers                7135232 bytes
資料庫裝載完畢。
資料庫已經開啟。


SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 CURRENT
         2 UNUSED
         3 UNUSED

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
     587928
SQL> select thread#,sequence#,name,first_change# from v$archived_log;

   THREAD#  SEQUENCE# NAME                           FIRST_CHANGE#
---------- ---------- ------------------------------ -------------
         1          1 E:\ORACLE\PRODUCT\10.2.0\FLASH        581428
                      _RECOVERY_AREA\ORCL\ARCHIVELOG
                      \2009_08_24\O1_MF_1_1_5946V0DN
                      _.ARC

         1          1 E:\ORACLE\PRODUCT\10.2.0\FLASH        534907
                      _RECOVERY_AREA\ORCL\ARCHIVELOG
                      \2009_08_24\O1_MF_1_1_5942NJ1D
                      _.ARC

         1          2 E:\ORACLE\PRODUCT\10.2.0\FLASH        567754

   THREAD#  SEQUENCE# NAME                           FIRST_CHANGE#
---------- ---------- ------------------------------ -------------
                      _RECOVERY_AREA\ORCL\ARCHIVELOG
                      \2009_08_24\O1_MF_1_2_5942NCVR
                      _.ARC

         1          3 E:\ORACLE\PRODUCT\10.2.0\FLASH        573647
                      _RECOVERY_AREA\ORCL\ARCHIVELOG
                      \2009_08_24\O1_MF_1_3_5942NGV9
                      _.ARC

         1          2 E:\ORACLE\PRODUCT\10.2.0\FLASH        583431
                      _RECOVERY_AREA\ORCL\ARCHIVELOG

   THREAD#  SEQUENCE# NAME                           FIRST_CHANGE#
---------- ---------- ------------------------------ -------------
                      \2009_08_24\O1_MF_1_2_5949GZST
                      _.ARC

         1          1 E:\ORACLE\PRODUCT\10.2.0\FLASH        581428
                      _RECOVERY_AREA\ORCL\ARCHIVELOG
                      \2009_08_24\O1_MF_1_1_5949H0JK
                      _.ARC


已選擇6行。
SQL> drop tablespace test including contents;

表空間已刪除。

SQL> @d:\restore\restorectl.txt
已複製         1 個檔案。

已複製         1 個檔案。

已複製         1 個檔案。

SQL> startup
ORACLE 例程已經啟動。

Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             205523844 bytes
Database Buffers          398458880 bytes
Redo Buffers                7135232 bytes
資料庫裝載完畢。
ORA-01122: 資料庫檔案 1 驗證失敗
ORA-01110: 資料檔案 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'
ORA-01207: 檔案比控制檔案更新 - 舊的控制檔案

SQL> recover database using backup controlfile;
ORA-00279: 更改 587693 (在 08/24/2009 13:32:15 生成) 對於執行緒 1 是必需的
ORA-00289: 建議:
E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2009_08_24\O1_MF_1_
1_%U_.ARC
ORA-00280: 更改 587693 (用於執行緒 1) 在序列 #1 中


指定日誌: {=suggested | filename | AUTO | CANCEL}
E:\oracle\product\10.2.0\oradata\orcl\redo01.log
已應用的日誌。
完成介質恢復。

SQL> alter database open resetlogs;

資料庫已更改。

SQL> select tablespace_name,file_name from dba_data_files;

TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------
EXAMPLE                        E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\EXAMPLE01.DBF

USERS                          E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\USERS01.DBF

SYSAUX                         E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\SYSAUX01.DBF

UNDOTBS1                       E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\UNDOTBS01.DBF

TABLESPACE_NAME                FILE_NAME
------------------------------ ------------------------------

SYSTEM                         E:\ORACLE\PRODUCT\10.2.0\ORADA
                               TA\ORCL\SYSTEM01.DBF

 

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

相關文章