oracle實驗記錄 (恢復-rman基於控制檔案的恢復)
當前控制檔案中沒 test tablespace的資訊了~應該用備份控制檔案恢復or重新建立控制檔案
(下面先使用current controlfile)
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:\SYSDATAFILE2.DBF
已選擇6行。
SQL> create tablespace test datafile 'd:\test.dbf' reuse;
表空間已建立。
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
E:\SYSDATAFILE2.DBF
已選擇7行。
RMAN> backup database;
啟動 backup 於 2009-09-14 17:49:16
完成 backup 於 2009-09-14 17:50:17
RMAN> list backup of tablespace 'TEST';
備份集列表
===================
BS 關鍵字 型別 LV 大小 裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ -------------------
90 Full 644.78M DISK 00:00:51 2009-09-14 17:50:07
BP 關鍵字: 150 狀態: AVAILABLE 已壓縮: NO 標記: TAG20090914T174916
段名:E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_14\O1_MF_N
NNDF_TAG20090914T174916_5BW4DXN0_.BKP
備份集 90 中的資料檔案列表
檔案 LV 型別 Ckp SCN Ckp 時間 名稱
---- -- ---- ---------- ------------------- ----
6 Full 1628096 2009-09-14 17:49:17 D:\TEST.DBF
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1628151
SQL> drop tablespace test including contents and datafiles;
表空間已刪除。
RMAN> list backup of tablespace 'TEST';
RMAN-03002: list 命令 (在 09/14/2009 17:52:14 上) 失敗
RMAN-20202: 在恢復目錄中未找到表空間
RMAN-06019: 無法轉換表空間名稱"TEST"~~~~~~~~~~~~~~~~~~~~~~~~~~~~因為使用的controlfile當恢復目錄 所以 沒有TEST TABLESPACE的資訊了
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:\SYSDATAFILE2.DBF
已選擇6行。
RMAN> run{startup force mount;
2> set until scn=1628151;
3> restore database;
4> }
Oracle 例項已啟動
資料庫已裝載
系統全域性區域總計 612368384 位元組
Fixed Size 1250428 位元組
Variable Size 239078276 位元組
Database Buffers 364904448 位元組
Redo Buffers 7135232 位元組
正在執行命令: SET until clause
啟動 restore 於 2009-09-14 17:56:10
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=158 devtype=DISK
通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
正將資料檔案00002恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
正將資料檔案00003恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
正將資料檔案00004恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
正將資料檔案00005恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
正將資料檔案00009恢復到E:\SYSDATAFILE2.DBF
通道 ORA_DISK_1: 正在讀取備份段 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\B
ACKUPSET\2009_09_14\O1_MF_NNNDF_TAG20090914T174916_5BW4DXN0_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_14\O1_
MF_NNNDF_TAG20090914T174916_5BW4DXN0_.BKP 標記 = TAG20090914T174916
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:55
完成 restore 於 2009-09-14 17:57:10
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:\SYSDATAFILE2.DBF
已選擇6行。
RMAN> run{set until scn=1628151;
2> recover database;
3> }
正在執行命令: SET until clause
啟動 recover 於 2009-09-14 17:59:41
使用通道 ORA_DISK_1
正在開始介質的恢復
介質恢復完成, 用時: 00:00:09
完成 recover 於 2009-09-14 17:59:58
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:\SYSDATAFILE2.DBF
已選擇6行。
RMAN> alter database open resetlogs;
資料庫已開啟
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\MISSING00006~~~~~~~~~~~~~~~~~~~~~~~~~~~
E:\SYSDATAFILE2.DBF
已選擇7行。
SQL> col tablespace_name format a10
SQL> col file_name format a50
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- --------------------------------------------------
TEST E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING0000~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6
EXAMPLE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DB
F
USERS E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
SYSAUX E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DB
F
TABLESPACE FILE_NAME
---------- --------------------------------------------------
SYSTEM E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
SYSTEM E:\SYSDATAFILE2.DBF
已選擇7行。
SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING0000
6' to 'd:\test.dbf';
alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING00006' to
'd:\test.dbf'
*
第 1 行出現錯誤:
ORA-01511: 重新命名日誌/資料檔案時出錯
ORA-01141: 重新命名資料檔案 6 時出錯 - 未找到新檔案 'd:\test.dbf'
ORA-01111: 資料檔案 6 名稱未知 - 請重新命名以更正檔案
ORA-01110: 資料檔案 6: 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING00006'
ORA-27041: 無法開啟檔案
OSD-04002: 無法開啟檔案
O/S-Error: (OS 2) 系統找不到指定的檔案。
已經無法恢復
看alert.log中記載
Dictionary check beginning
Tablespace 'TEST' #7 found in data dictionary,~~~~~~~~~~~~~~~~~~~~~~~~~
but not in the controlfile. Adding to controlfile.
File #6 found in data dictionary but not in controlfile.~~~~~~~~~~~~~~~~~~~~~~~~~~~
Creating OFFLINE file 'MISSING00006' in the controlfile.
This file can no longer be recovered so it must be dropped.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~必須drop了
Dictionary check complete
~~~~~~~~~~~~~~~~~~手動實驗下
SQL> create tablespace test datafile 'd:\test.dbf' size 10m;
表空間已建立。
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- --------------------------------------------------
EXAMPLE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DB
F
USERS E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
SYSAUX E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DB
F
SYSTEM E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
TEST D:\TEST.DBF
SYSTEM E:\SYSDATAFILE2.DBF
已選擇7行。
SQL> select name from v$datafile;
NAME
------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\USERS01.DBF
NAME
------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF
E:\SYSDATAFILE2.DBF
已選擇7行。
SQL> alter database begin backup;
資料庫已更改。
SQL> @d:\backup\backupscript.txt
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> alter database end backup;
資料庫已更改。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1653723
SQL> drop tablespace test including contents and datafiles;
表空間已刪除。
SQL> startup force mount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 255855492 bytes
Database Buffers 348127232 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
SQL> @d:\restore\restoredbf.txt
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
已複製 1 個檔案。
SQL> recover database until change 1653723;
完成介質恢復。
SQL>
SQL> select name from v$datafile;
NAME
------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\USERS01.DBF
NAME
------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\EXAMPLE01.DBF
E:\SYSDATAFILE2.DBF
已選擇6行。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- --------------------------------------------------
EXAMPLE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DB
F
USERS E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
SYSAUX E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DB
F
SYSTEM E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
TEST E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING0000******************
6
TABLESPACE FILE_NAME
---------- --------------------------------------------------
SYSTEM E:\SYSDATAFILE2.DBF
已選擇7行。
SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\MISSING0000
6' to 'd:\test.dbf';
資料庫已更改。
SQL> create table t1 (a int) tablespace test;
create table t1 (a int) tablespace test
*
第 1 行出現錯誤:
ORA-01658: 無法為表空間 TEST 中的段建立 INITIAL 區
SQL> alter database datafile 6 online;
alter database datafile 6 online
*
第 1 行出現錯誤:
ORA-01190: 控制檔案或資料檔案 6 來自最後一個 RESETLOGS 之前
ORA-01110: 資料檔案 6: 'D:\TEST.DBF'
可以看到從備份用指令碼restore回來後~~沒有執行恢復還是備份時候的檔案
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~通過一遍手動的實驗 可以看到因為controlfile中沒有test.dbf的資訊了~~所以應用redo時候表空間雖然恢復了,但資料檔案沒恢復
下面用備份controlfile恢復 (RMAN)
SQL> create tablespace test datafile 'd:\test.dbf' size 10m;
表空間已建立。
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- --------------------------------------------------
TEST D:\TEST.DBF
EXAMPLE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DB
F
USERS E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
SYSAUX E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DB
F
SYSTEM E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
SYSTEM E:\SYSDATAFILE2.DBF
已選擇7行。
SQL> select name from v$datafile;
NAME
------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\SYSTEM01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\UNDOTBS01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\SYSAUX01.DBF
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\USERS01.DBF
NAME
------------------------------
E:\ORACLE\PRODUCT\10.2.0\ORADA
TA\ORCL\EXAMPLE01.DBF
D:\TEST.DBF
E:\SYSDATAFILE2.DBF
已選擇7行。
RMAN> backup database;
完成 backup 於 15-9月 -09
RMAN> list backup of controlfile;
備份集列表
===================
BS 關鍵字 型別 LV 大小 裝置型別 經過時間 完成時間
------- ---- -- ---------- ----------- ------------ ----------
95 Full 7.17M DISK 00:00:03 15-9月 -09
BP 關鍵字: 155 狀態: AVAILABLE 已壓縮: NO 標記: TAG20090915T111041
段名:E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_15\O1_MF_N
CSNF_TAG20090915T111041_5BY1HCDP_.BKP
包括的控制檔案: Ckp SCN: 1656570 Ckp 時間: 15-9月 -09
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1656664
SQL> drop tablespace test including contents and datafiles;
RMAN> run{startup force mount;
2> set until scn=1656664;~~~~設定恢復到哪
3> restore controlfile from 'E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACK~~~~~~~~~~~~~~~~~~~~~restore備份的控制檔案
UPSET\2009_09_15\O1_MF_NCSNF_TAG20090915T111041_5BY1HCDP_.BKP';
4> restore database;
5> recover database;
6> alter database open resetlogs;}
Oracle 例項已啟動
系統全域性區域總計 612368384 位元組
Fixed Size 1250428 位元組
Variable Size 239078276 位元組
Database Buffers 364904448 位元組
Redo Buffers 7135232 位元組
啟動 restore 於 15-9月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=158 devtype=DISK
通道 ORA_DISK_1: 正在復原控制檔案
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:05
輸出檔名=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
輸出檔名=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
輸出檔名=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
完成 restore 於 15-9月 -09
資料庫已裝載
釋放的通道: ORA_DISK_1
正在執行命令: SET until clause
啟動 restore 於 15-9月 -09
啟動 implicit crosscheck backup 於 15-9月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=158 devtype=DISK
已交叉檢驗的 1 物件
完成 implicit crosscheck backup 於 15-9月 -09
啟動 implicit crosscheck copy 於 15-9月 -09
使用通道 ORA_DISK_1
已交叉檢驗的 15 物件
完成 implicit crosscheck copy 於 15-9月 -09
搜尋恢復區域中的所有檔案
正在編制檔案目錄...
目錄編制完畢
已列入目錄的檔案的列表
=======================
檔名: E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_15\O1_M
F_NCSNF_TAG20090915T111041_5BY1HCDP_.BKP
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
正將資料檔案00002恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
正將資料檔案00003恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
正將資料檔案00004恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
正將資料檔案00005恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
正將資料檔案00006恢復到D:\TEST.DBF~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~RESTORE回來了
正將資料檔案00009恢復到E:\SYSDATAFILE2.DBF
通道 ORA_DISK_1: 正在讀取備份段 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\B
ACKUPSET\2009_09_15\O1_MF_NNNDF_TAG20090915T111041_5BY1FLM1_.BKP
通道 ORA_DISK_1: 已恢復備份段 1
段控制程式碼 = E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_15\O1_
MF_NNNDF_TAG20090915T111041_5BY1FLM1_.BKP 標記 = TAG20090915T111041
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:55
完成 restore 於 15-9月 -09
啟動 recover 於 15-9月 -09
使用通道 ORA_DISK_1
正在開始介質的恢復
存檔日誌執行緒 1 序列 1 已作為檔案 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
存在於磁碟上
存檔日誌檔名 =E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG 執行緒 =1 序列 =1
介質恢復完成, 用時: 00:00:03
完成 recover 於 15-9月 -09
資料庫已開啟
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
E:\SYSDATAFILE2.DBF
已選擇7行。
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\ORADATA\ORCL\EXAMPLE01.DBF
USERS
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
SYSAUX
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
SYSTEM
E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
SYSTEM
E:\SYSDATAFILE2.DBF
已選擇7行。
SQL> create table t1 (a int) tablespace test;
表已建立。
SQL> insert into t1 values(1);~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~已經恢復ok
已建立 1 行。
問題2 如果只有rman備份時候且沒有備份控制檔案,如何恢復~~~restoRE時候不會轉儲回 TEST.DBF
SQL> create tablespace test datafile 'd:\test.dbf' reuse;
表空間已建立。
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- --------------------------------------------------
TEST D:\TEST.DBF
EXAMPLE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DB
F
USERS E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
SYSAUX E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
UNDOTBS1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DB
F
SYSTEM E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
SYSTEM E:\SYSDATAFILE2.DBF
已選擇7行。
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
E:\SYSDATAFILE2.DBF
已選擇7行。
RMAN> backup database;
完成 backup 於 15-9月 -09
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1657559
SQL> drop tablespace test including contents and datafiles;
表空間已刪除。
RMAN> run{startup force mount;
2> set until scn=1657559;
3> restore database;}
RMAN> run{startup force mount;
2> set until scn=1657559;
3> restore database;}
Oracle 例項已啟動
資料庫已裝載
系統全域性區域總計 612368384 位元組
Fixed Size 1250428 位元組
Variable Size 243272580 位元組
Database Buffers 360710144 位元組
Redo Buffers 7135232 位元組
正在執行命令: SET until clause
啟動 restore 於 15-9月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK
通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
正將資料檔案00002恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
正將資料檔案00003恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
正將資料檔案00004恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF~~~~~~~~~~~~~~~看到沒有restore test.dbf
正將資料檔案00005恢復到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
正將資料檔案00009恢復到E:\SYSDATAFILE2.DBF
通道 ORA_DISK_1: 正在讀取備份段 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\B
ACKUPSET\2009_09_15\O1_MF_NNNDF_TAG20090915T112736_5BY2F9L2_.BKP
通道 ORA_DISK_1: 恢復完成, 用時: 00:00:55
完成 restore 於 15-9月 -09
~~~~~~~~~~~~~~~~手工從buckup set中提取 test.dbf的備份
1 DECLARE
2 devtype varchar2(256);
3 done boolean;
4 BEGIN
5 devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'a');
6 sys.dbms_backup_restore.restoreSetDatafile;
7 sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>06,toname=>'d:\test.dbf')
;
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'E:\ORACLE\PROD
UCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_15\O1_MF_NNNDF_TAG20090915T11
2736_5BY2F9L2_.BKP', params=>null);
9 sys.dbms_backup_restore.deviceDeallocate;
10* END;
SQL> /
PL/SQL 過程已成功完成。
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:\SYSDATAFILE2.DBF
已選擇6行。
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~沒有test tablespace
EXAMPLE
TEMP
已選擇6行。
SQL> alter database backup controlfile to trace;
資料庫已更改。
SQL> startup force nomount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 243272580 bytes
Database Buffers 360710144 bytes
Redo Buffers 7135232 bytes
SQL>
~~~~~~~~~重新建立控制檔案
SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG' SIZE 50M,
9 GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG' SIZE 50M,
10 GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG' SIZE 50M
11 -- STANDBY LOGFILE
12 DATAFILE
13 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
14 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
15 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
16 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
17 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF',
18 'E:\SYSDATAFILE2.DBF',
19 'd:\test.dbf'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~手動加進來
20 CHARACTER SET ZHS16GBK
21 ;
控制檔案已建立。
已選擇6行。
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
EXAMPLE
TEST
已選擇6行。
SQL> recover database until change 1657559;
完成介質恢復。
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
USERS
EXAMPLE
TEST
已選擇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
E:\SYSDATAFILE2.DBF
已選擇7行。
SQL> alter database open resetlogs;
SQL> col tablespace_name format a10
SQL> col file_name format a40
SQL> select tablespace_name,file_name from dba_data_files;
TABLESPACE FILE_NAME
---------- ----------------------------------------
TEST D:\TEST.DBF~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SYSTEM E:\SYSDATAFILE2.DBF
EXAMPLE E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EX
AMPLE01.DBF
USERS E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\US
ERS01.DBF
SYSAUX E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SY
SAUX01.DBF
TABLESPACE FILE_NAME
---------- ----------------------------------------
UNDOTBS1 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UN
DOTBS01.DBF
SYSTEM E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SY
STEM01.DBF
已選擇7行。
SQL>
SQL> create table t1 (a int) tablespace test;
表已建立。
SQL> insert into t1 values(1);
已建立 1 行。
手動恢復的話 用熱備份 restore回去,然後 create controlfile(加入刪除的datafile資訊) 恢復即可
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12020513/viewspace-614667/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle實驗記錄 (恢復-rman恢復)Oracle
- oracle實驗記錄 (恢復-關於控制檔案(1))Oracle
- oracle實驗記錄 (恢復-關於控制檔案(2))Oracle
- oracle實驗記錄 (恢復-關於控制檔案(3))Oracle
- oracle實驗記錄 (恢復-關於控制檔案(4))Oracle
- oracle實驗記錄 (恢復-表空間基於時間點恢復(rman))Oracle
- oracle實驗記錄 (恢復-完全恢復)Oracle
- oracle實驗記錄 (恢復-rman catalog)Oracle
- oracle實驗記錄 (恢復-rman保留策略)Oracle
- rman恢復--丟失控制檔案的恢復
- oracle實驗記錄 (恢復-恢復未備份的資料檔案)Oracle
- RMAN恢復控制檔案
- oracle實驗記錄 (恢復-rman維護(1))Oracle
- oracle實驗記錄 (恢復-rman維護(2))Oracle
- oracle實驗記錄 (恢復-rman增量備份)Oracle
- oracle實驗記錄 (恢復-不完全恢復)Oracle
- RMAN基於備份控制檔案恢復失敗
- 使用rman恢復控制檔案
- RMAN備份恢復之控制檔案的恢復(三)
- RMAN備份恢復之控制檔案的恢復(二)
- RMAN備份恢復之控制檔案的恢復(一)
- RMAN恢復案例:無恢復目錄,丟失全部資料檔案、控制檔案、日誌檔案恢復
- oracle實驗記錄 (恢復-rman reset incatnation(1))Oracle
- oracle實驗記錄 (恢復-rman操作delete(all) input )Oracledelete
- oracle實驗記錄 (恢復-表空間基於時間點恢復(手動))Oracle
- oracle實驗記錄 (恢復-redo)Oracle
- RMAN - "丟失控制檔案的恢復"
- 控制檔案丟失的RMAN恢復
- RMAN恢復 執行重要檔案RMAN恢復
- oracle實驗記錄 (恢復-rman操作(設定&備份))Oracle
- 【管理篇備份恢復】rman恢復測試(二) 控制檔案恢復(三)
- 【管理篇備份恢復】rman恢復測試(二) 控制檔案恢復(二)
- 【管理篇備份恢復】rman恢復測試(二) 控制檔案恢復(一)
- oracle實驗記錄(恢復-checkpoint cnt)Oracle
- oracle實驗記錄 (可恢復session)OracleSession
- oracle實驗記錄 (恢復-關於熱備份)Oracle
- rman恢復控制檔案測試--log
- 【rman 備份與恢復】恢復丟失所有的控制檔案