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 <<<-- tspitr_2
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
还原成功;
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 <<<-- tspitr_2
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
还原成功;
相关推荐
TSPITR是Oracle数据库恢复技术中的一项高级特性,它允许我们把一个或多个表空间恢复到数据库中其他部分所处时间点的过去状态,而不影响数据库的其他部分。这种技术特别适用于以下场景:如果某个表空间遭到破坏或者...
5. 表空间时间点的不完全恢复(TSPITR): TSPITR允许恢复单个表空间到特定时间点。这涉及表空间的备份、截断、删除和恢复,以及对表数据的验证。 6. 表级恢复: 对于特定表的恢复,可以定位到表的备份,然后恢复...
此外,从 Oracle 之后的新版本中引入了基于表空间的时间点恢复(TSPITR),可以单独将包含错误操作的表空间恢复到指定时间,而不必对整个数据库进行不完全恢复。 在存储设备失败的情况下,需要对 Oracle 数据库所...
TSPITR(Tablespace Point-in-Time Recovery)是基于时间点的表空间恢复,允许用户恢复到某个特定的时间点,避免丢失部分事务。 5. **RAC (Real Application Clusters)**:这是Oracle的集群数据库技术,文档涉及了...
5.3 管理表空间中的空间 156 5.3.1 区间管理 157 5.3.2 管理段空间 158 5.4 本章知识点回顾 159 5.5 自测题 160 5.6 自测题答案 162 第6章 Oracle安全性 165 6.1 创建和管理数据库用户账户 166 6.1.1 用户...
5.3 管理表空间中的空间 156 5.3.1 区间管理 157 5.3.2 管理段空间 158 5.4 本章知识点回顾 159 5.5 自测题 160 5.6 自测题答案 162 第6章 Oracle安全性 165 6.1 创建和管理数据库用户账户 166 6.1.1 用户...
合理的策略可以有效节省存储空间,缩短恢复时间。 5. **归档日志备份**:对于归档日志模式运行的数据库,备份归档日志是必要的,以便在需要时能够完全恢复到任何时间点。 6. **自动备份**:RMAN可以通过`RMAN_...
- **选项C**: 执行表空间时间点恢复 (TSPITR): 可行,能够将包含 `emp` 表的表空间恢复到某个时间点。 - **选项D**: Flashback Transaction Backout: 不适用于此场景,因为它只能撤销特定事务。 - **选项E**: ...