rman不使用恢復目錄恢復資料庫示例及問題

husthxd發表於2004-09-23

rman不使用恢復目錄恢復資料庫示例


本文可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本宣告

http://blog.itpub.net/post/11/2363

1. 用rman不使用恢復目錄備份資料庫

恢復管理器: 版本9.0.1.1.1 - Production

(c) Copyright 2001 Oracle Corporation. All rights reserved.

連線到目標資料庫: SIMIS (DBID=1304821840)
正在使用目標資料庫控制檔案替代恢復目錄

RMAN>

RMAN>backup database plus archivelog delete all input;


啟動 backup 於 23-9月 -04
當前日誌已存檔
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=11 devtype=DISK
通道 ORA_DISK_1: 正在啟動存檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集中的存檔日誌
輸入存檔日誌執行緒 =1 序列 =849 記錄 ID=3 時間戳=537615953
通道 ORA_DISK_1: 正在啟動段 1 於 23-9月 -04
通道 ORA_DISK_1: 已完成段 1 於 23-9月 -04
段 handle=E:RMANSIMIS_03G0MNII_1_1.BAK comment=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:02
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =F:ARCHIVESIMISARC_849_1.ARC 記錄 ID=3 時間戳 =537615953
完成 backup 於 23-9月 -04

啟動 backup 於 23-9月 -04
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在啟動 full 資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集中的資料檔案
輸入資料檔案 fno=00002 name=D:ORACLEORADATASIMISUNDOTBS01.DBF
輸入資料檔案 fno=00032 name=F:ORACLEORADATASIMISGRYSZM_LOCAL_INDEX.ORA
輸入資料檔案 fno=00009 name=D:ORACLEORA90DATABASESIDB.ORA
輸入資料檔案 fno=00033 name=F:ORACLEORADATASIMISGRYSZM_GLOBAL_INDEX.ORA
輸入資料檔案 fno=00014 name=D:ORACLEORA90DATABASESIDB_INDEX.ORA
輸入資料檔案 fno=00001 name=D:ORACLEORADATASIMISSYSTEM01.DBF
輸入資料檔案 fno=00022 name=F:ORACLEORADATASIMISGRYSZM1999.ORA
輸入資料檔案 fno=00021 name=F:ORACLEORADATASIMISGRYSZM1998.ORA
輸入資料檔案 fno=00018 name=F:ORACLEORADATASIMISGRYSZM1995.ORA
輸入資料檔案 fno=00020 name=F:ORACLEORADATASIMISGRYSZM1997.ORA
輸入資料檔案 fno=00019 name=F:ORACLEORADATASIMISGRYSZM1996.ORA
輸入資料檔案 fno=00017 name=F:ORACLEORADATASIMISGRYSZM1994.ORA
輸入資料檔案 fno=00005 name=D:ORACLEORADATASIMISEXAMPLE01.DBF
輸入資料檔案 fno=00011 name=D:ORACLEORA90DATABASEZS.ORA
輸入資料檔案 fno=00015 name=D:ORACLEORA90DATABASEPHOTO.ORA
輸入資料檔案 fno=00023 name=F:ORACLEORADATASIMISGRYSZM2000.ORA
輸入資料檔案 fno=00024 name=F:ORACLEORADATASIMISGRYSZM2001.ORA
輸入資料檔案 fno=00025 name=F:ORACLEORADATASIMISGRYSZM2002.ORA
輸入資料檔案 fno=00026 name=F:ORACLEORADATASIMISGRYSZM2003.ORA
輸入資料檔案 fno=00027 name=F:ORACLEORADATASIMISGRYSZM2004.ORA
輸入資料檔案 fno=00028 name=F:ORACLEORADATASIMISGRYSZM2005.ORA
輸入資料檔案 fno=00029 name=F:ORACLEORADATASIMISGRYSZM2006.ORA
輸入資料檔案 fno=00030 name=F:ORACLEORADATASIMISGRYSZM2007.ORA
輸入資料檔案 fno=00031 name=F:ORACLEORADATASIMISGRYSZM2008.ORA
輸入資料檔案 fno=00012 name=D:ORACLEORA90DATABASEFF.ORA
輸入資料檔案 fno=00010 name=D:ORACLEORA90DATABASEYB.ORA
輸入資料檔案 fno=00016 name=D:ORACLEORA90DATABASEHIS.ORA
輸入資料檔案 fno=00006 name=D:ORACLEORADATASIMISINDX01.DBF
輸入資料檔案 fno=00008 name=D:ORACLEORADATASIMISUSERS01.DBF
輸入資料檔案 fno=00013 name=D:ORACLEORA90DATABASEBM.ORA
輸入資料檔案 fno=00003 name=D:ORACLEORADATASIMISCWMLITE01.DBF
輸入資料檔案 fno=00004 name=D:ORACLEORADATASIMISDRSYS01.DBF
輸入資料檔案 fno=00007 name=D:ORACLEORADATASIMISTOOLS01.DBF
通道 ORA_DISK_1: 正在啟動段 1 於 23-9月 -04
通道 ORA_DISK_1: 已完成段 1 於 23-9月 -04
段 handle=E:RMANSIMIS_04G0MNIM_1_1.BAK comment=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:19:36
完成 backup 於 23-9月 -04

啟動 backup 於 23-9月 -04
當前日誌已存檔
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在啟動存檔日誌備份集
通道 ORA_DISK_1: 正在指定備份集中的存檔日誌
輸入存檔日誌執行緒 =1 序列 =850 記錄 ID=4 時間戳=537617135
通道 ORA_DISK_1: 正在啟動段 1 於 23-9月 -04
通道 ORA_DISK_1: 已完成段 1 於 23-9月 -04
段 handle=E:RMANSIMIS_05G0MONF_1_1.BAK comment=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:02
通道 ORA_DISK_1: 正在刪除存檔日誌
存檔日誌檔名 =F:ARCHIVESIMISARC_850_1.ARC 記錄 ID=4 時間戳 =537617135
完成 backup 於 23-9月 -04

啟動 Control File Autobackup 於 23-9月 -04
段 handle=D:ORACLEORA90DATABASEC-1304821840-20040923-00 comment=NONE
完成 Control File Autobackup 於 23-9月 –04


2. 建立測試資料

10:06:35 SQL> create table test (c1 number) tablespace photo;

表已建立。

已用時間: 00: 00: 00.06
10:06:37 SQL> insert into test values(1);

已建立 1 行。

已用時間: 00: 00: 00.00
10:06:49 SQL> commit;

提交完成。

已用時間: 00: 00: 00.00
10:06:51 SQL> alter system switch logfile;

系統已更改。

已用時間: 00: 00: 00.02
10:06:57 SQL> /

系統已更改。

已用時間: 00: 00: 04.05
10:07:02 SQL> /

系統已更改。

已用時間: 00: 00: 00.03
10:07:02 SQL>
10:08:27 SQL>
10:08:27 SQL> drop tablespace photo including contents and datafiles;

表空間已丟棄。

已用時間: 00: 00: 02.02
10:08:48 SQL>
10:08:51 SQL>

3. 執行不完全恢復
在該例中,如果不從控制檔案自動備份中恢復控制檔案執行恢復指令碼的話,不會恢復photo表空間:

連線到目標資料庫: SIMIS (DBID=1304821840)
正在使用目標資料庫控制檔案替代恢復目錄

RMAN>RUN
2> {
3> SET UNTIL TIME "to_date('20040923 10:07:00','yyyymmdd hh24:mi:ss')";
4> RESTORE DATABASE;
5> RECOVER DATABASE;
6> }

正在執行命令: SET until clause

啟動 restore 於 23-9月 -04

分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=11 devtype=DISK
通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到D:ORACLEORADATASIMISSYSTEM01.DBF
正將資料檔案00002恢復到D:ORACLEORADATASIMISUNDOTBS01.DBF
正將資料檔案00003恢復到D:ORACLEORADATASIMISCWMLITE01.DBF
正將資料檔案00004恢復到D:ORACLEORADATASIMISDRSYS01.DBF
正將資料檔案00005恢復到D:ORACLEORADATASIMISEXAMPLE01.DBF
正將資料檔案00006恢復到D:ORACLEORADATASIMISINDX01.DBF
正將資料檔案00007恢復到D:ORACLEORADATASIMISTOOLS01.DBF
正將資料檔案00008恢復到D:ORACLEORADATASIMISUSERS01.DBF
正將資料檔案00009恢復到D:ORACLEORA90DATABASESIDB.ORA
正將資料檔案00010恢復到D:ORACLEORA90DATABASEYB.ORA
正將資料檔案00011恢復到D:ORACLEORA90DATABASEZS.ORA
正將資料檔案00012恢復到D:ORACLEORA90DATABASEFF.ORA
正將資料檔案00013恢復到D:ORACLEORA90DATABASEBM.ORA
正將資料檔案00014恢復到D:ORACLEORA90DATABASESIDB_INDEX.ORA
正將資料檔案00016恢復到D:ORACLEORA90DATABASEHIS.ORA
正將資料檔案00017恢復到F:ORACLEORADATASIMISGRYSZM1994.ORA
正將資料檔案00018恢復到F:ORACLEORADATASIMISGRYSZM1995.ORA
正將資料檔案00019恢復到F:ORACLEORADATASIMISGRYSZM1996.ORA
正將資料檔案00020恢復到F:ORACLEORADATASIMISGRYSZM1997.ORA
正將資料檔案00021恢復到F:ORACLEORADATASIMISGRYSZM1998.ORA
正將資料檔案00022恢復到F:ORACLEORADATASIMISGRYSZM1999.ORA
正將資料檔案00023恢復到F:ORACLEORADATASIMISGRYSZM2000.ORA
正將資料檔案00024恢復到F:ORACLEORADATASIMISGRYSZM2001.ORA
正將資料檔案00025恢復到F:ORACLEORADATASIMISGRYSZM2002.ORA
正將資料檔案00026恢復到F:ORACLEORADATASIMISGRYSZM2003.ORA
正將資料檔案00027恢復到F:ORACLEORADATASIMISGRYSZM2004.ORA
正將資料檔案00028恢復到F:ORACLEORADATASIMISGRYSZM2005.ORA
正將資料檔案00029恢復到F:ORACLEORADATASIMISGRYSZM2006.ORA
正將資料檔案00030恢復到F:ORACLEORADATASIMISGRYSZM2007.ORA
正將資料檔案00031恢復到F:ORACLEORADATASIMISGRYSZM2008.ORA
正將資料檔案00032恢復到F:ORACLEORADATASIMISGRYSZM_LOCAL_INDEX.ORA
正將資料檔案00033恢復到F:ORACLEORADATASIMISGRYSZM_GLOBAL_INDEX.ORA

雖然指定了刪除表空間前的時間點to_date('20040923 10:07:00','yyyymmdd hh24:mi:ss'),但在restore的時候rman並沒有把photo表空間的資料檔案(編號為00015的資料檔案)還原。

需要還原備份前的控制檔案才能還原表空間photo的資料檔案。

C:>rman nocatalog

恢復管理器: 版本9.0.1.1.1 - Production

(c) Copyright 2001 Oracle Corporation. All rights reserved.

RMAN>set DBID=1304821840

正在執行命令: SET DBID

RMAN>connect target sys/change_on_install

連線到目標資料庫: (未安裝)
正在使用目標資料庫控制檔案替代恢復目錄

RMAN>SET UNTIL TIME "to_date('20040923 10:07:00','yyyymmdd hh24:mi:ss')";

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00579: the following error occurred at 09/23/2004 10:42:51
RMAN-03031: this option of set command needs to be used inside a run block


RMAN>startup force nomount

Oracle 例程已啟動

總的系統全域性區域為 114061244位元組

Fixed Size 282556位元組
Variable Size 79691776位元組
Database Buffers 33554432位元組
Redo Buffers 532480位元組

RMAN>RUN
2> {
3> SET UNTIL TIME "to_date('20040923 10:07:00','yyyymmdd hh24:mi:ss')";
4> RESTORE CONTROLFILE FROM AUTOBACKUP;
5> ALTER DATABASE MOUNT;
6> RESTORE DATABASE;
7> RECOVER DATABASE;
8> }

正在執行命令: SET until clause
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00579: the following error occurred at 09/23/2004 10:44:48
RMAN-03002: failure during compilation of command
RMAN-03013: command type: set
RMAN-06003: ORACLE error from target database: ORA-01507: 未安裝資料庫
ORA-06512: 在"SYS.X$DBMS_RCVMAN", line 5146
ORA-06512: 在line 1
RMAN-06097: text of failing SQL statement: begin dbms_rcvman . setDatabase ( upp
er ( :dbname:dbname_i ) , :rlscn , :rltime , :fhdbi:fhdbi_i ) ; end ;
RMAN-06099: error occurred in source file: krmk.pc, line: 9442

RMAN>restore controlfile from autobackup;

啟動 restore 於 23-9月 -04

分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=10 devtype=DISK
通道 ORA_DISK_1, 正在查詢當天控制檔案自動備份:20040923
通道 ORA_DISK_1, 找到控制檔案自動備份:c-1304821840-20040923-00
通道 ORA_DISK_1, 控制檔案自動備份恢復已完成
正在複製控制檔案
輸出檔名=D:ORACLEORADATASIMISCONTROL01.CTL
輸出檔名=D:ORACLEORADATASIMISCONTROL02.CTL
輸出檔名=D:ORACLEORADATASIMISCONTROL03.CTL
完成 restore 於 23-9月 -04

RMAN>RUN
2> {
3> SET UNTIL TIME "to_date('20040923 10:07:00','yyyymmdd hh24:mi:ss')";
4> RESTORE DATABASE;
5> RECOVER DATABASE;
6> }

正在執行命令: SET until clause
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00579: the following error occurred at 09/23/2004 10:45:12
RMAN-03002: failure during compilation of command
RMAN-03013: command type: set
RMAN-06003: ORACLE error from target database: ORA-01507: 未安裝資料庫
ORA-06512: 在"SYS.X$DBMS_RCVMAN", line 5146
ORA-06512: 在line 1
RMAN-06097: text of failing SQL statement: begin dbms_rcvman . setDatabase ( upp
er ( :dbname:dbname_i ) , :rlscn , :rltime , :fhdbi:fhdbi_i ) ; end ;
RMAN-06099: error occurred in source file: krmk.pc, line: 9442

RMAN>alter database mount;

資料庫已載入

RMAN>RUN
2> {
3> SET UNTIL TIME "to_date('20040923 10:07:00','yyyymmdd hh24:mi:ss')";
4> RESTORE DATABASE;
5> RECOVER DATABASE;
6> }

正在執行命令: SET until clause

啟動 restore 於 23-9月 -04

使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到D:ORACLEORADATASIMISSYSTEM01.DBF
正將資料檔案00002恢復到D:ORACLEORADATASIMISUNDOTBS01.DBF
正將資料檔案00003恢復到D:ORACLEORADATASIMISCWMLITE01.DBF
正將資料檔案00004恢復到D:ORACLEORADATASIMISDRSYS01.DBF
正將資料檔案00005恢復到D:ORACLEORADATASIMISEXAMPLE01.DBF
正將資料檔案00006恢復到D:ORACLEORADATASIMISINDX01.DBF
正將資料檔案00007恢復到D:ORACLEORADATASIMISTOOLS01.DBF
正將資料檔案00008恢復到D:ORACLEORADATASIMISUSERS01.DBF
正將資料檔案00009恢復到D:ORACLEORA90DATABASESIDB.ORA
正將資料檔案00010恢復到D:ORACLEORA90DATABASEYB.ORA
正將資料檔案00011恢復到D:ORACLEORA90DATABASEZS.ORA
正將資料檔案00012恢復到D:ORACLEORA90DATABASEFF.ORA
正將資料檔案00013恢復到D:ORACLEORA90DATABASEBM.ORA
正將資料檔案00014恢復到D:ORACLEORA90DATABASESIDB_INDEX.ORA
正將資料檔案00015恢復到D:ORACLEORA90DATABASEPHOTO.ORA
正將資料檔案00016恢復到D:ORACLEORA90DATABASEHIS.ORA
正將資料檔案00017恢復到F:ORACLEORADATASIMISGRYSZM1994.ORA
正將資料檔案00018恢復到F:ORACLEORADATASIMISGRYSZM1995.ORA
正將資料檔案00019恢復到F:ORACLEORADATASIMISGRYSZM1996.ORA
正將資料檔案00020恢復到F:ORACLEORADATASIMISGRYSZM1997.ORA
正將資料檔案00021恢復到F:ORACLEORADATASIMISGRYSZM1998.ORA
正將資料檔案00022恢復到F:ORACLEORADATASIMISGRYSZM1999.ORA
正將資料檔案00023恢復到F:ORACLEORADATASIMISGRYSZM2000.ORA
正將資料檔案00024恢復到F:ORACLEORADATASIMISGRYSZM2001.ORA
正將資料檔案00025恢復到F:ORACLEORADATASIMISGRYSZM2002.ORA
正將資料檔案00026恢復到F:ORACLEORADATASIMISGRYSZM2003.ORA
正將資料檔案00027恢復到F:ORACLEORADATASIMISGRYSZM2004.ORA
正將資料檔案00028恢復到F:ORACLEORADATASIMISGRYSZM2005.ORA
正將資料檔案00029恢復到F:ORACLEORADATASIMISGRYSZM2006.ORA
正將資料檔案00030恢復到F:ORACLEORADATASIMISGRYSZM2007.ORA
正將資料檔案00031恢復到F:ORACLEORADATASIMISGRYSZM2008.ORA
正將資料檔案00032恢復到F:ORACLEORADATASIMISGRYSZM_LOCAL_INDEX.ORA
正將資料檔案00033恢復到F:ORACLEORADATASIMISGRYSZM_GLOBAL_INDEX.ORA
通道 ORA_DISK_1: 已恢復備份段 1
段 handle=E:RMANSIMIS_04G0MNIM_1_1.BAK tag=null params=NULL
通道 ORA_DISK_1: 恢復完成
完成 restore 於 23-9月 -04

啟動 recover 於 23-9月 -04
使用通道 ORA_DISK_1

正在開始介質的恢復

存檔日誌執行緒 1 序列 852 已作為檔案 D:ORACLEORADATASIMISREDO02.LOG 存在於磁碟

通道 ORA_DISK_1: 正在啟動到預設目標的存檔日誌恢復
通道 ORA_DISK_1: 正在恢復存檔日誌
存檔日誌執行緒 =1 序列=850
通道 ORA_DISK_1: 已恢復備份段 1
段 handle=E:RMANSIMIS_05G0MONF_1_1.BAK tag=null params=NULL
通道 ORA_DISK_1: 恢復完成
存檔日誌檔名 =F:ARCHIVESIMISARC_850_1.ARC 執行緒 =1 序列 =850
存檔日誌檔名 =F:ARCHIVESIMISARC_851_1.ARC 執行緒 =1 序列 =851
存檔日誌檔名 =D:ORACLEORADATASIMISREDO02.LOG 執行緒 =1 序列 =852
完成介質的恢復
完成 recover 於 23-9月 –04
RMAN>alter database open resetlogs;

資料庫已開啟

【***可以看到,表空間photo的資料檔案(編號為00015的資料檔案)已被還原。】

4. 檢驗是否恢復成功


連線到資料庫,表空間和資料均已恢復。
SQL> desc test
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------

C1 NUMBER

SQL> select *from test;

C1
----------
1

SQL> select ts#,name from v$tablespace;

TS# NAME
---------- ------------------------------
2 CWMLITE
3 DRSYS
4 EXAMPLE
5 INDX
0 SYSTEM
7 TOOLS
1 UNDOTBS
8 USERS
6 TEMP
9 SIDB
10 YB

TS# NAME
---------- ------------------------------
11 ZS
12 FF
13 BM
14 SIDB_INDEX
15 PHOTO
16 HIS
17 GRYSZM_1994
18 GRYSZM_1995
19 GRYSZM_1996
20 GRYSZM_1997
21 GRYSZM_1998

TS# NAME
---------- ------------------------------
22 GRYSZM_1999
23 GRYSZM_2000
24 GRYSZM_2001
25 GRYSZM_2002
26 GRYSZM_2003
27 GRYSZM_2004
28 GRYSZM_2005
29 GRYSZM_2006
30 GRYSZM_2007
31 GRYSZM_2008
32 GRYSZM_LOCAL_INDEX

TS# NAME
---------- ------------------------------
33 GRYSZM_GLOBAL_INDEX

已選擇34行。


5. 小結與問題
在該例中可以從控制檔案自動備份中還原刪除表空間前的控制檔案才能恢復表空間photo。這裡帶來的一個問題是:如果在刪除表空間photo後,用rman作了多次的備份(包括控制檔案備份),rman如何選擇表空間photo刪除前的控制檔案?(其中一個解決的方法是在還原控制檔案的時候指定備份集)


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

相關文章