重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1432|回复: 0
打印 上一主题 下一主题

[Oracle] RMAN在多租户环境下的RMAN备份及恢复

[复制链接]
跳转到指定楼层
楼主
发表于 2023-11-26 17:37:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.什么是CDB
CDB(container database,容器库)。从12c版本开始,Oracle数据库只能有两种形式:non-CDB or CDB。12c之前创建的数据库都是Non-cdb的。一个CDB可以包含0个、1个或多个PDB(Pluggable database,插拔库)
CDB包含以下内容:

一个ROOT容器(CDB$ROOT)包含system、sysaux、undo、temp表空间,控制文件、redologs
一个种子容器(PDB的模板,PDB$SEED)包含system、sysaux、temp、example表空间,并且创建新的PDB都是以种子容器作为模板。
2.什么是PDB
PDB(pluggable database,插拔库),PDB是用户创建的容器,用于分配特定的业务。
PDB包括以下内容:

system、sysaux、temp、undo表空间
用户创建的业务表空间
PDB的RMAN备份
首先,使用RMAN的用户必须拥有sysdba权限或sysbackup权限。RMAN可以运行在ROOT容器:

$ rman target sys/password@CDB
$ rman target /
或者运行在PDB

$ rman target sys/password@PDB1
当连接到PDB,所有的命令都只会包含在该PDB内;当连接到ROOT,命令会包含CDB中的任何文件,除非设定PDB名字限定。
rman命令report schema可以用于确认CDB中的所有文件,示例如下:

$ rman target /
RMAN> report schema;
using target database control file instead of recovery catalog
Report of database schema for database with db_unique_name SBDB
List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    930      SYSTEM               YES     /u01/app/oracle/oradata/SBDB/system01.dbf
3    1040     SYSAUX               NO      /u01/app/oracle/oradata/SBDB/sysaux01.dbf
4    330      UNDOTBS1             YES     /u01/app/oracle/oradata/SBDB/undotbs01.dbf
5    270      PDB$SEED:SYSTEM    NO     /u01/app/oracle/oradata/SBDB/pdbseed/system01.dbf
6    330      PDB$SEED:SYSAUX    NO     /u01/app/oracle/oradata/SBDB/pdbseed/sysaux01.dbf
7    5        USERS                NO      /u01/app/oracle/oradata/SBDB/users01.dbf
8    100      PDB$SEED:UNDOTBS1  NO   /u01/app/oracle/oradata/SBDB/pdbseed/undotbs01.dbf
9    290      PDB1:SYSTEM          YES     /u01/app/oracle/oradata/SBDB/pdb1/system01.dbf
10   370      PDB1:SYSAUX          NO      /u01/app/oracle/oradata/SBDB/pdb1/sysaux01.dbf
11   100      PDB1:UNDOTBS1        YES     /u01/app/oracle/oradata/SBDB/pdb1/undotbs01.dbf
12   5        PDB1:USERS           NO      /u01/app/oracle/oradata/SBDB/pdb1/users01.dbf

List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    32       TEMP                 32767       /u01/app/oracle/oradata/SBDB/temp01.dbf
2    36       PDB$SEED:TEMP      32767    /u01/app/oracle/oradata/SBDB/pdbseed/temp012.dbf
3    128      PDB1:TEMP            32767       /u01/app/oracle/oradata/SBDB/pdb1/temp01.dbf
report schema命令是唯一可以轻松确认文件所属PDB名称的命令。连接到PDB,可以仅查看PDB的数据文件列表:

$ rman target sys/password@PDB1
RMAN> report schema;  
using target database control file instead of recovery catalog
Report of database schema for database with db_unique_name SBDB
List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
9    290      SYSTEM               NO      /u01/app/oracle/oradata/SBDB/pdb1/system01.dbf
10   370      SYSAUX               NO      /u01/app/oracle/oradata/SBDB/pdb1/sysaux01.dbf
11   100      UNDOTBS1             NO      /u01/app/oracle/oradata/SBDB/pdb1/undotbs01.dbf
12   5        USERS                NO      /u01/app/oracle/oradata/SBDB/pdb1/users01.dbf

List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
3    128      TEMP                 32767       /u01/app/oracle/oradata/SBDB/pdb1/temp01.dbf
1.完整的CDB备份
执行以下命令进行CDB备份:

$ rman target sys/password@CDB
RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;
RMAN> LIST BACKUP OF DATABASE;
执行上述命令查看当前的备份集,会发现对CDB的备份会备份CDBROOT、PDBSEED、ALL PDBS。

2.单独的CDB备份
$ rman target sys/oracle@CDB
RMAN> BACKUP PLUGGABLE DATABASE PDB1 TAG'PDB1';
RMAN> LIST BACKUP;
我们在备份的时候可以不需要设置tag,这里是为了更加显著的展示PDB的备份。
RMAN LIST BACKUP命令显示RMAN备份属于哪个数据库或PDB。
如果备份路径是FRA(Fast Recovery Area),那么备份的路径名字将会是GUID。所以在有必要的情况下,我们可以通过以下方式确定备份集属于哪一个PDB;

SQL> SET LINESIZE 150
SQL> COL NAME FOR A10
SQL> SELECT CON_ID, DBID, GUID, NAME FROM v$pdbs;
    CON_ID       DBID GUID                                                     NAME
---------- ---------- ------------------------------ ------------
         2  943290432 B5A0DD07BB5F6DFBE0536D1410AC6EEB PDB$SEED
         3 1666453508 B5A10FCFB4980964E0536D1410AC7D46 PDB1
在上面的例子中,该PDB的GUID为“B5A10FCFB4980964E0536D1410AC7D46”

3.单独的PDB备份
备份PDB的system/sysaux

$ rman target sys/password@CDB
RMAN> backup tablespace PDB1:system,PDB1:sysaux;
由于file id是唯一的,所以可以指定file id进行备份
– 先查出需要备份的文件

SQL> select file_id,file_name from dba_data_files;
– 针对file_id进行rman备份

RMAN> backup datafile 9,10;
PDB的RMAN恢复
1.PDB丢失system数据文件的恢复
在这种情况,理论上CDB和其他的PDB不会受影响,只有该PDB不可用,必须从ROOT容器开始恢复。然而,PDB的system数据文件丢失与CDB的system数据文件丢失一样严重,可能会导致不可预测的结果,大多数情况下会使整个CDB崩溃,即所有的PDB都不可用。
在这种情况下,需要将CDB进入Mount状态,然后恢复system数据文件。Oracle说会在以后的版本对这个功能进行增强,意味着丢失PDB的system数据文件不会再对CDB或其他PDB造成影响。

$ sqlplus / as sysdba
SQL> startup mount;

$ rman target /
RMAN> RESTORE DATAFILE 8;
RMAN> RECOVER DATAFILE 8;
RMAN> ALTER PLUGGABLE DATABASE PDB1 OPEN;
2.PDB丢失非系统表空间数据文件,例如user表空间数据文件
需要根据当前的情况,文件可能是offline或没有offline

$ rman sys/password@PDB1
RMAN> ALTER DATABASE DATAFILE 10 OFFLINE;
RMAN> RESTORE DATAFILE 10;
RMAN> RECOVER DATAFILE 10;
RMAN> ALTER DATABASE DATAFILE 10 ONLINE;
3.丢失PDB的完整表空间
$ rman target sys/password@PDB1
RMAN> ALTER TABLESPACE USERS OFFLINE;
RMAN> RESTORE TABLESPACE USERS;
RMAN> RECOVER TABLESPACE USERS;
RMAN> ALTER TABLESPACE USERS ONLINE;
4.丢失整个PDB
$ rman target sys/password@CDB
RMAN> RESTORE PLUGGABLE DATABASE PDB1;
RMAN> RECOVER PLUGGABLE DATABASE PDB1;
RMAN> ALTER PLUGGABLE DATABASE PDB1 open;
注:PDB的意外丢失和主动删除是不一样的。例如,如果PDB或数据文件被意外删除、损坏等,但是元数据都是仍然存在的,在这种情况下是可以恢复的;但是如果主动的对PDB或PDB数据文件删除,意味着将元数据信息删除,这种情况是不能恢复的。就会报以下错误:

RMAN-06813: could not translate pluggable database PDB1

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-25 11:53 , Processed in 0.107028 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表