oracle實驗記錄 (恢復-表空間基於時間點恢復(rman))

fufuh2o發表於2009-08-28

 

用rman恢復非常簡單,不過原理跟手動是一樣一樣的
C:\>set oracle_sid=orcl

C:\>rman target '/ as sysdba'

恢復管理器: Release 10.2.0.1.0 - Production on 星期五 8月 28 11:09:23 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

連線到目標資料庫: ORCL (DBID=1223510333)

RMAN> backup database;

啟動 backup 於 28-8月 -09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集中的資料檔案
輸入資料檔案 fno=00001 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
輸入資料檔案 fno=00003 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
輸入資料檔案 fno=00005 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
輸入資料檔案 fno=00002 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
輸入資料檔案 fno=00006 name=D:\TEST.DBF
輸入資料檔案 fno=00004 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 正在啟動段 1 於 28-8月 -09
通道 ORA_DISK_1: 已完成段 1 於 28-8月 -09
段控制程式碼=E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_08_28\O1_MF
_NNNDF_TAG20090828T114749_59GNV6TV_.BKP 標記=TAG20090828T114749 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:03:09
通道 ORA_DISK_1: 啟動全部資料檔案備份集
通道 ORA_DISK_1: 正在指定備份集中的資料檔案
備份集中包括當前控制檔案
在備份集中包含當前的 SPFILE
通道 ORA_DISK_1: 正在啟動段 1 於 28-8月 -09
通道 ORA_DISK_1: 已完成段 1 於 28-8月 -09
段控制程式碼=E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_08_28\O1_MF
_NCSNF_TAG20090828T114749_59GO14MK_.BKP 標記=TAG20090828T114749 註釋=NONE
通道 ORA_DISK_1: 備份集已完成, 經過時間:00:00:03
完成 backup 於 28-8月 -09


11:48:02 SQL> conn xh/a831115
已連線。
11:51:24 SQL> create table t1 (a int) tablespace users;

表已建立。

11:51:27 SQL> create table t2 (a int) tablespace test;

表已建立。

11:51:39 SQL> insert into  t1 values(1);

已建立 1 行。

11:51:49 SQL> insert into  t2 values(1);

已建立 1 行。

11:51:55 SQL> commit;

提交完成。

11:51:57 SQL> select current_scn from v$database;

CURRENT_SCN
-----------
     868500

11:52:08 SQL> truncate table t2;

表被截斷。

11:52:13 SQL> select current_scn from v$database;

CURRENT_SCN
-----------
     868520

11:52:15 SQL> insert into t1 values (2);

已建立 1 行。

11:52:21 SQL> commit;

提交完成。

11:52:25 SQL>  alter system switch logfile;

系統已更改。

11:52:27 SQL> select group#,status ,first_change# from v$log;

    GROUP# STATUS           FIRST_CHANGE#
---------- ---------------- -------------
         1 ACTIVE                  867754
         2 INACTIVE                867144
         3 CURRENT                 868528

11:52:28 SQL> alter system checkpoint;

系統已更改。

11:52:29 SQL> execute sys.dbms_tts.transport_set_check('TEST',true);

PL/SQL 過程已成功完成。

11:52:35 SQL> select * from sys.transport_set_violations;

未選定行

11:52:37 SQL> create table t3 (a int) tablespace test;

表已建立。


11:53:10 SQL> select owner,name,tablespace_name from sys.ts_pitr_objects_to_be_drop
ped where tablespace_name='TEST' and creation_time>to_date('2009-08-28 11:51:55','y
yyy-mm-dd hh24:mi:ss');

OWNER
------------------------------
NAME                                               TABLESPACE_NAME
-------------------------------------------------- --------------------
XH
T3                                                 TEST~~~~~~~~~~~~~~~~~~~~~~~~~~~~這個表將在恢復後丟失exp出來先

 

11:53:16 SQL> insert into t3 values(1);

已建立 1 行。

11:54:54 SQL> commit;

提交完成。


要求是與 手動一樣,恢復t2 到truncate前,加了一條test tablespace上 要丟失的imp回來


C:\>exp 'system/a831115 as sysdba' tables=xh.t3   file=e:\t5.dmp

Export: Release 10.2.0.1.0 - Production on 星期五 8月 28 11:53:52 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即將匯出指定的表通過常規路徑...
當前的使用者已更改為 XH
. . 正在匯出表                              T3匯出了           0 行
成功終止匯出, 沒有出現警告。

C:\>exp 'system/a831115 as sysdba' tables=xh.t3   file=e:\t3.dmp

Export: Release 10.2.0.1.0 - Production on 星期五 8月 28 11:55:02 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即將匯出指定的表通過常規路徑...
當前的使用者已更改為 XH
. . 正在匯出表                              T3匯出了           1 行
成功終止匯出, 沒有出現警告。

 

RRMAN> recover tablespace 'TEST' until scn 868500 auxiliary destination 'd:\auxiliar(以下是完整的輸出 可以看到與手動過程是一樣的)
y'
2> ;

啟動 recover 於 28-8月 -09
使用通道 ORA_DISK_1
RMAN-05026: 警告: 假定以下表空間集適用於指定的時間點

表空間列表要求具有 UNDO 段
表空間 SYSTEM
表空間 UNDOTBS1

使用 SID='faqm' 建立自動例項

供自動例項使用的初始化引數:
db_name=ORCL
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_ORCL_faqm
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=d:\auxiliary
control_files=d:\auxiliary/cntrl_tspitr_ORCL_faqm.f


啟動自動例項 ORCL

Oracle 例項已啟動

系統全域性區域總計     205520896 位元組

Fixed Size                     1248092 位元組
Variable Size                146801828 位元組
Database Buffers              50331648 位元組
Redo Buffers                   7139328 位元組
自動例項已建立

記憶體指令碼的內容:
{
# set the until clause
set until  scn 868500;
# restore the controlfile
restore clone controlfile;
# mount the controlfile
sql clone 'alter database mount clone database';
# archive current online log for tspitr to a resent until time
sql 'alter system archive log current';
# avoid unnecessary autobackups for structural changes during TSPITR
sql 'begin dbms_backup_restore.AutoBackupFlag(FALSE); end;';
}
正在執行記憶體指令碼

正在執行命令: SET until clause

啟動 restore 於 28-8月 -09
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=37 devtype=DISK

通道 ORA_AUX_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_AUX_DISK_1: 正在復原控制檔案
通道 ORA_AUX_DISK_1: 正在讀取備份段 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\OR
CL\BACKUPSET\2009_08_28\O1_MF_NCSNF_TAG20090828T114749_59GO14MK_.BKP
通道 ORA_AUX_DISK_1: 已恢復備份段 1
段控制程式碼 = E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_08_28\O1_
MF_NCSNF_TAG20090828T114749_59GO14MK_.BKP 標記 = TAG20090828T114749
通道 ORA_AUX_DISK_1: 恢復完成, 用時: 00:00:02
輸出檔名=D:\AUXILIARY\CNTRL_TSPITR_ORCL_FAQM.F
完成 restore 於 28-8月 -09

sql 語句: alter database mount clone database

sql 語句: alter system archive log current

sql 語句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;
釋放的通道: ORA_DISK_1
釋放的通道: ORA_AUX_DISK_1

記憶體指令碼的內容:
{
# generated tablespace point-in-time recovery script
# set the until clause
set until  scn 868500;
plsql <<declare
  sqlstatement       varchar2(512);
  offline_not_needed exception;
  pragma exception_init(offline_not_needed, -01539);
begin
  sqlstatement := 'alter tablespace '||  'TEST' ||' offline for recover';
  krmicd.writeMsg(6162, sqlstatement);
  krmicd.execSql(sqlstatement);
exception
  when offline_not_needed then
    null;
end; >>>;
# set an omf destination filename for restore
set newname for clone datafile  1 to new;
# set an omf destination filename for restore
set newname for clone datafile  2 to new;
# set an omf destination tempfile
set newname for clone tempfile  1 to new;
# set a destination filename for restore
set newname for datafile  6 to
 "D:\TEST.DBF";
# rename all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set plus the auxilliary tablespaces
restore clone datafile  1, 2, 6;
switch clone datafile all;
#online the datafiles restored or flipped
sql clone "alter database datafile  1 online";
#online the datafiles restored or flipped
sql clone "alter database datafile  2 online";
#online the datafiles restored or flipped
sql clone "alter database datafile  6 online";
# make the controlfile point at the restored datafiles, then recover them
recover clone database tablespace  "TEST", "SYSTEM", "UNDOTBS1" delete archivelog;
alter clone database open resetlogs;
# PLUG HERE the creation of a temporary tablespace if export fails due to lack
# of temporary space.
# For example in Unix these two lines would do that:
#sql clone "create tablespace aux_tspitr_tmp
#           datafile ''/tmp/aux_tspitr_tmp.dbf'' size 500K";
}
正在執行記憶體指令碼

正在執行命令: SET until clause

sql 語句: alter tablespace TEST offline for recover

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

正在執行命令: SET NEWNAME

臨時檔案 1 在控制檔案中已重新命名為 D:\AUXILIARY\TSPITR_O\DATAFILE\O1_MF_TEMP_%U_.TMP


啟動 restore 於 28-8月 -09
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=39 devtype=DISK

通道 ORA_AUX_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_AUX_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到D:\AUXILIARY\TSPITR_O\DATAFILE\O1_MF_SYSTEM_%U_.DBF
正將資料檔案00002恢復到D:\AUXILIARY\TSPITR_O\DATAFILE\O1_MF_UNDOTBS1_%U_.DBF
正將資料檔案00006恢復到D:\TEST.DBF
通道 ORA_AUX_DISK_1: 正在讀取備份段 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\OR
CL\BACKUPSET\2009_08_28\O1_MF_NNNDF_TAG20090828T114749_59GNV6TV_.BKP
通道 ORA_AUX_DISK_1: 已恢復備份段 1
段控制程式碼 = E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_08_28\O1_
MF_NNNDF_TAG20090828T114749_59GNV6TV_.BKP 標記 = TAG20090828T114749
通道 ORA_AUX_DISK_1: 恢復完成, 用時: 00:00:35
完成 restore 於 28-8月 -09

資料檔案 1 已轉換成資料檔案副本
輸入資料檔案副本 recid=11 stamp=696081426 檔名=D:\AUXILIARY\TSPITR_O\DATAFILE\O1_
MF_SYSTEM_59GOCHB8_.DBF
資料檔案 2 已轉換成資料檔案副本
輸入資料檔案副本 recid=12 stamp=696081426 檔名=D:\AUXILIARY\TSPITR_O\DATAFILE\O1_
MF_UNDOTBS1_59GOCHC7_.DBF

sql 語句: alter database datafile  1 online

sql 語句: alter database datafile  2 online

sql 語句: alter database datafile  6 online

啟動 recover 於 28-8月 -09
使用通道 ORA_AUX_DISK_1

正在開始介質的恢復

存檔日誌執行緒 1 序列 11 已作為檔案 E:\ARCHIVELOG\ARC00011_0695918991.001.ARC 存在於
磁碟上
存檔日誌檔名 =E:\ARCHIVELOG\ARC00011_0695918991.001.ARC 執行緒 =1 序列 =11
介質恢復完成, 用時: 00:00:02
完成 recover 於 28-8月 -09

資料庫已開啟

記憶體指令碼的內容:
{
# export the tablespaces in the recovery set
host 'exp userid =\"/@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=oracle)(ARGV0=or
aclefaqm)(ARGS=^'(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))^')(ENVS=^'ORACLE
_SID=faqm^'))(CONNECT_DATA=(SID=faqm))) as sysdba\" point_in_time_recover=y tablesp
aces=
 TEST file=
tspitr_a.dmp';
# shutdown clone before import
shutdown clone immediate
# import the tablespaces in the recovery set
host 'imp userid =\"/@ as sysdba\" point_in_time_recover=y file=
tspitr_a.dmp';
# online/offline the tablespace imported
sql "alter tablespace  TEST online";
sql "alter tablespace  TEST offline";
# enable autobackups in case user does open resetlogs from RMAN after TSPITR
sql 'begin dbms_backup_restore.AutoBackupFlag(TRUE); end;';
}
正在執行記憶體指令碼


Export: Release 10.2.0.1.0 - Production on 星期五 8月 28 11:57:25 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
注: 將不匯出表資料 (行)

即將匯出表空間時間點恢復物件...
對於表空間 TEST...
. 正在匯出簇定義
. 正在匯出表定義
. . 正在匯出表                              T2
. 正在匯出引用完整性約束條件
. 正在匯出觸發器
. 終止時間點恢復
成功終止匯出, 沒有出現警告。
主機命令完成

資料庫已關閉
資料庫已解除安裝
Oracle 例項已關閉


Import: Release 10.2.0.1.0 - Production on 星期五 8月 28 11:57:50 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

經由常規路徑由 EXPORT:V10.02.01 建立的匯出檔案
即將匯入表空間時間點恢復物件...
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的匯入
. 正在將 SYS 的物件匯入到 SYS
. 正在將 XH 的物件匯入到 XH
. . 正在匯入表                            "T2"
. 正在將 SYS 的物件匯入到 SYS
成功終止匯入, 沒有出現警告。
主機命令完成

sql 語句: alter tablespace  TEST online

sql 語句: alter tablespace  TEST offline

sql 語句: begin dbms_backup_restore.AutoBackupFlag(TRUE); end;

刪除自動例項
自動例項已刪除
已刪除輔助例項檔案 D:\AUXILIARY\CNTRL_TSPITR_ORCL_FAQM.F
已刪除輔助例項檔案 D:\AUXILIARY\TSPITR_O\DATAFILE\O1_MF_SYSTEM_59GOCHB8_.DBF
已刪除輔助例項檔案 D:\AUXILIARY\TSPITR_O\DATAFILE\O1_MF_UNDOTBS1_59GOCHC7_.DBF~~~~~~~~~~~~~~自動刪除
已刪除輔助例項檔案 D:\AUXILIARY\TSPITR_O\DATAFILE\O1_MF_TEMP_59GODZ4W_.TMP
已刪除輔助例項檔案 D:\AUXILIARY\TSPITR_O\ONLINELOG\O1_MF_1_59GODT00_.LOG
已刪除輔助例項檔案 D:\AUXILIARY\TSPITR_O\ONLINELOG\O1_MF_2_59GODVDP_.LOG
已刪除輔助例項檔案 D:\AUXILIARY\TSPITR_O\ONLINELOG\O1_MF_3_59GODWGN_.LOG
完成 recover 於 28-8月 -09

 

 

11:54:56 SQL> select * from t1;

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

11:58:39 SQL> select * from t2;
select * from t2
              *
第 1 行出現錯誤:
ORA-00376: 此時無法讀取檔案 6
ORA-01110: 資料檔案 6: 'D:\TEST.DBF'


11:58:40 SQL> alter tablespace test online;

表空間已更改。

11:58:51 SQL> select * from t2;

         A
----------
         1

11:58:52 SQL> select * from t3;
select * from t3
              *
第 1 行出現錯誤:
ORA-00942: 表或檢視不存在

 

 

C:\>imp '/ as sysdba' tables=t3 fromuser=xh file=e:\t3.dmp

Import: Release 10.2.0.1.0 - Production on 星期五 8月 28 12:01:00 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

經由常規路徑由 EXPORT:V10.02.01 建立的匯出檔案
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的匯入
. 正在將 SYS 的物件匯入到 SYS
. 正在將 XH 的物件匯入到 XH
. . 正在匯入表                            "T3"匯入了           1 行
成功終止匯入, 沒有出現警告。

 

11:58:56 SQL> select * from t3;

         A
----------
         1

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

相關文章