TSPITR表空间基于时间点的恢复

0    283    1

Tags:

👉 本文共约22511个字,系统预计阅读时间或需85分钟。

前言部分

导读

各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,\~O(∩_∩)O\~:

① TSPITR表空间基于时间点的自动恢复

② logminer的简单应用

实验环境介绍

目标库: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>

本文简介

OCP考完已经接近快1年了,本来TSPITR是属于OCP的内容,应该早把这个实验做了,可是由于各种原因一直没有做这个实验,上周CUUG的公开课上讲的就是TSPITR的相关内容,好吧,借着周末就把这个实验做了吧,blog后也附上了一些与OCP有关的试题,用于网友自测。

TSPITR的相关知识点归纳

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 表空间的备分文件。

何时使用TSPITR

• TSPITR 可在下列情况下使用:

– 恢复因错误的TRUNCATE TABLE语句而丢失的数据

– 从表逻辑损坏中恢复

– 撤消只影响部分数据库的批作业或DML 语句的结果

– 将逻辑方案恢复到与物理数据库其余部分不同的时间点

• TSPITR 使用可移动表空间和数据泵,提供了以下新功能和特性:

– TSPITR 可用于恢复已删除的表空间

– 可反复执行TSPITR 恢复到表空间联机之前的多个时间点,而无需使用恢复目录

在Oracle Database 11g发行版2 之前,TSPITR 使用导出和导入进行处理。TSPITR 现在使用可移动表空间和数据泵。由于底层技术的这一变化,现在可使用TSPITR 来恢复已删除的表空间。此外,可反复执行TSPITR 恢复到不同的时间点,而无需使用恢复目录。

实验部分

源库做备份操作

[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>

建立测试表并做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号日志中。

采用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

执行TSPITR之前的检查

检查是否自包含

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>

至此,自包含问题已解决。

检查哪些对象执行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]\$

执行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(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复