合 【TSPITR】RMAN表空间基于时间点的自动恢复
Tags: Oracle
- 1.2.2 实验环境介绍
- 1.2.3 本文简介
- 1.3 TSPITR**的相关知识点归纳**
- 1.3.1 TSPITR**简介**
- 1.3.2 何时使用**TSPITR**
- 1.4 实验部分
- 1.4.1 源库做备份操作
- 1.4.2 建立测试表并做**truncate**误操作
- 1.4.3 采用**logminer**找回误删除的时间点
- 1.4.4 执行**TSPITR**之前的检查
- 1.4.4.1 检查是否自包含
- 1.4.4.2 检查哪些对象执行**TSPITR**后将被删除
- 1.4.5 执行**TSPITR**
- 1.4.6 online**表空间并且导入丢失的对象**
- 1.5 与**TSPITR有关的OCP**试题部分
- 1.6 总结
- 1.7 RMAN**系列参考文章**
1.2.2 实验环境介绍
目标库:11.2.0.3 RHEL6.5
ORACLE_SID: ora11g
[oracle@rhel6_lhr ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on 星期日 5月 24 15:19:35 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
15:19:35 SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
已用时间: 00: 00: 00.01
15:19:37 SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 36
下一个存档日志序列 38
当前日志序列 38
15:19:53 SQL>
15:20:37 SQL> show parameter name
NAME TYPE VALUE
db_file_name_convert string
db_name string ora11g
db_unique_name string ora11g
global_names boolean FALSE
instance_name string ora11g
lock_name_space string
log_file_name_convert string
processor_group_name string
service_names string ora11g
15:20:41 SQL>
1.2.3 本文简介
OCP考完已经接近快1年了,本来TSPITR是属于OCP的内容,应该早把这个实验做了,可是由于各种原因一直没有做这个实验,上周CUUG的公开课上讲的就是TSPITR的相关内容,好吧,借着周末就把这个实验做了吧,blog后也附上了一些与OCP有关的试题,用于网友自测。
关于TSPITR的视频参考::http://yunpan.cn/QCwUAI9bn7g7w 提取码:af2d
1.3 TSPITR**的相关知识点归纳**
1.3.1 TSPITR**简介**
TSPITR(表空间时间点恢复)用于将一个或多个表空间恢复到过去某个时间点的状态,而其他表空间仍然保持现有状态。
TSPITR 相关的概念和术语:
(1) TSPITR (Tablespace Point-In-Time Recover)。TSPITR 是表空间时间点恢复的英文缩写格式,它表示将一个或多个表空间恢复到过去时间点的状态,而其他表空间仍然保持现有状态。
(2) TSPITR 实现方法。当实现表空间时间点恢复时,既可以使用用户管理的表空间时间点恢复方法,也可以使用RMAN 管理的表空间时间点恢复。
(3) DBPITR (Database Point-In-Time Recovery)。DBPITR 是数据库时间点恢复的英文缩写格式,它表示将数据库的所有表空间恢复到过去时间点的状态。注意,DBPITR 只适用于ARCHIVELOG 模式。
(4) 主数据库(Primary Database)。主数据库是指用于存放应用系统数据的Oracle 数据库,也被称为产品数据库或目标数据库。当执行TSPITR 时,主数据库是指包含被恢复表空间的数据库。
(5) 恢复集(Recovery Set)。恢复集是指在主数据库上需要执行 TSPITR 的表空间集合。注意,当在恢复集的表空间上执行TSPITR 时,要求这些表空间必须是自包含的。
(6) 辅助数据库(Auxiliary Database)。辅助数据库是主数据库的一个副本数据库。当执行TSPITR 时,辅助数据库用于将恢复集表空间恢复到过去时间点。注意,辅助数据库的所有物理文件都是从主数据库备份中取得,并且辅助数据库必须包含SYSTEM 表空间、UNDO 表空间以及恢复集表空间的备份文件。
(7) 辅助集(Auxiliary Set)。辅助集是指辅助数据库所需要的、除了恢复集表空间文件之外的其他文件集合。当执行 TSPITR 时,辅助数据库除了需要恢复集表空间的备份文件之外,还需要备份控制文件、SYSTEM 表空间的备份文件、UNDO 表空间的备分文件。
1.3.2 何时使用**TSPITR**
? TSPITR 可在下列情况下使用:
– 恢复因错误的TRUNCATE TABLE语句而丢失的数据
– 从表逻辑损坏中恢复
– 撤消只影响部分数据库的批作业或DML 语句的结果
– 将逻辑方案恢复到与物理数据库其余部分不同的时间点
? TSPITR 使用可移动表空间和数据泵,提供了以下新功能和特性:
– TSPITR 可用于恢复已删除的表空间
– 可反复执行TSPITR 恢复到表空间联机之前的多个时间点,而无需使用恢复目录
在Oracle Database 11g发行版2 之前,TSPITR 使用导出和导入进行处理。TSPITR 现在使用可移动表空间和数据泵。由于底层技术的这一变化,现在可使用TSPITR 来恢复已删除的表空间。此外,可反复执行TSPITR 恢复到不同的时间点,而无需使用恢复目录。
1.4 实验部分
1.4.1 源库做备份操作
[oracle@rhel6_lhr ~]$ ORACLE_SID=ora11g
[oracle@rhel6_lhr ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on 星期日 5月 24 19:27:25 2015
Copyright (c) 1982, 2011, Oracle. All rights reserved.
已连接到空闲例程。
19:27:25 SQL> startup
ORACLE 例程已经启动。
Total System Global Area 409194496 bytes
Fixed Size 2228864 bytes
Variable Size 327159168 bytes
Database Buffers 71303168 bytes
Redo Buffers 8503296 bytes
数据库装载完毕。
数据库已经打开。
19:27:42 SQL> exit
从 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开
[oracle@rhel6_lhr ~]$ ORACLE_SID=ora11g
[oracle@rhel6_lhr ~]$ rman target /
恢复管理器: Release 11.2.0.3.0 - Production on 星期日 5月 24 19:36:47 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: ORA11G (DBID=4270446895)
RMAN> backup database;
启动 backup 于 2015-05-24 19:36:53
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=142 设备类型=DISK
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
输入数据文件: 文件号=00001 名称=/u01/app/oracle/oradata/ora11g/system01.dbf
输入数据文件: 文件号=00002 名称=/u01/app/oracle/oradata/ora11g/sysaux01.dbf
输入数据文件: 文件号=00005 名称=/u01/app/oracle/oradata/ora11g/example01.dbf
输入数据文件: 文件号=00003 名称=/u01/app/oracle/oradata/ora11g/undotbs01.dbf
输入数据文件: 文件号=00004 名称=/u01/app/oracle/oradata/ora11g/users01.dbf
输入数据文件: 文件号=00007 名称=/u01/app/oracle/oradata/ora11g/DWII_CNY_BK_F_01.dbf
输入数据文件: 文件号=00008 名称=/u01/app/oracle/oradata/ora11g/DWII_DPA_F_01.dbf
输入数据文件: 文件号=00009 名称=/u01/app/oracle/oradata/ora11g/DWII_DPA_I_01.dbf
输入数据文件: 文件号=00010 名称=/u01/app/oracle/oradata/ora11g/DWII_DPA_S_01.dbf
输入数据文件: 文件号=00011 名称=/u01/app/oracle/oradata/ora11g/DWII_SOR_F_01.dbf
输入数据文件: 文件号=00012 名称=/u01/app/oracle/oradata/ora11g/DWII_SOR_I_01.dbf
输入数据文件: 文件号=00013 名称=/u01/app/oracle/oradata/ora11g/DW_USER.dbf
输入数据文件: 文件号=00014 名称=/u01/app/oracle/oradata/ora11g/SQCHECK.dbf
输入数据文件: 文件号=00015 名称=/u01/app/oracle/oradata/ora11g/SD_CNY_D_01.dbf
输入数据文件: 文件号=00016 名称=/u01/app/oracle/oradata/ora11g/SD_CNY_F_01.dbf
输入数据文件: 文件号=00017 名称=/u01/app/oracle/oradata/ora11g/SD_DPA_D_01.dbf
输入数据文件: 文件号=00018 名称=/u01/app/oracle/oradata/ora11g/SD_DPA_F_01.dbf
输入数据文件: 文件号=00019 名称=/u01/app/oracle/oradata/ora11g/SD_SORT_T_01.dbf
输入数据文件: 文件号=00020 名称=/u01/app/oracle/oradata/ora11g/DWII_FXDM_F_01.dbf
输入数据文件: 文件号=00021 名称=/u01/app/oracle/oradata/ora11g/SD_SOR_T_01.dbf
输入数据文件: 文件号=00006 名称=/u01/app/oracle/oradata/ora11g/aa.dbf
通道 ORA_DISK_1: 正在启动段 1 于 2015-05-24 19:36:54
通道 ORA_DISK_1: 已完成段 1 于 2015-05-24 19:37:19
段句柄=/u01/app/oracle/flash_recovery_area/ORA11G/backupset/2015_05_24/o1_mf_nnndf_TAG20150524T193654bp3fypc1.bkp 标记=TAG20150524T193654 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25
完成 backup 于 2015-05-24 19:37:19
启动 Control File and SPFILE Autobackup 于 2015-05-24 19:37:19
段 handle=/u01/app/oracle/flash_recovery_area/ORA11G/autobackup/2015_05_24/o1_mf_s_880573039bp3fzhgy.bkp comment=NONE
完成 Control File and SPFILE Autobackup 于 2015-05-24 19:37:22
RMAN> list backupset;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
49 Full 1.18G DISK 00:00:20 2015-05-24 19:37:14
BP 关键字: 49 状态: AVAILABLE 已压缩: NO 标记: TAG20150524T193654
段名:/u01/app/oracle/flash_recovery_area/ORA11G/backupset/2015_05_24/o1_mf_nnndf_TAG20150524T193654bp3fypc1.bkp
备份集 49 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
1 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/system01.dbf
2 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/sysaux01.dbf
3 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/undotbs01.dbf
4 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/users01.dbf
5 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/example01.dbf
6 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/aa.dbf
7 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/DWII_CNY_BK_F_01.dbf
8 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/DWII_DPA_F_01.dbf
9 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/DWII_DPA_I_01.dbf
10 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/DWII_DPA_S_01.dbf
11 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/DWII_SOR_F_01.dbf
12 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/DWII_SOR_I_01.dbf
13 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/DW_USER.dbf
14 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/SQCHECK.dbf
15 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/SD_CNY_D_01.dbf
16 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/SD_CNY_F_01.dbf
17 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/SD_DPA_D_01.dbf
18 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/SD_DPA_F_01.dbf
19 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/SD_SORT_T_01.dbf
20 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/DWII_FXDM_F_01.dbf
21 Full 1596722 2015-05-24 19:36:54 /u01/app/oracle/oradata/ora11g/SD_SOR_T_01.dbf
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
50 Full 9.67M DISK 00:00:01 2015-05-24 19:37:20
BP 关键字: 50 状态: AVAILABLE 已压缩: NO 标记: TAG20150524T193719
段名:/u01/app/oracle/flash_recovery_area/ORA11G/autobackup/2015_05_24/o1_mf_s_880573039bp3fzhgy.bkp
包含的 SPFILE: 修改时间: 2015-05-24 19:27:36
SPFILE db_unique_name: ORA11G
包括的控制文件: Ckp SCN: 1596737 Ckp 时间: 2015-05-24 19:37:19
RMAN> report schema;
db_unique_name 为 ORA11G 的数据库的数据库方案报表
永久数据文件列表
===========================
文件大小 (MB) 表空间 回退段数据文件名称
1 770 SYSTEM *** /u01/app/oracle/oradata/ora11g/system01.dbf
2 580 SYSAUX *** /u01/app/oracle/oradata/ora11g/sysaux01.dbf
3 285 UNDOTBS1 *** /u01/app/oracle/oradata/ora11g/undotbs01.dbf
4 96 USERS *** /u01/app/oracle/oradata/ora11g/users01.dbf
5 345 EXAMPLE *** /u01/app/oracle/oradata/ora11g/example01.dbf
6 5 AA *** /u01/app/oracle/oradata/ora11g/aa.dbf
7 10 DWII_CNY_BK_F_01 *** /u01/app/oracle/oradata/ora11g/DWII_CNY_BK_F_01.dbf
8 10 DWII_DPA_F_01 *** /u01/app/oracle/oradata/ora11g/DWII_DPA_F_01.dbf
9 10 DWII_DPA_I_01 *** /u01/app/oracle/oradata/ora11g/DWII_DPA_I_01.dbf
10 10 DWII_DPA_S_01 *** /u01/app/oracle/oradata/ora11g/DWII_DPA_S_01.dbf
11 10 DWII_SOR_F_01 *** /u01/app/oracle/oradata/ora11g/DWII_SOR_F_01.dbf
12 10 DWII_SOR_I_01 *** /u01/app/oracle/oradata/ora11g/DWII_SOR_I_01.dbf
13 10 DW_USER *** /u01/app/oracle/oradata/ora11g/DW_USER.dbf
14 10 SQCHECK *** /u01/app/oracle/oradata/ora11g/SQCHECK.dbf
15 10 SD_CNY_D_01 *** /u01/app/oracle/oradata/ora11g/SD_CNY_D_01.dbf
16 10 SD_CNY_F_01 *** /u01/app/oracle/oradata/ora11g/SD_CNY_F_01.dbf
17 10 SD_DPA_D_01 *** /u01/app/oracle/oradata/ora11g/SD_DPA_D_01.dbf
18 10 SD_DPA_F_01 *** /u01/app/oracle/oradata/ora11g/SD_DPA_F_01.dbf
19 10 SD_SORT_T_01 *** /u01/app/oracle/oradata/ora11g/SD_SORT_T_01.dbf
20 10 DWII_FXDM_F_01 *** /u01/app/oracle/oradata/ora11g/DWII_FXDM_F_01.dbf
21 10 SD_SOR_T_01 *** /u01/app/oracle/oradata/ora11g/SD_SOR_T_01.dbf
临时文件列表
=======================
文件大小 (MB) 表空间 最大大小 (MB) 临时文件名称
1 83 TEMP 32767 /u01/app/oracle/oradata/ora11g/temp01.dbf
RMAN>
RMAN> list backupset summary;
备份列表
===============
关键字 TY LV S 设备类型 完成时间 段数 副本数 压缩标记
49 B F A DISK 2015-05-24 19:37:14 1 1 NO TAG20150524T193654
50 B F A DISK 2015-05-24 19:37:20 1 1 NO TAG20150524T193719
RMAN>
RMAN>
1.4.2 建立测试表并做**truncate**误操作
AA表空间下建立2个表,并建立一个索引在users表空间中,注意做误操作之前先切换一下日志。
19:38:44 SQL> alter system switch logfile;
系统已更改。
已用时间: 00: 00: 00.01
19:38:50 SQL> alter system switch logfile;
系统已更改。
已用时间: 00: 00: 00.01
19:38:54 SQL> CREATE TABLE LHR.TSPITR_TEST TABLESPACE AA AS SELECT * FROM SCOTT.EMP;
表已创建。
已用时间: 00: 00: 00.11
19:39:45 SQL> CREATE TABLE LHR.TSPITR_TEST1 TABLESPACE AA AS SELECT * FROM SCOTT.EMP where rownum<=2;
表已创建。
已用时间: 00: 00: 00.01
19:39:52 SQL> create index lhr.TSPITR_test_index on LHR.TSPITR_TEST(empno) tablespace users;
索引已创建。
已用时间: 00: 00: 00.00
19:39:58 SQL> select * from LHR.TSPITR_TEST ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30
7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30
7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10
7788 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 20
7839 KING PRESIDENT 1981-11-17 00:00:00 5000 10
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30
7876 ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20
7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 30
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
已选择14行。
已用时间: 00: 00: 00.05
19:40:16 SQL> alter system switch logfile;
系统已更改。
已用时间: 00: 00: 00.71
19:40:50 SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
1 1 64 52428800 512 1 YES INACTIVE 1596806 2015-05-24 19:38:50 1596809 2015-05-24 19:38:54
2 1 65 52428800 512 1 YES ACTIVE 1596809 2015-05-24 19:38:54 1596912 2015-05-24 19:40:50
3 1 66 52428800 512 1 NO CURRENT 1596912 2015-05-24 19:40:50 2.8147E+14
已用时间: 00: 00: 00.01
19:40:58 SQL> truncate table LHR.TSPITR_TEST ;
表被截断。
已用时间: 00: 00: 00.09
19:41:15 SQL>
19:41:15 SQL> select * from LHR.TEST_TSPITR;
未选定行
已用时间: 00: 00: 00.00
19:41:38 SQL>
19:41:38 SQL> select * from v$logfile;
GROUP# STATUS TYPE MEMBER
3 ONLINE /u01/app/oracle/oradata/ora11g/redo03.log
2 ONLINE /u01/app/oracle/oradata/ora11g/redo02.log
1 ONLINE /u01/app/oracle/oradata/ora11g/redo01.log
已用时间: 00: 00: 00.00
19:42:24 SQL>
19:42:24 SQL> CREATE TABLE LHR.TSPITR_TEST2 TABLESPACE AA AS SELECT * FROM SCOTT.EMP;
表已创建。
已用时间: 00: 00: 00.01
19:43:56 SQL> CREATE TABLE LHR.TSPITR_TEST3 TABLESPACE AA AS SELECT * FROM SCOTT.EMP;
表已创建。
已用时间: 00: 00: 00.02
19:44:04 SQL> CREATE TABLE LHR.TSPITR_TEST4 TABLESPACE AA AS SELECT * FROM SCOTT.EMP;
表已创建。
已用时间: 00: 00: 00.01
19:44:10 SQL>
这里可以看出执行误操作的时候sql的时间是19:41:15 左右,而且由于我们是测试库,没有什么用户操作,所以redo很少,从v$log中可以看出,误操作肯定在66号日志中。
1.4.3 采用**logminer**找回误删除的时间点
生产环境下为了尽量减少对数据的影响,我们需要准确定位到误操作的时间点,所以可以采用logminer来找回误操作的时间点,当然可以查询其他的视图来获取,但是都不是很准确,比如查询dba_objects中的LAST_DDL_TIME,dba_tab_modifications中的timestamp,也可以查询v$sql,可以根据情况来决定,但是logminer是通用的,也是很准确的,关于logminer本来也很早就想写了,一直没写,后边有机会再写吧,今天我们就暂时看看怎么使用它吧。
采用logminer来找回误操作的时间点:
19:44:10 SQL> execute dbms_logmnr.add_logfile('/u01/app/oracle/oradata/ora11g/redo03.log',dbms_logmnr.new);
PL/SQL 过程已成功完成。
已用时间: 00: 00: 00.08
19:45:02 SQL> exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
PL/SQL 过程已成功完成。
已用时间: 00: 00: 00.10
19:45:09 SQL> select a.SCN,a.TIMESTAMP,a.SQL_REDO from v$logmnr_contents A where table_name='TSPITR_TEST' and OPERATION='DDL' order by a.SCN;
SCN TIMESTAMP SQL_REDO
1596943 2015-05-24 19:41:15 truncate table LHR.TSPITR_TEST ;
已用时间: 00: 00: 00.26
19:45:23 SQL>
可以看出执行TRUNCATE的时间为2015-05-24 19:41:15, 我们恢复的时候恢复到19:41:00 。
1.4.4 执行**TSPITR**之前的检查
1.4.4.1 检查是否自包含
19:45:23 SQL> BEGIN
19:47:07 2 SYS.DBMS_TTS.TRANSPORT_SET_CHECK('AA', TRUE, TRUE);
19:47:07 3 END;
19:47:07 4 /
PL/SQL 过程已成功完成。
已用时间: 00: 00: 02.86
19:47:10 SQL> SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;
VIOLATIONS
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ORA-39907: 索引 LHR.TSPITR_TEST_INDEX (在表空间 USERS 中) 指向表 LHR.TSPITR_TEST (在表空间 AA 中)。
已用时间: 00: 00: 00.00
我们还可以这样去检查:
select *** from SYS.TS_PITR_CHECK a WHERE a.ts1_name='AA';**
说明,有一个索引 LHR..TSPITR_TEST_INDEX在users表空间中,那么我们删除这个索引,等待恢复完成后再重建该索引。
19:47:29 SQL> drop index LHR.TSPITR_TEST_INDEX;
索引已删除。
已用时间: 00: 00: 00.02
19:48:46 SQL> BEGIN
19:49:11 2 SYS.DBMS_TTS.TRANSPORT_SET_CHECK('AA', TRUE, TRUE);
19:49:11 3 END;
19:49:11 4 /
PL/SQL 过程已成功完成。
已用时间: 00: 00: 02.64
19:49:14 SQL> SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;
未选定行
已用时间: 00: 00: 00.00
19:49:20 SQL>
至此,自包含问题已解决。
1.4.4.2 检查哪些对象执行**TSPITR**后将被删除
select *** from SYS.TS_PITR_OBJECTS_TO_BE_DROPPED A WHERE a.tablespace_name='AA' and a.creation_time>='2015-05-24 19:41:00';**
则说明若执行TSPITR后,AA表空间中的表TSPITR_TEST2、TSPITR_TEST3、TSPITR_TEST4将被删除,那么为了保存这些对象我们将其利用expdp导出备份,等待tspitr执行完毕后再导入回来即可。
[oracle@rhel6_lhr ~]$ ORACLE_SID=ora11g
[oracle@rhel6_lhr ~]$ expdp lhr/lhr directory=DATA_PUMP_DIR dumpfile=exptable_tspitrlhr.dmp TABLES=TSPITR_TEST2,TSPITR_TEST3,TSPITR_TEST4 LOGFILE=exptable_tspitrlhr.log
Export: Release 11.2.0.3.0 - Production on 星期日 5月 24 19:53:34 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
启动 "LHR"."SYS_EXPORT_TABLE_01": lhr/**** directory=DATA_PUMP_DIR dumpfile=exptable_tspitrlhr.dmp TABLES=TSPITR_TEST2,TSPITR_TEST3,TSPITR_TEST4 LOGFILE=exptable_tspitrlhr.log
正在使用 BLOCKS 方法进行估计...
处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的总估计: 192 KB
处理对象类型 TABLE_EXPORT/TABLE/TABLE
. . 导出了 "LHR"."TSPITR_TEST2" 8.570 KB 14 行
. . 导出了 "LHR"."TSPITR_TEST3" 8.570 KB 14 行
. . 导出了 "LHR"."TSPITR_TEST4" 8.570 KB 14 行
已成功加载/卸载了主表 "LHR"."SYS_EXPORT_TABLE_01"
LHR.SYS_EXPORT_TABLE_01 的转储文件集为:
/u01/app/oracle/admin/ora11g/dpdump/exptable_tspitrlhr.dmp
作业 "LHR"."SYS_EXPORT_TABLE_01" 已于 19:53:39 成功完成
[oracle@rhel6_lhr ~]$
[oracle@rhel6_lhr ~]$ cd /u01/app/oracle/admin/ora11g/dpdump
[oracle@rhel6_lhr dpdump]$ ll -h
total 69M
-rw-r----- 1 oracle asmadmin 116 Mar 13 14:24 dp.log
-rw-r----- 1 oracle asmadmin 144K May 24 19:53 exptable_tspitrlhr.dmp
-rw-r--r-- 1 oracle asmadmin 1.2K May 24 19:53 exptable_tspitrlhr.log
-rw-r--r-- 1 oracle asmadmin 4.1K May 19 15:59 imp_exptest.log
-rwxr-xr-x 1 oracle oinstall 69M May 19 15:50 lhrsql20150515.dmp
[oracle@rhel6_lhr dpdump]$
1.4.5 执行**TSPITR**
RMAN> RECOVER TABLESPACE AA UNTIL time "to_date('2015-05-24 19:41:00','YYYY-MM-DD HH24:mi:ss')" auxiliary destination '/u01/auxdest';
启动 recover 于 2015-05-24 19:57:30
使用通道 ORA_DISK_1
RMAN-05026: 警告: 假定以下表空间集适用于指定的时间点
表空间列表要求具有 UNDO 段
表空间 SYSTEM
表空间 UNDOTBS1
使用 SID='lsll' 创建自动实例
供自动实例使用的初始化参数:
db_name=ORA11G
db_unique_name=lsll_tspitr_ORA11G
compatible=11.2.0.0.0
db_block_size=8192
db_files=200
sga_target=280M
processes=50
db_create_file_dest=/u01/auxdest
log_archive_dest_1='location=/u01/auxdest'
#No auxiliary parameter file used
启动自动实例 ORA11G
Oracle 实例已启动
系统全局区域总计 292278272 字节
Fixed Size 2227744 字节
Variable Size 100663776 字节
Database Buffers 184549376 字节
Redo Buffers 4837376 字节
自动实例已创建
对恢复集表空间运行 TRANSPORT_SET_CHECK
TRANSPORT_SET_CHECK 已成功完成
内存脚本的内容:
{
# set requested point in time
set until time "to_date('2015-05-24 19:41:00','YYYY-MM-DD HH24:mi:ss')";
# restore the controlfile