oracle實驗記錄 (恢復-關於控制檔案(1))
實驗記錄與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 中
指定日誌: {
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 中
指定日誌: {
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 中
指定日誌: {
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle實驗記錄 (恢復-關於控制檔案(2))Oracle
- oracle實驗記錄 (恢復-關於控制檔案(3))Oracle
- oracle實驗記錄 (恢復-關於控制檔案(4))Oracle
- oracle實驗記錄 (恢復-rman基於控制檔案的恢復)Oracle
- oracle實驗記錄 (恢復-關於熱備份)Oracle
- oracle實驗記錄 (恢復-恢復未備份的資料檔案)Oracle
- oracle實驗記錄 (恢復-完全恢復)Oracle
- oracle實驗記錄 (恢復-rman恢復)Oracle
- oracle實驗記錄 (恢復-rman維護(1))Oracle
- oracle實驗記錄 (恢復-redo)Oracle
- oracle實驗記錄 (恢復-rman reset incatnation(1))Oracle
- oracle實驗記錄 (恢復read only tablespace(1))Oracle
- oracle實驗記錄 (恢復-不完全恢復)Oracle
- 備份恢復實驗(1)丟失部分控制檔案
- oracle實驗記錄(恢復-checkpoint cnt)Oracle
- oracle實驗記錄 (可恢復session)OracleSession
- oracle實驗記錄 (恢復,備份-含壞塊資料檔案)Oracle
- oracle實驗記錄(恢復-丟失未備份資料檔案)Oracle
- 與控制檔案有關的恢復1
- oracle實驗記錄 (恢復-表空間基於時間點恢復(rman))Oracle
- oracle實驗記錄 (恢復-rman catalog)Oracle
- oracle實驗記錄 (恢復-rman保留策略)Oracle
- oracle實驗記錄 (恢復-表空間基於時間點恢復(手動))Oracle
- oracle實驗記錄 (恢復-rman維護(2))Oracle
- oracle實驗記錄 (恢復-rman增量備份)Oracle
- Oracle檔案改名實驗記錄Oracle
- 【備份恢復】利用 備份控制檔案到指定目錄下的控制檔案 恢復控制檔案
- oracle實驗記錄 (恢復-使用resetlogs open前備份恢復)Oracle
- oracle實驗記錄 (恢復read only tablespace(2))Oracle
- oracle實驗記錄 (恢復-rman操作delete(all) input )Oracledelete
- 與控制檔案有關的恢復
- RMAN恢復案例:無恢復目錄,丟失全部資料檔案、控制檔案、日誌檔案恢復
- oracle 關於--控制檔案Oracle
- 控制檔案恢復—從trace檔案中恢復
- oracle實驗記錄 (關於表實際大小)Oracle
- oracle實驗記錄 (恢復-rman操作(設定&備份))Oracle
- RMAN 恢復之控制檔案篇(1/5)
- Oracle備份與恢復【丟失控制檔案的恢復】Oracle