环境:数据库版本 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

实验准备:
1.-- 数据库归档模式
SQL> select name,log_mode from v$database;
NAME  LOG_MODE
--------- ------------
ANDYCDB   ARCHIVELOG   > 数据库归档模式

2.-- 登录 PDB 中创建实验表空间 与 用户
[oracle@12c ~]$ sqlplus sys/oracle@10.219.24.16:1521/pdb01 as sysdba
SQL> 
create tablespace bbb logging  datafile '/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb.dbf' 
size 1m  autoextend on  next 1m maxsize 2m  extent management local;
Tablespace created.
SQL>alter tablespace bbb add  datafile '/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb02.dbf'size 1M  
autoextend on  next 1m maxsize 2m  ;
Tablespace altered.

create user andy identified by andy default tablespace users;
create user bbb identified by bbb default tablespace bbb;
grant dba to andy;
grant dba to bbb;

3.-- 备份整个CDB及其下面的所有PDB
[oracle@12c ~]$ mkdir /home/oracle/rmanback/
[oracle@12c01 ~]$ rman target /

run{
alter system archive log current;
allocate channel ch1 type disk;
allocate channel ch2 type disk;
backup incremental level 0 database plus archivelog delete input
format '/home/oracle/rmanback/db_%d_%U'
tag=db_inc_0;
release channel ch1;
release channel ch2;
}
Finished backup at 12-MAY-17

一、  恢复 PDB 数据文件

数据库在open的时候,会对当前的数据的所有数据文件进行检查。 
对于system,sysaux和undo表空间的数据文件,如果有问题,数据库无法open。如果是PDB中某个普通的数据文件出现丢失,我们可以先用offline方式跳过,然后再打数据库,稍后再对数据文件做恢复: 
[oracle@12c ~]$ sqlplus sys/oracle@10.219.24.16:1521/pdb01 as sysdba
SQL> show con_name
CON_NAME
------------------------------
PDB01
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/home/oracle/app/oracle/oradata/andycdb/pdb01/system01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/sysaux01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/undotbs01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/users01.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb.dbf
/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb02.dbf
6 rows selected.

摸拟pdb数据文件 user 删除
[oracle@12c01 ~]$ cd /home/oracle/app/oracle/oradata/andycdb/pdb01/
[oracle@12c01 ~]$ mv users01.dbf users01.dbf.bak
-- 模拟业务
C:\Users\andy>sqlplus andy/andy@10.219.24.16:1521/pdb01
SQL> create table andy as select * from all_objects;
create table andy as select * from all_objects                                  *
ERROR at line 1:
ORA-01116: error in opening database file 12
ORA-01110: data file 12:
'/home/oracle/app/oracle/oradata/andycdb/pdb01/users01.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
SQL> alter system checkpoint;
System altered.
-- alert_andycdb.log 日志查看报错:
ORA-01110: data file 12: '/home/oracle/app/oracle/oradata/andycdb/pdb01/users01.dbf'
ORA-01565: error in identifying file '/home/oracle/app/oracle/oradata/andycdb/pdb01/users01.dbf'
-- 进入 PDB 查看数据文件状态
SQL> 
col name for a60;
select file#,status,name from v$datafile;
     FILE# STATUS  NAME
---------- ------- ------------------------------------------------------------
9 SYSTEM  /home/oracle/app/oracle/oradata/andycdb/pdb01/system01.dbf
10 ONLINE  /home/oracle/app/oracle/oradata/andycdb/pdb01/sysaux01.dbf
11 ONLINE  /home/oracle/app/oracle/oradata/andycdb/pdb01/undotbs01.dbf
12 ONLINE  /home/oracle/app/oracle/oradata/andycdb/pdb01/users01.dbf
13 ONLINE  /home/oracle/app/oracle/oradata/andycdb/pdb01/bbb.dbf
14 ONLINE  /home/oracle/app/oracle/oradata/andycdb/pdb01/bbb02.dbf
6 rows selected.

说明: 12c r1版本,如果pdb数据文件损坏,会造成 cdb 一起宕机。 12c r2版本 pdb数据文件损坏,cdb 与 pdb 都没有宕机。
-- 使用 rman 恢复
[oracle@12c pdb01]$ rman target sys/oracle@10.219.24.16:1521/pdb01 
RMAN> recover datafile 12;
RMAN-06094: datafile 12 must be restored 
RMAN> alter database datafile 12 offline;
RMAN> alter database datafile 12 offline;
RMAN> restore datafile 12; 
RMAN> recover datafile 12; 
Finished recover at 12-MAY-17
然后对数据文件进行online处理 
RMAN> alter database datafile 12 online; 
Statement processed
-- 模拟业务   成功!
SQL> create table andy as select * from all_objects;
Table created.

二、 恢复 PDB 非系统表空间

实验: 模拟 PDB 非系统表空间 bbb 损坏。
[oracle@12c ~]$ sqlplus sys/oracle@10.219.24.16:1521/pdb01 as sysdba
--查询表空间情况
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME       STATUS
------------------------------ ---------
SYSTEM       ONLINE
SYSAUX       ONLINE
UNDOTBS1       ONLINE
TEMP       ONLINE
USERS       ONLINE
BBB       ONLINE
SQL>
col tablespace_name for a15
col file_name for a55
SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 1024), 0) total_space
FROM dba_data_files where tablespace_name='BBB' ORDER BY tablespace_name;
TABLESPACE_NAME    FILE_ID FILE_NAME                                               TOTAL_SPACE
--------------- ---------- ------------------------------------------------------- -----------
BBB                     13 /home/oracle/app/oracle/oradata/andycdb/pdb01/bbb.dbf             1
BBB                     14 /home/oracle/app/oracle/oradata/andycdb/pdb01/bbb02.dbf           1
--模拟表空间损坏
[oracle@12c pdb01]$ pwd
/home/oracle/app/oracle/oradata/andycdb/pdb01
[oracle@12c pdb01]$ ll bbb*
-rw-r-----. 1 oracle oinstall 1056768 May 12 06:42 bbb02.dbf
-rw-r-----. 1 oracle oinstall 1056768 May 12 06:42 bbb.dbf
[oracle@12c pdb01]$ rm -rf bbb*
--模拟业务
C:\Users\andy>sqlplus bbb/bbb@10.219.24.16:1521/pdb01
SQL> create table andy as select * from all_objects;
ERROR at line 1:
ORA-01116: error in opening database file 13
ORA-01110: data file 13:
'/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
-- alert_andycdb.log 日志查看报错:
ORA-01110: data file 13: '/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb.dbf'
ORA-01565: error in identifying file '/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb.dbf'
ORA-27037: unable to obtain file status
ORA-01110: data file 14: '/home/oracle/app/oracle/oradata/andycdb/pdb01/bbb02.dbf'
SQL> alter system checkpoint;
System altered.
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
USERS                          ONLINE
BBB                            ONLINE
-- 使用 rman 恢复
[oracle@12c pdb01]$ rman target sys/oracle@10.219.24.16:1521/pdb01
RMAN> alter tablespace bbb offline;
ORA-27041: unable to open file
RMAN> alter tablespace bbb offline immediate;
Statement processed
RMAN> recover tablespace bbb;
RMAN-06094: datafile 13 must be restored
RMAN> restore tablespace bbb;
Finished restore at 12-MAY-17
RMAN> recover tablespace bbb;
Finished recover at 12-MAY-17
RMAN> alter tablespace bbb online;
Statement processed
-- 模拟业务 成功!
SQL> create table andy as select * from all_objects where rownum>2;
Table created.

三、  单个PDB数据库恢复
恢复单个PDB的前提是CDB已经能够正常启动,在CDB启动的情况下在RMAN中采用restore pluggable database pdb名称指定单个PDB数据库进行恢复,如下
SQL> show con_name
CON_NAME
------------------------------
PDB01
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/home/oracle/app/oracle/oradata/ANDYCDB/4ECF8621E3DA38EEE0531019640AA598/datafil
e/o1_mf_system_dk5wmv0s_.dbf
/home/oracle/app/oracle/oradata/ANDYCDB/4ECF8621E3DA38EEE0531019640AA598/datafil
e/o1_mf_sysaux_dk5wmv11_.dbf
/home/oracle/app/oracle/oradata/ANDYCDB/4ECF8621E3DA38EEE0531019640AA598/datafil
e/o1_mf_users_dk6wky42_.dbf
/home/oracle/app/oracle/oradata/ANDYCDB/4ECF8621E3DA38EEE0531019640AA598/datafil
e/o1_mf_undo_1_dk5wmv13_.dbf
-- 模拟整个 pdb 损坏
[oracle@12c01 datafile]$ cd /home/oracle/app/oracle/oradata/ANDYCDB/4ECF8621E3DA38EEE0531019640AA598
[oracle@12c01 4ECF8621E3DA38EEE0531019640AA598]$ rm -rf datafile/
SQL> alter system checkpoint;
System altered.
SQL> show pdbs
    CON_ID CON_NAME  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED  READ ONLY  NO
3 PDB01  MOUNTED
RMAN>restore pluggable database pdb01; 
Finished restore at 11-MAY-17
RMAN>recover pluggable database pdb01; 
Finished recover at 11-MAY-17
[oracle@12c01 ~]$ sqlplus / as sysdba
SQL> alter pluggable database pdb01 open;
Pluggable database altered.

oracle 12c 多租户 pdb 恢复(单个pdb数据文件、非系统pdb表空间、整个pdb数据库)的更多相关文章

  1. [转]Oracle 12c多租户特性详解:PDB 的创建、克隆与维护

    转自:http://chuansong.me/n/443660447865 PDB 的创建和访问 在使用 dbca 建库时,创建数据库之前,可以保存一下创建脚本,分析其具体执行过程.以自定义方式创建名 ...

  2. 己亥清爽恢复系列之数据文件4篇:DROP表后如何恢复(非闪回技术)

    己亥清爽系列说明:清爽系列是作为恢复系列的基础篇,基于FS(File System)文件系统的手工还原恢复,也叫基于用户管理的还原恢复,来自于博客园AskScuti. 实验说明:你不小心Drop掉了一 ...

  3. Oracle 12c 多租户家族(12c 18c 19c)如何在 PDB 中添加 HR 模式

    Oracle 12c 多租户家族(12c [12.2.0.1].18c [12.2.0.2].19c [12.2.0.3])如何在 PDB 中添加模式:19c (19.3) 手工添加示例 HR 用户 ...

  4. Oracle 12C 新特性之 恢复表

    RMAN的表级和表分区级恢复应用场景:1.You need to recover a very small number of tables to a particular point in time ...

  5. Oracle 12c多租户架构浅析

    Oracle数据库12c的一大创新即是其采用的多租户架构.对于多租户这项新功能,业内的评价褒贬不一.有的声音认为,这项功能的用处不是特别大,但在某些场景或特定的环境下,多租户依然有它的用处.其最大的用 ...

  6. [原创]Oracle 12c的备份和恢复策略

    Oracle 12c的备份和恢复策略(RMAN备份[开启归档/控制文件/数据文件/归档日志]): 备份策略: * 每半年做一个数据库的全备份(包括所有的数据和只读表空间) * 每周做一次零级备份 * ...

  7. 己亥清爽恢复系列之数据文件1篇:SYSTEM物理损坏或丢失(关键表空间)

    己亥清爽系列说明:清爽系列是作为恢复系列的基础篇,基于FS(File System)文件系统的手工还原恢复,也叫基于用户管理的还原恢复.来自于博客园AskScuti 实验说明:在有完全备份基础下,物理 ...

  8. Oracle 11g R2(11.2.0.4) RAC 数据文件路径错误解决--ORA-01157 ORA-01110: 数据文件

    Oracle 11g R2(11.2.0.1) RAC  数据文件路径错误解决--ORA-01157 ORA-01110: 数据文件 oracle 11g R2(11.2.0.4) rac--scan ...

  9. oracle删除非空的表空间

    oracle删除非空的表空间: drop tablespace tablespaceName including contents;

随机推荐

  1. BestCoder Round #63 (div.2)

    感觉有些无聊的比赛. A 暴力枚举下就行 B 简单的dp,但是wa了一发后就去先把C做了,然后发现如果输入的100个数,是如1,2,3,4,...,100,然后k=50,个数为c(100,50).果断 ...

  2. 关于KMP算法的感想

    今天,看了KMP,首先是在网上看的,看了很久没看懂,有很多思想,很多next的推导,就相当于很多的版本,后来,去看了<<大话数据结构>>这本书,才看懂,这KMP的神奇之处,这本 ...

  3. echart 图表自定义样式

    initChart: function (id) { this.charts = echarts.init(document.getElementById(id)) this.charts.setOp ...

  4. Apache转发规则的一点注意

    RewriteRule ^studio/$ book.php?mod=studio 这种目录转发, 正常情况下是没问题的. 但是当根目录下存在一个 studio 目录时, apache就不会转发URL ...

  5. 给MDI窗体加背景,解释MakeObjectInstance和CallWindowProc的用法

    工程含有1个MDI主窗口和2个子窗口.唯一需要注意的是,每个窗体都有ClientHandle,但只有当自己是MDI主窗体的情况下才有值,否则等于0. unit Unit1; interface use ...

  6. 我的Android进阶之旅------>介绍一款集录制与剪辑为一体的屏幕GIF 动画制作工具 GifCam

    由于上一篇文章:我的Android进阶之旅------>Android之动画之Frame Animation实例 中展示的是Frame动画效果,但是之前我是将图片截取下来,不好说明确切的动画过程 ...

  7. HDU - 1430 魔板 【BFS + 康托展开 + 哈希】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1430 思路 我刚开始 想到的 就是 康托展开 但是这个题目是 多组输入 即使用 康托展开 也是会T的 ...

  8. 用 Java 技术创建 RESTful Web 服务

    JAX-RS:一种更为简单.可移植性更好的替代方式 JAX-RS (JSR-311) 是一种 Java™ API,可使 Java Restful 服务的开发变得迅速而轻松.这个 API 提供了一种基于 ...

  9. 《程序员代码面试指南》第一章 栈和队列 构造数组的MaxTree

    题目 给出一个无重复元素的数组,构造此数组的MaxTree, java代码 /** * @Description: 构造数组的MaxTree * @Author: lizhouwei * @Creat ...

  10. ios中文模糊搜索兼容问题

    $(function(){ var cpLock = true; $("input[name='name']").off().on({ compositionstart: func ...