RMAN全自動TSPITR
環境:
Windows xp
Oracle 10.2.0.1
準備工作:
1.建立auxiliary instance的口令檔案
先建立aux例項:
C:\>oradim -NEW -SID aux
例項已建立。
建立口令檔案:
C:\>orapwd file=D:\oracle\product\10.2.0\db_1\database\PWDaux.ora password=sys
2. 配置auxiliary instance的監聽和tnsnames.ora
listener.ora中增加:
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = aux)
)
tnsnames.ora中增加:
aux =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = aux)
)
)
使用tnsping驗證:
C:\>tnsping aux
TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 22-4月 -2009 09:47:35
Copyright (c) 1997, 2005, Oracle. All rights reserved.
已使用的引數檔案:
D:\oracle\product\10.2.0\db_1\network\admin\sqlnet.ora
已使用 TNSNAMES 介面卡來解析別名
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = aux))) OK (10 毫秒)
3. 建立auxiliary instance的引數檔案
建立引數檔案d:\initaux.ora,內容如下:
compatible='10.2.0.1.0'
db_name='orcl'
db_unique_name='aux'
db_block_size=8192
SHARED_POOL_SIZE=50M
CONTROL_FILES='D:\oracle\product\10.2.0\oradata\auxi\control01.ctl'
DB_FILE_NAME_CONVERT='D:\oracle\product\10.2.0\oradata\orcl','D:\oracle\product\10.2.0\oradata\auxi'
LOG_FILE_NAME_CONVERT='D:\oracle\product\10.2.0\oradata\orcl','D:\oracle\product\10.2.0\oradata\auxi'還必須建立D:\oracle\product\10.2.0\oradata\auxi目錄
特別注意db_name和db_unique_name引數,設定不當可能會遇到ORA-01102、ORA-01103報錯。
4. 啟動auxiliary instance到nomount狀態
C:\>set oracle_sid=aux
C:\>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 4月 22 09:35:00 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已連線到空閒例程。
SQL> startup nomount pfile=d:\initaux.ora
ORACLE 例程已經啟動。
5. target database open or mount
確認target database狀態為open 或mount
6. 保證備份檔案和歸檔檔案可用
備份target database:
C:\>rman target /
RMAN> backup as compressed backupset database current controlfile plus archivelog;
RMAN> exit
備份完成後,模擬失誤操作:(確定恢復時間)
14:47:15 SQL> conn test/test
已連線。
14:47:19 SQL> drop table t1;
表已刪除。
已用時間: 00: 00: 00.28
14:47:34 SQL> truncate table t2;
表被截斷。
執行全自動TSPITR:
首先確定物件被刪除之前的準確時間
C:\>rman target / auxiliary sys/sys@aux
恢復管理器: Release 10.2.0.1.0 - Production on 星期一 4月 27 14:51:13 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到目標資料庫: ORCL (DBID=1211958316)
已連線到輔助資料庫: ORCL (未裝載)
RMAN> run{
2> allocate auxiliary channel c1 type disk;
3> recover tablespace 'TEST' until time "to_date('2009-04-27:14:46:00','yyyy-mm-
dd:hh24:mi:ss')" auxiliary destination 'D:\oracle\product\10.2.0\oradata\auxi';
4> }
使用目標資料庫控制檔案替代恢復目錄
分配的通道: c1
通道 c1: sid=36 devtype=DISK
啟動 recover 於 27-4月 -09
RMAN-05026: 警告: 假定以下表空間集適用於指定的時間點
表空間列表要求具有 UNDO 段
表空間 SYSTEM
表空間 UNDOTBS1
記憶體指令碼的內容:
{
# set the until clause
set until time "to_date('2009-04-27:14:46:00','yyyy-mm-dd:hh24:mi:ss')";
# 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 於 27-4月 -09
通道 c1: 正在開始恢復資料檔案備份集
通道 c1: 正在復原控制檔案
通道 c1: 正在讀取備份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUP
SET\2009_04_27\O1_MF_NCNNF_TAG20090427T144344_4ZBO2WMK_.BKP
通道 c1: 已恢復備份段 1
段控制程式碼 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_04_27\
O1_MF_NCNNF_TAG20090427T144344_4ZBO2WMK_.BKP 標記 = TAG20090427T144344
通道 c1: 恢復完成, 用時: 00:00:01
輸出檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\CONTROL01.CTL
完成 restore 於 27-4月 -09
sql 語句: alter database mount clone database
sql 語句: alter system archive log current
sql 語句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;
記憶體指令碼的內容:
{
# generated tablespace point-in-time recovery script
# set the until clause
set until time "to_date('2009-04-27:14:46:00','yyyy-mm-dd:hh24:mi:ss')";
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 a destination filename for restore
set newname for datafile 1 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\SYSTEM01.DBF";
# set a destination filename for restore
set newname for datafile 2 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\UNDOTBS01.DBF";
# set a destination tempfile
set newname for tempfile 1 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\TEMP01.DBF";
# set a destination filename for restore
set newname for datafile 6 to
"D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\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
啟動 restore 於 27-4月 -09
通道 c1: 正在開始恢復資料檔案備份集
通道 c1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\SYSTEM01.DBF
正將資料檔案00002恢復到D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\UNDOTBS01.DBF
正將資料檔案00006恢復到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST.DBF
通道 c1: 正在讀取備份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUP
SET\2009_04_27\O1_MF_NNNDF_TAG20090427T144344_4ZBO117B_.BKP
通道 c1: 已恢復備份段 1
段控制程式碼 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_04_27\
O1_MF_NNNDF_TAG20090427T144344_4ZBO117B_.BKP 標記 = TAG20090427T144344
通道 c1: 恢復完成, 用時: 00:00:46
完成 restore 於 27-4月 -09
資料檔案 6 已轉換成資料檔案副本
輸入資料檔案副本 recid=7 stamp=685291943 檔名=D:\ORACLE\PRODUCT\10.2.0\ORADATA
\ORCL\TEST.DBF
sql 語句: alter database datafile 1 online
sql 語句: alter database datafile 2 online
sql 語句: alter database datafile 6 online
啟動 recover 於 27-4月 -09
正在開始介質的恢復
存檔日誌執行緒 1 序列 38 已作為檔案 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O
RCL\ARCHIVELOG\2009_04_27\O1_MF_1_38_4ZBO2Y3X_.ARC 存在於磁碟上
存檔日誌執行緒 1 序列 39 已作為檔案 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O
RCL\ARCHIVELOG\2009_04_27\O1_MF_1_39_4ZBO90X9_.ARC 存在於磁碟上
存檔日誌檔名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\200
9_04_27\O1_MF_1_38_4ZBO2Y3X_.ARC 執行緒 =1 序列 =38
存檔日誌檔名 =D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\200
9_04_27\O1_MF_1_39_4ZBO90X9_.ARC 執行緒 =1 序列 =39
介質恢復完成, 用時: 00:00:02
完成 recover 於 27-4月 -09
資料庫已開啟
記憶體指令碼的內容:
{
# export the tablespaces in the recovery set
host 'exp userid =\"sys/sys@aux as sysdba\" point_in_time_recover=y tablespaces=
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 星期一 4月 27 14:52: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
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
注: 將不匯出表資料 (行)
即將匯出表空間時間點恢復物件...
對於表空間 TEST...
. 正在匯出簇定義
. 正在匯出表定義
. . 正在匯出表 T1
. . 正在匯出表 T2
. 正在匯出引用完整性約束條件
. 正在匯出觸發器
. 終止時間點恢復
成功終止匯出, 沒有出現警告。
主機命令完成
資料庫已關閉
資料庫已解除安裝
Oracle 例項已關閉
Import: Release 10.2.0.1.0 - Production on 星期一 4月 27 14:53:18 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
. 正在將 TEST 的物件匯入到 TEST
. . 正在匯入表 "T1"
. . 正在匯入表 "T2"
. 正在將 SYS 的物件匯入到 SYS
成功終止匯入, 沒有出現警告。
主機命令完成
sql 語句: alter tablespace TEST online
sql 語句: alter tablespace TEST offline
sql 語句: begin dbms_backup_restore.AutoBackupFlag(TRUE); end;
已刪除輔助例項檔案 D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\CONTROL01.CTL
已刪除輔助例項檔案 D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\SYSTEM01.DBF
已刪除輔助例項檔案 D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\UNDOTBS01.DBF
已刪除輔助例項檔案 D:\ORACLE\PRODUCT\10.2.0\ORADATA\AUXI\TEMP01.DBF
完成 recover 於 27-4月 -09
至此全自動TSPITR完成,驗證恢復結果:
14:50:54 SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
UNDOTBS1 ONLINE
SYSAUX ONLINE
TEMP ONLINE
USERS ONLINE
EXAMPLE ONLINE
TEST OFFLINE
已選擇7行。
已用時間: 00: 00: 00.03
14:53:37 SQL> alter tablespace test online;
分別select兩個表,觀察恢復結果!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17997/viewspace-591927/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用RMAN做TSPITR
- Backup And Recovery User's Guide-執行完全自動的RMAN TSPITRGUIIDE
- 【TSPITR】RMAN表空間基於時間點的自動恢復
- RMAN: Tablespace Point In Time Recovery (TSPITR)
- 【RMAN】表空間基於時間點的RMAN恢復-TSPITR
- Backup And Recovery User's Guide-RMAN TSPITR模型GUIIDE模型
- 自動化RMAN指令碼指令碼
- 全自動化介面
- jquery 自動補全jQuery
- Oracle RMAN實現“一鍵式”表空間TSPITROracle
- 實戰10g新特性之RMAN TSPITR特性
- 利用rman的TSPITR技術找回刪除的表!
- RMAN自動執行計劃
- 全自動遊戲的明天遊戲
- pycharm 如何自動補全PyCharm
- mac git 自動補全MacGit
- RMAN自動備份任務新增
- rman 自動備份指令碼-windows指令碼Windows
- Backup And Recovery User's Guide-RMAN TSPITR的基本概念GUIIDE
- Rman-ORACLE資料庫RMAN實現自動備份Oracle資料庫
- 全自動埋點 diff 工具
- [譯] 自動補全規則
- 終端自動補全命令
- Python的自動補全Python
- Docker自動補全容器名Docker
- 自動駕駛測試全流程自動駕駛
- windows下rman自動備份指令碼Windows指令碼
- Linux設定python自動tab自動補全LinuxPython
- Automatic TSPITR in 10G RMAN -A walk Through (Doc ID 335851.1)
- rman 備份 全庫
- Backup And Recovery User's Guide-RMAN架構-RMAN通道-自動和手動通道GUIIDE架構
- Laravel artisan bash 命令自動補全Laravel
- fish shell 自動補全子命令
- python之 自動補全 tabPython
- Docker 命令自動補全?要的Docker
- CSS 也能自動補全字串?CSS字串
- vim自動補全外掛配置
- redhat下通過rman自動備份db!Redhat