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

简介:

环境:数据库版本 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.

文章可以转载,必须以链接形式标明出处。



本文转自 张冲andy 博客园博客,原文链接:http://www.cnblogs.com/andy6/p/6843397.html    ,如需转载请自行联系原作者
相关文章
|
2月前
|
关系型数据库 OLAP 分布式数据库
核心系统转型问题之Gartner分析师对阿里云数据库的评价是啥样的
核心系统转型问题之Gartner分析师对阿里云数据库的评价是啥样的
|
2月前
|
Cloud Native 数据管理 数据挖掘
核心系统转型问题之阿里云数据库用户需求的通用性和差异性如何平衡
核心系统转型问题之阿里云数据库用户需求的通用性和差异性如何平衡
|
14天前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
16天前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
8天前
|
关系型数据库 Unix MySQL
MySQL是一种关系型数据库管理系统
MySQL是一种关系型数据库管理系统
22 2
|
2月前
|
前端开发 数据库 虚拟化
太6了!用Python快速开发数据库入库系统
太6了!用Python快速开发数据库入库系统
|
2月前
|
缓存 NoSQL 数据库
Web服务器与数据库优化:提升系统性能的最佳实践
【8月更文第28天】在现代的Web应用中,Web服务器与后端数据库之间的交互是至关重要的部分。优化这些组件及其相互作用可以显著提高系统的响应速度、吞吐量和可扩展性。本文将探讨几种常见的优化策略,并提供一些具体的代码示例。
73 1
|
2月前
|
存储 运维 Cloud Native
核心系统转型问题之阿里云数据库在国际市场的布局情况咋样
核心系统转型问题之阿里云数据库在国际市场的布局情况咋样
|
2月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的前后端分离的选课管理系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js技术栈的高校选课管理系统的设计与实现。该系统采用前后端分离架构,旨在提高选课效率、优化资源分配及提升用户体验。技术栈包括:后端Spring Boot 2.0、前端Vue 2.0、数据库MySQL 8.0、开发环境JDK 1.8和Maven 3.6等。系统功能覆盖登录、学生信息管理、选课管理、成绩查询等多个方面,并针对学生、教师和管理员提供了不同的操作界面。系统采用了响应式设计,支持多设备访问,并通过Element UI增强了界面的友好性和交互性。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的前后端分离的选课管理系统(含教程&源码&数据库数据)
|
2月前
|
存储 SQL NoSQL
详解数据库管理系统(DBMS)
【8月更文挑战第31天】
45 0

推荐镜像

更多