通过恢复目录(Catalogue)进行PDB级别的PITR恢复
数据库版本: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恢复的更多相关文章
- 执行PDB的PITR恢复失败的说明
Oracle 12.1版本中,UNDO表空间仅存在CDB级别(共享UNDO),来自于AskScuti博客园. Oracle 12.2版本开始,UNDO表空间同时可以存在每个PDB级别(本地UNDO). ...
- rman catalog (rman 恢复目录)
受控制文件大小的限制,一般rman需要用rman catalog来管理及存放备份信息: 这里介绍一下创建rman catalog的步骤: C:\Documents andSettings\Admini ...
- RMAN-使用catalog恢复目录进行备份与恢复
RMAN ArchitectureThe RMAN architecture, shown in Figure 7-3, includes a target database, repository, ...
- Oracle DB 使用RMAN恢复目录
• 对恢复目录和RMAN 资料档案库控制文件的使用进行比较• 创建和配置恢复目录• 在恢复目录中注册数据库• 同步恢复目录• 使用RMAN 存储脚本• 备份恢复目录• 创建虚拟专用目录 RMAN 资料 ...
- RMAN_学习笔记3_RMAN Catalog恢复目录
2014-12-23 Created By BaoXinjian
- RMAN恢复目录
是否使用RMAN恢复目录(Recovery Catalog 你可能从其他人或书上听过RMAN恢复目录(也有可能是其他名字,RMAN Recovery Catalog的翻译较多较杂,以下简称恢复目录), ...
- RMAN_学习笔记5_RMAN Catalog Script恢复目录脚本
2014-12-24 Created By BaoXinjian
- Oracle DB 通过 Oracle Enterprise Manager注册要使用的恢复目录
通过 Oracle Enterprise Manager 注册要使用的恢复目录. a) 在 EM 中,导航到“Availability > Recovery Catalog Setting ...
- OCP读书笔记(3) - 使用RMAN恢复目录
创建恢复目录 在hndx上创建恢复目录:[oracle@oracle admin]$ export ORACLE_SID=hndx[oracle@oracle admin]$ sqlplus / as ...
随机推荐
- cat - EOF标志的使用
前提 cat命令是用于连接文件并输出到标准输出设备或指定文件中. EOF为标志,可以替换为其他字符串 代码块 ``` 将文件内容作为标准输出也就是将文件内容输出到屏幕中,也可写作 cat filena ...
- nvm Nodejs 版本管理器 安装及配置
1.如果已安装nodejs请先卸载干净 nodejs:删除C:\Program Files\nodejs 文件夹 npm:删除C:\Users\{用户名}\AppData\Roaming\npm 文件 ...
- VMware与Centos系统安装之重置root密码
VMware与Centos系统安装之重置root密码 今日任务 1.Linux发行版的选择 2.vmware创建一个虚拟机(centos) 3.安装配置centos7 4.xshell配置连接虚拟 ...
- 「JOI 2017 Final」绳
题意 loj 做法 首先我们观察到最后能折起来的充要条件是: 只有两个颜色,除首尾外,所有颜色块内的数量为偶数 因为为偶数,我们进一步推论: 所有颜色块起始位置奇偶性相同 然后因为增与减都会有相同花费 ...
- 小白的java学习之路 “ 二重循环”
二重循环: 1.什么是二重循环: 一个循环体内又包含另一个完整的循环结构 语法: while(循环条件1) { //循环操作1 while(循环条件2) { //循环操作2 } } do { //循环 ...
- CGI、FastCGI和php-fpm的概念和区别和运行原理
CGI: CGI的英文是(COMMON GATEWAY INTERFACE)公共网关接口,它的作用就是帮助服务器与语言通信,这里就是nginx和php进行通信,因为nginx和php的语言不通,因此需 ...
- React.js高阶函数的定义与使用
/* 高阶函数的简单定义与使用 一: 先定义一个普通组件 二: 用function higherOrder(WrappendComponent) { return } 将组件包裹起来,并用export ...
- Java各种类
1.Object类 equals方法 2.Date类 构造方法 成员方法 DateFormat类 Calendar类 3.System类 StringBuilder原理 构造方法 toString方法 ...
- SDN的深入思考(1):SDN的核心本质到底是什么?
原文链接:https://blog.csdn.net/maijian/article/details/41744535 SDN的概念从提出到现在已经过了4年多了,但是关于SDN最基本的问题,“什么是S ...
- laravel打印查询sql
方法一(此方法支持 select 语句,insert,delect,update不支持) : $sql = DB::table('my_table')->select()->tosql() ...