网站 建设 语言,wordpress增加背景图片,专业seo服务商,珠海手机网站制作一、TSPITR介绍 TSPITR全称是Tablespace Point In Time Recover#xff08;表空间基于时间点的不完全恢复#xff09;。原理是通过辅助实例基于时间还原出误操作前的数据通过DataPump将数据导入到目标数据库。TSPITR的最大好处是不需要生产库停机。 二、适用场景 表空间时点恢… 一、TSPITR介绍 TSPITR全称是Tablespace Point In Time Recover表空间基于时间点的不完全恢复。原理是通过辅助实例基于时间还原出误操作前的数据通过DataPump将数据导入到目标数据库。TSPITR的最大好处是不需要生产库停机。 二、适用场景 表空间时点恢复适用用以下场景 ①错误的批处理作业或数据操作语言DML ②恢复数据定义语言DDL后丢失的数据操作改变表的结构。不能使用闪回表将表倒回结构更改点之前例如截断表(truncate)操作。 ③恢复drop时使用了purge选项的表 ④恢复存在逻辑错误的表 ⑤恢复被删除的表空间RMAN可以在被drop的表空间上面执行TSPITR ⑥与全库级别闪回相比表空间时点恢复停留在表空间级别影响较全库闪回较小。其次数据库闪回功能需要承担维护闪回日志开启的相关性能开销。 三、TSPITR前提 1、有一套有效全库备份因为TSPITR这个过程除了复制需要恢复的表空间外也必须复制systemsysaux和undo表空间2、需要回复的表空间需要自包含可以通过TS_PITR_CHECK视图查看自包含信息。表空间上存在约束关系(依赖)表的情形依赖关系所在的表空间也需要一同做时点恢复(如外键参照不在同一时点则违反参照约束)3、对于索引与数据分离的表空间在时点恢复时应先删除索引4、不能恢复数据库当前的缺省表空间5、不能恢复以下对象 ①存在依赖关系的物化视图分区表等(如果要恢复先解决依赖) ②undo表空间undo段 ③sys模式下的对象(如PL/SQLviews, synonyms, users…) 四、测试过程 1、对全库做一个全备之前做过全库备份并且有效这步可以忽略 RMAN backup database format /u01/rman_bak/all_db_%U.bak;启动 backup 于 2018-07-29 19:19:31
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号00001 名称/u01/app/oracle/oradata/vbox66db/system01.dbf
输入数据文件: 文件号00002 名称/u01/app/oracle/oradata/vbox66db/sysaux01.dbf
输入数据文件: 文件号00003 名称/u01/app/oracle/oradata/vbox66db/undotbs01.dbf
输入数据文件: 文件号00004 名称/u01/app/oracle/oradata/vbox66db/users01.dbf
输入数据文件: 文件号00005 名称/u01/app/oracle/oradata/vbox66db/test01.dbf
通道 ORA_DISK_1: 正在启动段 1 于 2018-07-29 19:19:31
通道 ORA_DISK_1: 已完成段 1 于 2018-07-29 19:21:37
段句柄/u01/rman_bak/all_db_0kt98563_1_1.bak 标记TAG20180729T191931 注释NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:02:06
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 2018-07-29 19:21:44
通道 ORA_DISK_1: 已完成段 1 于 2018-07-29 19:21:45
段句柄/u01/rman_bak/all_db_0lt985a1_1_1.bak 标记TAG20180729T191931 注释NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup 于 2018-07-29 19:21:45RMAN 2、创建一个测试表空间 ①创建testdb表空间 SYSvbox66increate tablespace testdb datafile /u01/app/oracle/oradata/vbox66db/testdb01.dbf size 100M autoextend on;表空间已创建。SYSvbox66inselect name from v$datafile;NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/vbox66db/system01.dbf
/u01/app/oracle/oradata/vbox66db/sysaux01.dbf
/u01/app/oracle/oradata/vbox66db/undotbs01.dbf
/u01/app/oracle/oradata/vbox66db/users01.dbf
/u01/app/oracle/oradata/vbox66db/test01.dbf
/u01/app/oracle/oradata/vbox66db/testdb01.dbf已选择6行。SYSvbox66inSYSvbox66inalter user scott default tablespace testdb;用户已更改。②创建测试表 SCOTTvbox66increate table test01 tablespace testdb as select * from emp;表已创建。SCOTTvbox66increate table test02 tablespace testdb as select * from dept;表已创建。
SCOTTvbox66inalter table test01 add primary key(empno);表已更改。SCOTTvbox66inalter table test02 add primary key(deptno);表已更改。SCOTTvbox66inalter table test01 add constraints test01_fk foreign key(deptno) references test02(deptno);表已更改。SCOTTvbox66inSCOTTvbox66incommit;提交完成。SCOTTvbox66in③RMAN备份testdb表空间 RMAN backup tablespace testdb format /u01/rman_bak/testdb_%U.bak;启动 backup 于 2018-07-29 21:01:53
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号00006 名称/u01/app/oracle/oradata/vbox66db/testdb01.dbf
通道 ORA_DISK_1: 正在启动段 1 于 2018-07-29 21:01:53
通道 ORA_DISK_1: 已完成段 1 于 2018-07-29 21:01:54
段句柄/u01/rman_bak/testdb_0mt98b61_1_1.bak 标记TAG20180729T210153 注释NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup 于 2018-07-29 21:01:54RMAN ④取当前时间以便之后还原时用 SCOTTvbox66inselect sysdate from dual;SYSDATE
-------------------
2018-07-29 21:03:31SCOTTvbox66in⑤误操作删除表test01、test02数据这里是测试 SCOTTvbox66intruncate table test02;表被截断。SCOTTvbox66intruncate table test01;表被截断。SCOTTvbox66inselect * from test01;未选定行SCOTTvbox66inselect * from test02;未选定行SCOTTvbox66in ⑥建立目录指定辅助库目标 [oraclevbox66 ~]$ mkdir -p /tmp/auxdata
[oraclevbox66 ~]$ ll /tmp/auxdata/
总计 0
[oraclevbox66 ~]$ ll -d /tmp/auxdata/
drwxr-xr-x 2 oracle oinstall 4096 07-29 21:16 /tmp/auxdata/ ⑦做RMAN TSPITR 并指定辅助库目的地 RMAN recover tablespace testdb until time 2018-07-29 22:11:35 auxiliary destination /tmp/auxdata; //这个时间和上面记录的有点出入因为期间修改过一次道理上一致
启动 recover 于 2018-07-29 22:15:28
使用通道 ORA_DISK_1
RMAN-05026: 警告: 假定以下表空间集适用于指定的时间点表空间列表要求具有 UNDO 段
表空间 SYSTEM
表空间 UNDOTBS1使用 SIDFcny 创建自动实例供自动实例使用的初始化参数:
db_nameVBOX66DB
db_unique_nameFcny_tspitr_VBOX66DB
compatible11.2.0.4.0
db_block_size8192
db_files200
sga_target1G
processes80
db_create_file_dest/tmp/auxdata
log_archive_dest_1location/tmp/auxdata
#No auxiliary parameter file used启动自动实例 VBOX66DBOracle 实例已启动系统全局区域总计 1068937216 字节Fixed Size 2260088 字节
Variable Size 281019272 字节
Database Buffers 780140544 字节
Redo Buffers 5517312 字节
自动实例已创建
对恢复集表空间运行 TRANSPORT_SET_CHECK
TRANSPORT_SET_CHECK 已成功完成内存脚本的内容:
{
# set requested point in time
set until time 2018-07-29 22:11:35;
# restore the controlfile
restore clone controlfile;
# mount the controlfile
sql clone alter database mount clone database;
# archive current online log
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 于 2018-07-29 22:15:43
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: SID19 设备类型DISK通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
通道 ORA_AUX_DISK_1: 正在还原控制文件
通道 ORA_AUX_DISK_1: 正在读取备份片段 /u01/rman_bak/full_db_0pt98f62_1_1.bak
通道 ORA_AUX_DISK_1: 段句柄 /u01/rman_bak/full_db_0pt98f62_1_1.bak 标记 TAG20180729T220804
通道 ORA_AUX_DISK_1: 已还原备份片段 1
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:01
输出文件名/tmp/auxdata/VBOX66DB/controlfile/o1_mf_fovm0jqt_.ctl
完成 restore 于 2018-07-29 22:15:45sql 语句: alter database mount clone databasesql 语句: alter system archive log currentsql 语句: begin dbms_backup_restore.AutoBackupFlag(FALSE); end;内存脚本的内容:
{
# set requested point in time
set until time 2018-07-29 22:11:35;
plsql -- tspitr_2
declaresqlstatement varchar2(512);offline_not_needed exception;pragma exception_init(offline_not_needed, -01539);
beginsqlstatement : alter tablespace || TESTDB || offline immediate;krmicd.writeMsg(6162, sqlstatement);krmicd.execSql(sqlstatement);
exceptionwhen offline_not_needed thennull;
end; ;
# set destinations for recovery set and auxiliary set datafiles
set newname for clone datafile 1 to new;
set newname for clone datafile 3 to new;
set newname for clone datafile 2 to new;
set newname for clone tempfile 1 to new;
set newname for datafile 6 to /u01/app/oracle/oradata/vbox66db/testdb01.dbf;
# switch all tempfiles
switch clone tempfile all;
# restore the tablespaces in the recovery set and the auxiliary set
restore clone datafile 1, 3, 2, 6;
switch clone datafile all;
}
正在执行内存脚本正在执行命令: SET until clausesql 语句: alter tablespace TESTDB offline immediate正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME正在执行命令: SET NEWNAME临时文件 1 在控制文件中已重命名为 /tmp/auxdata/VBOX66DB/datafile/o1_mf_temp_%u_.tmp启动 restore 于 2018-07-29 22:15:56
使用通道 ORA_AUX_DISK_1通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_AUX_DISK_1: 将数据文件 00001 还原到 /tmp/auxdata/VBOX66DB/datafile/o1_mf_system_%u_.dbf
通道 ORA_AUX_DISK_1: 将数据文件 00003 还原到 /tmp/auxdata/VBOX66DB/datafile/o1_mf_undotbs1_%u_.dbf
通道 ORA_AUX_DISK_1: 将数据文件 00002 还原到 /tmp/auxdata/VBOX66DB/datafile/o1_mf_sysaux_%u_.dbf
通道 ORA_AUX_DISK_1: 将数据文件 00006 还原到 /u01/app/oracle/oradata/vbox66db/testdb01.dbf
通道 ORA_AUX_DISK_1: 正在读取备份片段 /u01/rman_bak/full_db_0ot98f25_1_1.bak
通道 ORA_AUX_DISK_1: 段句柄 /u01/rman_bak/full_db_0ot98f25_1_1.bak 标记 TAG20180729T220804
通道 ORA_AUX_DISK_1: 已还原备份片段 1
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:02:25
完成 restore 于 2018-07-29 22:18:21数据文件 1 已转换成数据文件副本
输入数据文件副本 RECID4 STAMP982793902 文件名/tmp/auxdata/VBOX66DB/datafile/o1_mf_system_fovm0ws4_.dbf
数据文件 3 已转换成数据文件副本
输入数据文件副本 RECID5 STAMP982793902 文件名/tmp/auxdata/VBOX66DB/datafile/o1_mf_undotbs1_fovm0wsx_.dbf
数据文件 2 已转换成数据文件副本
输入数据文件副本 RECID6 STAMP982793902 文件名/tmp/auxdata/VBOX66DB/datafile/o1_mf_sysaux_fovm0wsb_.dbf内存脚本的内容:
{
# set requested point in time
set until time 2018-07-29 22:11:35;
# online the datafiles restored or switched
sql clone alter database datafile 1 online;
sql clone alter database datafile 3 online;
sql clone alter database datafile 2 online;
sql clone alter database datafile 6 online;
# recover and open resetlogs
recover clone database tablespace TESTDB, SYSTEM, UNDOTBS1, SYSAUX delete archivelog;
alter clone database open resetlogs;
}
正在执行内存脚本正在执行命令: SET until clausesql 语句: alter database datafile 1 onlinesql 语句: alter database datafile 3 onlinesql 语句: alter database datafile 2 onlinesql 语句: alter database datafile 6 online启动 recover 于 2018-07-29 22:18:22
使用通道 ORA_AUX_DISK_1正在开始介质的恢复线程 1 序列 22 的归档日志已作为文件 /u01/app/oracle/oradata/arch/1_22_974146828.dbf 存在于磁盘上
归档日志文件名/u01/app/oracle/oradata/arch/1_22_974146828.dbf 线程1 序列22
介质恢复完成, 用时: 00:00:02
完成 recover 于 2018-07-29 22:18:25数据库已打开内存脚本的内容:
{
# make read only the tablespace that will be exported
sql clone alter tablespace TESTDB read only;
# create directory for datapump import
sql create or replace directory TSPITR_DIROBJ_DPDIR as
/tmp/auxdata;
# create directory for datapump export
sql clone create or replace directory TSPITR_DIROBJ_DPDIR as
/tmp/auxdata;
}
正在执行内存脚本sql 语句: alter tablespace TESTDB read onlysql 语句: create or replace directory TSPITR_DIROBJ_DPDIR as /tmp/auxdatasql 语句: create or replace directory TSPITR_DIROBJ_DPDIR as /tmp/auxdata正在执行元数据导出...EXPDP 启动 SYS.TSPITR_EXP_Fcny: EXPDP 处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLKEXPDP 处理对象类型 TRANSPORTABLE_EXPORT/TABLEEXPDP 处理对象类型 TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINTEXPDP 处理对象类型 TRANSPORTABLE_EXPORT/INDEX_STATISTICSEXPDP 处理对象类型 TRANSPORTABLE_EXPORT/CONSTRAINT/REF_CONSTRAINTEXPDP 处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLKEXPDP 已成功加载/卸载了主表 SYS.TSPITR_EXP_Fcny EXPDP ******************************************************************************EXPDP SYS.TSPITR_EXP_Fcny 的转储文件集为:EXPDP /tmp/auxdata/tspitr_Fcny_42764.dmpEXPDP ******************************************************************************EXPDP 可传输表空间 TESTDB 所需的数据文件:EXPDP /u01/app/oracle/oradata/vbox66db/testdb01.dbfEXPDP 作业 SYS.TSPITR_EXP_Fcny 已于 星期日 7月 29 22:20:31 2018 elapsed 0 00:01:15 成功完成
导出完毕内存脚本的内容:
{
# shutdown clone before import
shutdown clone immediate
# drop target tablespaces before importing them back
sql drop tablespace TESTDB including contents keep datafiles cascade constraints;
}
正在执行内存脚本数据库已关闭
数据库已卸装
Oracle 实例已关闭sql 语句: drop tablespace TESTDB including contents keep datafiles cascade constraints正在执行元数据导入...IMPDP 已成功加载/卸载了主表 SYS.TSPITR_IMP_Fcny IMPDP 启动 SYS.TSPITR_IMP_Fcny: IMPDP 处理对象类型 TRANSPORTABLE_EXPORT/PLUGTS_BLKIMPDP 处理对象类型 TRANSPORTABLE_EXPORT/TABLEIMPDP 处理对象类型 TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINTIMPDP 处理对象类型 TRANSPORTABLE_EXPORT/INDEX_STATISTICSIMPDP 处理对象类型 TRANSPORTABLE_EXPORT/CONSTRAINT/REF_CONSTRAINTIMPDP 处理对象类型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLKIMPDP 作业 SYS.TSPITR_IMP_Fcny 已于 星期日 7月 29 22:21:27 2018 elapsed 0 00:00:10 成功完成
导入完毕内存脚本的内容:
{
# make read write and offline the imported tablespaces
sql alter tablespace TESTDB read write;
sql alter tablespace TESTDB offline;
# enable autobackups after TSPITR is finished
sql begin dbms_backup_restore.AutoBackupFlag(TRUE); end;;
}
正在执行内存脚本sql 语句: alter tablespace TESTDB read writesql 语句: alter tablespace TESTDB offlinesql 语句: begin dbms_backup_restore.AutoBackupFlag(TRUE); end;删除自动实例
自动实例已删除
已删除辅助实例文件 /tmp/auxdata/VBOX66DB/datafile/o1_mf_temp_fovm638r_.tmp
已删除辅助实例文件 /tmp/auxdata/VBOX66DB/onlinelog/o1_mf_3_fovm5vqb_.log
已删除辅助实例文件 /tmp/auxdata/VBOX66DB/onlinelog/o1_mf_2_fovm5p7q_.log
已删除辅助实例文件 /tmp/auxdata/VBOX66DB/onlinelog/o1_mf_1_fovm5krt_.log
已删除辅助实例文件 /tmp/auxdata/VBOX66DB/datafile/o1_mf_sysaux_fovm0wsb_.dbf
已删除辅助实例文件 /tmp/auxdata/VBOX66DB/datafile/o1_mf_undotbs1_fovm0wsx_.dbf
已删除辅助实例文件 /tmp/auxdata/VBOX66DB/datafile/o1_mf_system_fovm0ws4_.dbf
已删除辅助实例文件 /tmp/auxdata/VBOX66DB/controlfile/o1_mf_fovm0jqt_.ctl
完成 recover 于 2018-07-29 22:21:32RMAN ⑧查看表的数据 SYSvbox66inalter tablespace testdb online;表空间已更改。SYSvbox66inconn scott/tiger;
已连接。
SCOTTvbox66inselect * from test01;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 207499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 307521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 307566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 207654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 307698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 307782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 107788 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 207839 KING PRESIDENT 1981-11-17 00:00:00 5000 107844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 307876 ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 307902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 207934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10已选择14行。SCOTTvbox66inselect * from test02;DEPTNO DNAME LOC
---------- -------------- -------------10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTONSCOTTvbox66in此时发现数据已经全部恢复。