oracle tspitr
Oracle TSPITR
TSPITR介紹
TSPITR(表空間時間點恢復)用於將一個或多個表空間恢復到過去某個時間點的狀態,而其他表空間仍然保持現有狀態。
(1) TSPITR(Tablespace Point-In-Time Recovery),只適用於ARCHIVELOG模式。
(2) TSPITR實現方法,建議使用RMAN實現表空間時間點恢復。
(3) DBPITR(Database Point-In-TIme Recovery),資料庫時間點恢復;表示將資料庫的所有表空間恢復到過去時間顛倒俄狀態,只適用於ARCHIVELOG模式。
(4) 主資料庫(Primary Database),用於存放應用系統資料的Oracle資料庫。當執行TSPITR時,主資料庫是指包含有被恢復表空間的資料庫。
(5) 恢復集(Recovery Set),是指在主資料庫上需要執行TSPITR的表空間集合。注意,當在恢復集的表空間上執行TSPITR時,要求這些表空間必須是自包含的。
(6) 輔助資料庫(Auxiliary Database),是主資料庫的一個副本資料庫。當執行TSPITR時,輔助資料庫用於將恢復集表空間恢復到過去時間點。注意,輔助資料庫的所有物理檔案都是從主資料庫備份中取得,並且輔助資料庫必須包含SYSTEM表空間、UNDO表空間、恢復集表空間的備份檔案。
(7) 輔助集(Auxiliary Set),是指輔助資料庫所需要的、除了恢復集表空間檔案之外地餓其他檔案集合。當執行TSPITR時,輔助資料庫除了需要恢復表空間的備份檔案之外,還需要備份控制檔案、SYSTEM表空間的備份檔案、UNDO表空間的備份檔案。
注意:恢復集表空間必須為自包含;
違反自包含表空間集合的常見情況如下:
1> 表空間集合包含有SYS方案物件
2> 表空間集合包含了索引所在的表空間,但沒有包含索引基表所在的表空間
3> 表空間集合沒有包含分割槽表的所有分割槽
4> 表空間集合包含了表所在的表空間,但沒有包含其LOB列所在的表空間
檢查自包含方式:
SQL> connect sys/oracle@demo as sysdba
SQL> execute dbms_tts.transport_set_check('user01',true);
SQL> Select * From transport_set_violations;
測試
環境 10.2.0.1 + WinXp
--建立表空間
CREATE TABLESPACE "DATACNT_TEST"
LOGGING
DATAFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATACNT_TEST.ora' SIZE 50M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
-- create table
create table ttest (i_id integer, c_name varchar2(10)) tablespace datacnt_test;
create index itest on ttest(i_id) tablespace DATACNT_TEST;
insert into ttest(i_id,c_name) values (1, '1');
insert into ttest(i_id,c_name) values (2, '2');
insert into ttest(i_id,c_name) values (3, '3');
insert into ttest(i_id,c_name) values (4, '4');
insert into ttest(i_id,c_name) values (5, '5');
insert into ttest(i_id,c_name) values (6, '6');
insert into ttest(i_id,c_name) values (7, '7');
insert into ttest(i_id,c_name) values (8, '8');
insert into ttest(i_id,c_name) values (8, '9');
insert into ttest(i_id,c_name) values (10, '10');
insert into ttest(i_id,c_name) values (11, '11');
select * from ttest;
--check
SELECT *
FROM SYS.TS_PITR_CHECK
WHERE (
TS1_NAME IN ('DATACNT_TEST')
AND TS2_NAME NOT IN ('DATACNT_TEST')
)
OR (
TS1_NAME NOT IN ('DATACNT_TEST')
AND TS2_NAME IN ('DATACNT_TEST')
);
--記住時間點
select sysdate from dual;
--執行rman備份
run{
allocate channel d1 type disk;
backup tag ts_test
format 'C:\temp\TS_t%t_s%s.bkp'
tablespace DATACNT_TEST,UNDOTBS1,SYSTEM;
backup current controlfile;
release channel d1;
}
--模擬操作 修改ttest的表
delete from ttest where c_name like '%1%';
commit;
RMAN> run {
2> recover tablespace DATACNT_TEST until time "to_date('2010-3-18 13:31:48','yyyy-mm-dd hh24:mi:ss')" auxiliary destination 'C:\auxiliary';
3> }
啟動 recover 於 18-3月 -10
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=148 devtype=DISK
RMAN-05026: 警告: 假定以下表空間集適用於指定的時間點
表空間列表要求具有 UNDO 段
表空間 SYSTEM
表空間 UNDOTBS1
使用 SID='yaxj' 建立自動例項
供自動例項使用的初始化引數:
db_name=ORCL
compatible=10.2.0.1.0
db_block_size=8192
db_files=200
db_unique_name=tspitr_ORCL_yaxj
large_pool_size=1M
shared_pool_size=110M
#No auxiliary parameter file used
db_create_file_dest=C:\auxiliary
control_files=C:\auxiliary/cntrl_tspitr_ORCL_yaxj.f
啟動自動例項 ORCL
Oracle 例項已啟動
系統全域性區域總計 201326592 位元組
Fixed Size 1248092 位元組
Variable Size 146801828 位元組
Database Buffers 50331648 位元組
Redo Buffers 2945024 位元組
自動例項已建立
記憶體指令碼的內容:
{
# set the until clause
set until time "to_date('2010-3-18 13:31:48','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 於 18-3月 -10
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=37 devtype=DISK
通道 ORA_AUX_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_AUX_DISK_1: 正在復原控制檔案
通道 ORA_AUX_DISK_1: 正在讀取備份段 C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA
\ORCL\AUTOBACKUP\2010_03_18\O1_MF_S_713971810_5T3GM4G6_.BKP
通道 ORA_AUX_DISK_1: 已恢復備份段 1
段控制程式碼 = C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\AUTOBACKUP\2010_03_18
\O1_MF_S_713971810_5T3GM4G6_.BKP 標記 = TAG20100318T133010
通道 ORA_AUX_DISK_1: 恢復完成, 用時: 00:00:03
輸出檔名=C:\AUXILIARY\CNTRL_TSPITR_ORCL_YAXJ.F
完成 restore 於 18-3月 -10
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 time "to_date('2010-3-18 13:31:48','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 '|| 'DATACNT_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 20 to
"C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATACNT_TEST.ORA";
# rename all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set plus the auxilliary tablespaces
restore clone datafile 1, 2, 20;
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 20 online";
# make the controlfile point at the restored datafiles, then recover them
recover clone database tablespace "DATACNT_TEST", "SYSTEM", "UNDOTBS1" delete a
rchivelog;
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 DATACNT_TEST offline for recover
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
正在執行命令: SET NEWNAME
臨時檔案 1 在控制檔案中已重新命名為 C:\AUXILIARY\TSPITR_O\DATAFILE\O1_MF_TEMP_%U_.
TMP
啟動 restore 於 18-3月 -10
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: sid=39 devtype=DISK
通道 ORA_AUX_DISK_1: 正在開始恢復資料檔案備份集
通道 ORA_AUX_DISK_1: 正在指定從備份集恢復的資料檔案
正將資料檔案00001恢復到C:\AUXILIARY\TSPITR_O\DATAFILE\O1_MF_SYSTEM_%U_.DBF
正將資料檔案00002恢復到C:\AUXILIARY\TSPITR_O\DATAFILE\O1_MF_UNDOTBS1_%U_.DBF
正將資料檔案00020恢復到C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\DATACNT_TEST.ORA
通道 ORA_AUX_DISK_1: 正在讀取備份段 C:\TEMP\TS_T713971680_S14.BKP
通道 ORA_AUX_DISK_1: 已恢復備份段 1
段控制程式碼 = C:\TEMP\TS_T713971680_S14.BKP 標記 = TS_LEVEL0
通道 ORA_AUX_DISK_1: 恢復完成, 用時: 00:02:05
完成 restore 於 18-3月 -10
資料檔案 1 已轉換成資料檔案副本
輸入資料檔案副本 recid=5 stamp=713972344 檔名=C:\AUXILIARY\TSPITR_O\DATAFILE\O
1_MF_SYSTEM_5T3GZTN2_.DBF
資料檔案 2 已轉換成資料檔案副本
輸入資料檔案副本 recid=6 stamp=713972344 檔名=C:\AUXILIARY\TSPITR_O\DATAFILE\O
1_MF_UNDOTBS1_5T3GZTSX_.DBF
sql 語句: alter database datafile 1 online
sql 語句: alter database datafile 2 online
sql 語句: alter database datafile 20 online
啟動 recover 於 18-3月 -10
使用通道 ORA_AUX_DISK_1
正在開始介質的恢復
存檔日誌執行緒 1 序列 51 已作為檔案 C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\O
RCL\ARCHIVELOG\2010_03_18\O1_MF_1_51_5T3GZN5F_.ARC 存在於磁碟上
存檔日誌檔名 =C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\201
0_03_18\O1_MF_1_51_5T3GZN5F_.ARC 執行緒 =1 序列 =51
介質恢復完成, 用時: 00:00:01
完成 recover 於 18-3月 -10
資料庫已開啟
記憶體指令碼的內容:
{
# export the tablespaces in the recovery set
host 'exp userid =\"/@(DESCRIPTION=(ADDRESS=(PROTOCOL=beq)(PROGRAM=oracle)(ARGV0
=oracleyaxj)(ARGS=^'(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))^')(ENVS=^'
ORACLE_SID=yaxj^'))(CONNECT_DATA=(SID=yaxj))) as sysdba\" point_in_time_recover=
y tablespaces=
DATACNT_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 DATACNT_TEST online";
sql "alter tablespace DATACNT_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 星期四 3月 18 13:39:34 2010
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 字符集
注: 將不匯出表資料 (行)
即將匯出表空間時間點恢復物件...
對於表空間 DATACNT_TEST...
. 正在匯出簇定義
. 正在匯出表定義
. . 正在匯出表 TTEST
. 正在匯出引用完整性約束條件
. 正在匯出觸發器
. 終止時間點恢復
成功終止匯出, 沒有出現警告。
主機命令完成
資料庫已關閉
資料庫已解除安裝
Oracle 例項已關閉
Import: Release 10.2.0.1.0 - Production on 星期四 3月 18 13:39:58 2010
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
. 正在將 CUSTOMER21 的物件匯入到 CUSTOMER21
. . 正在匯入表 "TTEST"
. 正在將 SYS 的物件匯入到 SYS
成功終止匯入, 沒有出現警告。
主機命令完成
sql 語句: alter tablespace DATACNT_TEST online
sql 語句: alter tablespace DATACNT_TEST offline
sql 語句: begin dbms_backup_restore.AutoBackupFlag(TRUE); end;
刪除自動例項
自動例項已刪除
已刪除輔助例項檔案 C:\AUXILIARY\CNTRL_TSPITR_ORCL_YAXJ.F
已刪除輔助例項檔案 C:\AUXILIARY\TSPITR_O\DATAFILE\O1_MF_SYSTEM_5T3GZTN2_.DBF
已刪除輔助例項檔案 C:\AUXILIARY\TSPITR_O\DATAFILE\O1_MF_UNDOTBS1_5T3GZTSX_.DBF
已刪除輔助例項檔案 C:\AUXILIARY\TSPITR_O\DATAFILE\O1_MF_TEMP_5T3H49K4_.TMP
已刪除輔助例項檔案 C:\AUXILIARY\TSPITR_O\ONLINELOG\O1_MF_1_5T3H3XNK_.LOG
已刪除輔助例項檔案 C:\AUXILIARY\TSPITR_O\ONLINELOG\O1_MF_2_5T3H3ZYB_.LOG
已刪除輔助例項檔案 C:\AUXILIARY\TSPITR_O\ONLINELOG\O1_MF_3_5T3H423H_.LOG
完成 recover 於 18-3月 -10
還原成功;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/500314/viewspace-1151832/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle TSPITR with IOTOracle
- ORACLE TSPITR 介紹Oracle
- TSPITR測試!
- Oracle RMAN實現“一鍵式”表空間TSPITROracle
- Oracle表空間時間點恢復技術TSPITROracle
- Oracle OCP 1Z0 053 Q370(TSPITR)Oracle
- 利用RMAN做TSPITR
- RMAN全自動TSPITR
- ORACLE 11g TSPITR恢復被刪除的表空間Oracle
- RMAN: Tablespace Point In Time Recovery (TSPITR)
- Backup And Recovery User's Guide-TSPITR 約束、特定情形、限制-TSPITR的限制GUIIDE
- oracle小知識點10--表空間時間點恢復(TSPITR)Oracle
- Enhanced Tablespace Point-In-Time Recovery (TSPITR)
- 表空間TSPITR恢復-實驗
- 根據表空間的TSPITR恢復
- Backup And Recovery User's Guide-RMAN TSPITR模型GUIIDE模型
- 實戰10g新特性之RMAN TSPITR特性
- 利用rman的TSPITR技術找回刪除的表!
- [20170627]使用TSPITR恢復表空間.txt
- 對刪除分割槽的分割槽表執行TSPITR
- 對分割槽表的部分分割槽執行TSPITR
- TSPITR方式資料庫找回誤操作丟失的資料資料庫
- Backup And Recovery User's Guide-RMAN TSPITR的基本概念GUIIDE
- Backup And Recovery User's Guide-TSPITR 約束、特定情形、限制GUIIDE
- 【RMAN】表空間基於時間點的RMAN恢復-TSPITR
- Automatic TSPITR in 10G RMAN -A walk Through (Doc ID 335851.1)
- Backup And Recovery User's Guide-執行完全自動的RMAN TSPITRGUIIDE
- Backup And Recovery User's Guide-為TSPITR做計劃和準備GUIIDE
- 【TSPITR】RMAN表空間基於時間點的自動恢復
- 預設undo表空間變更後執行TSPITR要注意的問題
- Oracle 10g備份與恢復高階使用者指南--第八章 RMAN表空間時間點恢復(TSPITR)Oracle 10g
- 筆記-backup and recovery-第二十一章 表空間基於時間點的恢復(TSPITR).txt筆記
- oracle DBLink oracleOracle
- Oracle 中$ORACLE_HOME/bin/oracle檔案Oracle
- oracle 修改ORACLE例項Oracle
- oracle安裝工具目錄常用解釋oracle wallet manager/Oracle Directory Manager /oracle net manager /Oracle Net ManagOracle
- ORACLE基礎之oracle鎖(oracle lock mode)詳解Oracle
- 【Oracle】oracle tablespace&datafile -- oracle表空間 分享[轉]Oracle