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 中创建实验表空间 与 用户
[[email protected] ~]$ sqlplus sys/[email protected]: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
[[email protected] ~]$ mkdir /home/oracle/rmanback/
[[email protected] ~]$ 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方式跳过,然后再打数据库,稍后再对数据文件做恢复: 
[[email protected] ~]$ sqlplus sys/[email protected]: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 删除
[[email protected] ~]$ cd /home/oracle/app/oracle/oradata/andycdb/pdb01/
[[email protected] ~]$ mv users01.dbf users01.dbf.bak
-- 模拟业务
C:\Users\andy>sqlplus andy/[email protected]: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 恢复
[[email protected] pdb01]$ rman target sys/[email protected]: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 损坏。
[[email protected] ~]$ sqlplus sys/[email protected]: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
--模拟表空间损坏
[[email protected] pdb01]$ pwd
/home/oracle/app/oracle/oradata/andycdb/pdb01
[[email protected] 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
[[email protected] pdb01]$ rm -rf bbb*
--模拟业务
C:\Users\andy>sqlplus bbb/[email protected]: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 恢复
[[email protected] pdb01]$ rman target sys/[email protected]: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 损坏
[[email protected] datafile]$ cd /home/oracle/app/oracle/oradata/ANDYCDB/4ECF8621E3DA38EEE0531019640AA598
[[email protected] 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
[[email protected] ~]$ sqlplus / as sysdba
SQL> alter pluggable database pdb01 open;
Pluggable database altered.

时间: 2024-10-10 16:08:45

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

Oracle非关键文件恢复,日志成员、临时文件、索引表空间、口令文件(密码文件)

关键性与非关键性 非关键性文件是指数据库和大多数应用程序没有它也能继续运行的文件.例如,如果数据库丢失了一个多路复用重做日志文件,仍可使用其它重做日志文件副本来保持数据库持续运行. 虽然丢失非关键性文件不会导致数据库崩溃,但它会削弱数据库的功能.例如: 丢失索引表空间会导致应用程序和查询的运行速度大幅减慢,或者,如果这些索引用于强制实施约束,则丢失后甚至会导致应用程序无法使用. 丢失联机重做日志组(只要不是当前联机日志组)会导致在 LGWR 下一次尝试写入组时数据库操作被挂起,直到生成新的日志文

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

己亥清爽系列说明:清爽系列是作为恢复系列的基础篇,基于FS(File System)文件系统的手工还原恢复,也叫基于用户管理的还原恢复,来自于博客园AskScuti. 实验说明:你不小心Drop掉了一张表数据,且没能及时反应过来,后面才恍然大悟,想利用闪回Drop技术进行闪回操作,可发现表空间被挤占,导致回收站里改表已被清空.如何进行手工不完全还原恢复操作.注:在数据文件.控制文件.在线日志和归档日志都完整的情况下. 基于版本:Oracle 11gR2 11.2.0.4 AskScuti 概念说

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 用户 Oracle 12c 如何在 PDB 中添加 SCOTT 模式(手工方式) Oracle 12c 如何在 PDB 中添加 SCOTT 模式(数据泵方式) 目录 1. 配置TNSNAMES.ora 2. 连接PDB 3. 执行脚本 1. 配置TNSNAMES.ora 略,请参考 12c 手工方式和 1

Oracle 12C 新特性之 恢复表

RMAN的表级和表分区级恢复应用场景: 1.You need to recover a very small number of tables to a particular point in time. In this situation, TSPITR is not the most effective solution because it moves all the objects in the tablespace to a specified point in time.2.You

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

Oracle 12c的备份和恢复策略(RMAN备份[开启归档/控制文件/数据文件/归档日志]): 备份策略: * 每半年做一个数据库的全备份(包括所有的数据和只读表空间) * 每周做一次零级备份 * 每天做一次一级备份 *备份前设置rman的参数:configure controlfile autobackup on;(RMAN> show all;查看参数) --crontab定时任务: 0 1 1 1,7 * oracle /bin/bash /data/oracle/backup/rman

Oracle 12c 多租户在 CDB 中 Plug A PDB,Unplugging A PDB

Oracle 数据库 12 c 中介绍了多租户选项允许单个容器数据库 (CDB) 来承载多个单独的可插拔数据库 (PDB).本文简单的演示了如何在 CDB 中 Plug A PDB,Unplugging A PDB 操作. 一. plugged PDB into Unplugged PDBSQL> show pdbs    CON_ID CON_NAME  OPEN MODE  RESTRICTED---------- ------------------------------ -------

Oracle 12c 多租户 CDB 与 PDB之 shared undo 与 Local undo 切换

undo 在12C R1版本中只支持Global Shared Undo模式, 所有container共享一个UNDO表空间, 目前保留这种模式只是为了升级过渡, 在12C R2引入了PDB Local UNDO模式,每个container都有自己的UNDO 表空间, 对于RAC是每个实例每个container都有自己的UNDO表空间, 这也正是推荐的.在DBCA时会有local undo选项,且默认勾选. local undo 模式的好处:1.减少undo表空间的争用,同时方便拔插 2.只有使

Oracle 12c 多租户配置和修改 CDB 和 PDB 参数

1. 配置CDB 实例参数,影响CDB与所有 PDB为CDB配置例程参数相对于对于非CDB的数据库是变化不太.ALTER SYSTEM命令用于设置初始化参数,与使用ALTER DATABASE命令修改一些数据库配置.ALTER SYSTEM SET parameter_name=value CONTAINER=ALL;说明:使用CONTAINER=ALL后,cdb与pdbs这个参数相同.pdbs可以在本地设置同一参数为不同值,将覆盖CONTAINER=ALL设定的值. 2. 修改 CDB ALT

己亥清爽恢复系列之数据文件3篇:非核心数据文件物理损坏或丢失(无备份恢复)

己亥清爽系列说明:清爽系列是作为恢复系列的基础篇,基于FS(File System)文件系统的手工还原恢复,也叫基于用户管理的还原恢复,来自于博客园AskScuti. 实验说明:物理删除非关键系统数据文件,模拟介质损坏或丢失,且在无备份的情况下,如何进行手工完全还原恢复操作.注:控制文件.在线日志和归档日志都完整的情况下. 基于版本:Oracle 11gR2 11.2.0.4 AskScuti 概念说明:请严格区分什么叫还原(Restore),什么叫恢复(Recover). 还原(Restore