数据库版本:Oracle 12.2.0.1

本篇为《执行PDB的PITR恢复失败的说明 (文档 ID 2435452.1)》的证明篇,通过当前控制文件,无法在PDB级别进行PITR(Point In Time Recovery)恢复出被DROP的表空间,因为当前控制文件没有记录该表空间(数据文件),必须想办法对控制文件下手,但是控制文件是CDB共享的,意味着将要影响所有数据库。具体是否要通过恢复控制文件副本(或手工重建),根据实际情况自行决定。

官方给出的意见是用目录库进行恢复。在不动控制文件的前提下,本试验采用 Catalogue 看是否能对 PDB 级别进行 PITR - 恢复出被DROP的表空间。

目录

1. 创建恢复目录

2. 创建表空间

3. 执行全备

4. 删除表空间

5. 执行PDB PITR

1. 创建恢复目录库(Recovery Catalog)

CDB2 创建表空间

SQL> create tablespace rmanbak datafile '/u01/app/oracle/oradata/CDB2/rmanbak01.dbf' size 10m;

Tablespace created.

CDB2 创建用户

SQL> create user c##rmanbak identified by rmanbak default tablespace rmanbak;

User created.

CDB2 用户授权

SQL> grant dba,recovery_catalog_owner to c##rmanbak;

Grant succeeded.

连接 CDB2 创建 Catalog

[oracle@henry ~]$ rman target sys/oracle@cdb catalog c##rmanbak/rmanbak@cdb2

Recovery Manager: Release 12.2.0.1.0 - Production on Sun Aug 4 12:27:01 2019

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.

connected to target database: CDBOCP (DBID=357991829)
connected to recovery catalog database RMAN> create catalog tablespace rmanbak; recovery catalog created

CDB2 上注册 CDB 数据库

RMAN> register database;

database registered in recovery catalog
starting full resync of recovery catalog
full resync complete

2. 创建表空间

CDBOCP:PDB1 上创建表空间

SQL> show pdbs

    CON_ID CON_NAME  OPEN MODE  RESTRICTED
---------- --------- ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO

SQL> alter session set container=pdb1; Session altered. SQL> select name from v$datafile; SQL> create tablespace askscuti datafile '/u01/app/oracle/oradata/CDBOCP/PDB1/askscuti01.dbf' size 10m; Tablespace created.

CDBOCP 切日志生归档

SQL> conn / as sysdba
Connected.
SQL> alter system switch logfile; System altered. SQL> / System altered. SQL> / System altered.

3. 执行全备

CDB2 目录库执行备份

RMAN> backup database format '/u01/app/oracle/backup/%s_%t_%U.full' tag='scuti';

4. 删除表空间

删除 CDBOCP:PDB1 上创建的表空间

SQL> alter session set container=pdb1;

Session altered.

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
7746014 SQL> drop tablespace askscuti including contents and datafiles; Tablespace dropped.

5. 执行PDB PITR

关闭 CDBOCP:PDB1数据库;

连接 CDB2 目录库进行时间点恢复。

SQL> alter pluggable database pdb1 close immediate;

Pluggable database altered.

RMAN> run{
set until scn 7746014;
restore pluggable database pdb1;
recover pluggable database pdb1 auxiliary destination='/u01/app/oracle/au';
alter pluggable database pdb1 open resetlogs;
}

过程选段(44号物理数据文件被 Restore 出来

...
...
...
channel ORA_DISK_1: restoring datafile 00038 to /u01/app/oracle/oradata/CDBOCP/bbb01.dbf
channel ORA_DISK_1: restoring datafile 00043 to /u01/app/oracle/oradata/CDBOCP/PDB1/rman01.dbf
channel ORA_DISK_1: restoring datafile 00044 to /u01/app/oracle/oradata/CDBOCP/PDB1/askscuti01.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/backup/259_1015418683_83u8c3pr_1_1.full
channel ORA_DISK_1: piece handle=/u01/app/oracle/backup/259_1015418683_83u8c3pr_1_1.full tag=SCUTI
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:16
...
...
...

查看实际路径

SQL> !ls /u01/app/oracle/oradata/CDBOCP/PDB1/askscuti01.dbf
/u01/app/oracle/oradata/CDBOCP/PDB1/askscuti01.dbf

查看控制文件

SQL> select file# "A",checkpoint_change# "B",name from v$datafile where con_id=3;

  A        B NAME
--- --------- -------------------------------------------------------
9 7747033 /u01/app/oracle/oradata/CDBOCP/PDB1/system01.dbf
10 7747033 /u01/app/oracle/oradata/CDBOCP/PDB1/sysaux01.dbf
11 7747033 /u01/app/oracle/oradata/CDBOCP/PDB1/undotbs01.dbf
12 7747033 /u01/app/oracle/oradata/CDBOCP/PDB1/users01.dbf
21 7747033 /u01/app/oracle/oradata/CDBOCP/PDB1/tbs_c01.dbf
22 7747033 /u01/app/oracle/oradata/CDBOCP/PDB1/henry01.dbf
23 7747033 /u01/app/oracle/oradata/CDBOCP/PDB1/henry02.dbf
24 7747033 /u01/app/oracle/oradata/CDBOCP/PDB1/test01.dbf
25 7747033 /u01/app/oracle/oradata/CDBOCP/PDB1/test02.dbf
31 7747033 /u01/app/oracle/oradata/CDBOCP/PDB1/impdata01.dbf
37 7747033 /u01/app/oracle/oradata/CDBOCP/PDB1/flash_arc01.dbf A B NAME
--- --------- -------------------------------------------------------
38 7747033 /u01/app/oracle/oradata/CDBOCP/bbb01.dbf
43 7747033 /u01/app/oracle/oradata/CDBOCP/PDB1/rman01.dbf
44 0 /u01/app/oracle/product/12.2.0/db_1/dbs/MISSING00044

在PDB PITR后,物理文件已经被正确的还原到了原来位置,但是控制文件里面信息记录有误,可通过手工进行修改。

连接 CDBOCP:PDB1 将表空间脱机

SQL> alter session set container=pdb1;

Session altered.

SQL> alter tablespace askscuti offline;
alter tablespace askscuti offline
*
ERROR at line 1:
ORA-01191: file 44 is already offline - cannot do a normal offline
ORA-01111: name for data file 44 is unknown - rename to correct file
ORA-01110: data file 44: '/u01/app/oracle/product/12.2.0/db_1/dbs/MISSING00044'

更新控制文件中记录的数据文件信息

SQL> alter database rename file '/u01/app/oracle/product/12.2.0/db_1/dbs/MISSING00044' to '/u01/app/oracle/oradata/CDBOCP/PDB1/askscuti01.dbf';

Database altered.

再次对 44 号文件进行单独还原和恢复

RMAN> run{
restore datafile 44;
recover datafile 44;
} Starting restore at 2019-08-04 13:01:07
starting full resync of recovery catalog
full resync complete
using channel ORA_DISK_1 datafile 44 is already restored to file /u01/app/oracle/oradata/CDBOCP/PDB1/askscuti01.dbf
restore not done; all files read only, offline, excluded, or already restored
Finished restore at 2019-08-04 13:01:13
Starting recover at 2019-08-04 13:01:13
using channel ORA_DISK_1 starting media recovery
media recovery complete, elapsed time: 00:00:01 Finished recover at 2019-08-04 13:01:15

将 CDBOCP:PDB1 表空间联机

SQL> alter tablespace askscuti online;

Tablespace altered.

所以采用 Catalogue 针对 PDB 级别进行 PITR - 可以恢复出被DROP的表空间

通过恢复目录(Catalogue)进行PDB级别的PITR恢复的更多相关文章

  1. 执行PDB的PITR恢复失败的说明

    Oracle 12.1版本中,UNDO表空间仅存在CDB级别(共享UNDO),来自于AskScuti博客园. Oracle 12.2版本开始,UNDO表空间同时可以存在每个PDB级别(本地UNDO). ...

  2. rman catalog (rman 恢复目录)

    受控制文件大小的限制,一般rman需要用rman catalog来管理及存放备份信息: 这里介绍一下创建rman catalog的步骤: C:\Documents andSettings\Admini ...

  3. RMAN-使用catalog恢复目录进行备份与恢复

    RMAN ArchitectureThe RMAN architecture, shown in Figure 7-3, includes a target database, repository, ...

  4. Oracle DB 使用RMAN恢复目录

    • 对恢复目录和RMAN 资料档案库控制文件的使用进行比较• 创建和配置恢复目录• 在恢复目录中注册数据库• 同步恢复目录• 使用RMAN 存储脚本• 备份恢复目录• 创建虚拟专用目录 RMAN 资料 ...

  5. RMAN_学习笔记3_RMAN Catalog恢复目录

    2014-12-23 Created By BaoXinjian

  6. RMAN恢复目录

    是否使用RMAN恢复目录(Recovery Catalog 你可能从其他人或书上听过RMAN恢复目录(也有可能是其他名字,RMAN Recovery Catalog的翻译较多较杂,以下简称恢复目录), ...

  7. RMAN_学习笔记5_RMAN Catalog Script恢复目录脚本

    2014-12-24 Created By BaoXinjian

  8. Oracle DB 通过 Oracle Enterprise Manager注册要使用的恢复目录

    通过 Oracle Enterprise Manager  注册要使用的恢复目录.  a)  在 EM 中,导航到“Availability > Recovery Catalog Setting ...

  9. OCP读书笔记(3) - 使用RMAN恢复目录

    创建恢复目录 在hndx上创建恢复目录:[oracle@oracle admin]$ export ORACLE_SID=hndx[oracle@oracle admin]$ sqlplus / as ...

随机推荐

  1. IP后面带/30 /29 /27等是什么意思?

    那个代表你网络的位数,也就是能判断子网掩码.比如30 说明就是11111111.11111111.11111111.11111100 (30个1,2个0)然后转换成十进制就是255.255.255.2 ...

  2. JavaSE学习笔记(5)---内部类和String类

    JavaSE学习笔记(5)---内部类和String类 一.内部类基础 转自菜鸟教程 ​ 在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来 ...

  3. centos7安装显示中文

    系统通过环境变量LANG设置语言格式编码 查看当前语言环境 echo $LANG 查看是否安装中文语言,Linux中通过locale来设置程序运行的不同语言环境 locale -a | grep 'z ...

  4. js参数自定义

    function test(){ //利用对象自定义参数名称 var t = {P1:"a",P2:"b"} //返回的数据 var ttt = {a:&quo ...

  5. 启动zabbix-server/agent报错:cannot open "/etc/zabbix/logs/zabbix_server.log": [13] Permission denied

    注:该报错解决方式同样适用于zabbix-agent 启动zabbix-server报错信息如下: 2月 27 16:52:44 localhost.localdomain zabbix_server ...

  6. easyUI footer 的格式渲染

    网上好多的例子,但是自己使用的情况下还是出现bug.比如以下代码: var myview = $.extend({}, $.fn.datagrid.defaults.view, { renderFoo ...

  7. dva-loading 实践用法

    dva 中页面过渡效果封装的很好,下面介绍常用的两个 js 库. 之前对 dva-loading 理解存在误区,认为只要在 index.js 中配置一下就没事了,事实上 dva-loading 只是提 ...

  8. python爬虫----爬取阿里数据银行websocket接口

    业务需求:爬取阿里品牌数据银行的自定义模块==>>>人群透视==>>>查看报告==>>数据 发现:数据通过websocket接口传递,此类型接口的详细理 ...

  9. [tensorflow] tf.gather使用方法

    tf.gather:用一个一维的索引数组,将张量中对应索引的向量提取出来 import tensorflow as tf a = tf.Variable([[1,2,3,4,5], [6,7,8,9, ...

  10. 《深入理解java虚拟机》读书笔记八——第九章

    第九章 类加载及执行子系统的案例与实战 Q:如果有10个WEB应用程序都是用Spring来进行组织管理的话,可以把Spring放到Common或Shared目录下(Tomcat5.0)让这些程序共享. ...