Oracle 多租户数据库的备份、恢复方法,
涉及范围:
Oracle 12C、Oracle 18C、Oracle 19C
多租户结构


三个被部署的应用程序的整合 三个不同的非cdbs成为一个单一的。幻灯片中的图形显示了一个多租户 容器数据库有四个容器:根和三个可插入的数据库。每一个 可插入数据库有它自己的专用应用程序,由它自己的DBA管理 或者由容器管理员管理。
可插入数据库是一组数据库模式,它们在逻辑上对用户和 应用程序作为一个独立的数据库。但在物理层,多租户容器 数据库有一个数据库实例和数据库文件,就像非cdb那样。
一个CDB对多个应用程序进行分组,最后以一个实例结束,从而产生一组 后台进程,一个SGA分配,一个系统数据字典在根容器中, 对于所有PDBs来说,每个PDB都维护自己的应用程序数据字典。当应用程序需要修补或升级时,将执行维护操作 在CDB上只有一次,因此所有的应用程序都在同一时间更新。
要点说明:
1、 cdb与pdb共享 Background processes、 Shared/process memory 、Oracle System metadata
2、 每个pdb 独立管理 用户对象元数据,PDB中的数据字典包含指向根中数据字典的指针。
具体步骤
① 首先联系生产管理员对CDB$ROOT、PDB$SEED和ITAPDB三个库重新进行备份,而不再只备份ITAPDB数据库的数据,备份脚本变为:
RMAN>backup as compressed backupset pluggable database "CDB\$ROOT","PDB\$SEED",itapdb format '/new/%d_itapdb_%t_%U_%p';
RMAN>backup archivelog all format '/new/arch%t_%s_%p';
RMAN>backup current controlfile format '/new/cf_%U';
之后将将备份数据放置到脱敏环境指定目录下(为便于后面说明,假设目录为/data/backup)。
② 创建数据库参数文件并启动至nomount状态。
参数文件中一般需要制定如下参数:
Control_files
Sga_target
Db_name
Compatible
Diagnostic_dest
SQL> startup nomount pfile=/tmp/initPOOL1DB.ora ;(参数文件存放目录为/tmp/initPOOL1DB.ora)
③ 恢复控制文件并将数据库启动到mount状态。
Rman> restore controlfile from ‘/data/backup/itapdb.cf’;
Rman> alter database mount;
④ 重新编目控制文件。
Rman>catalog start with ’/data/backup/’;
说明:由于生产系统部署在ASM存储+RAC架构下,而脱敏环境为本地磁盘+非RAC架构,生产与恢复环境的数据存放目录不一致,需要将备份文件编目至控制文件中。
⑤ 执行restore恢复数据文件。
在开始restore恢复数据文件之前,可以使用crosscheck命令对备份集有效性进行检查,对于在控制文件中记录而在数据库服务器上没有存储的备份集会被标记为expired状态。
Rman>crosscheck backup;
之后开始进行三个库的数据文件恢复,命令如下:
Rman>run{
set newname for database to '/data/itapdb/%U';-------------->指定恢复路径
restore database root ; ----------------->CDB$ROOT
restore database "PDB$SEED"; ------------->PDB$SEED
restore database ITAPDB; --------------->ITAPDB
switch datafile all ;
}
⑥ 使用归档日志进行数据恢复。
与单租户数据恢复不同,由于控制文件中记录了所有PDB数据库及其表空间信息,如果在恢复时不跳过相应PDB对应的表空间,使用recover database恢复会报如下错误:
RMAN-06067: RECOVER DATABASE required with a backup or created control file
通过显式跳过,可以offline并drop掉不需要恢复的PDB和对应的表空间。具体恢复方法如下:
Rman> Run {
recover database skip forever tablespace
PDB2:SYSTEM,
PDB2:USER,
PDB2:SYSAUX,..... ; ----此处需要根据具体情况进行修改
}
此外在恢复过程中可能会遇到restore或recover过程缓慢甚至停滞的问题,主要表现为在alert<SID>.log日志文件中报大量ASMB进程错误,该问题主要由Oracle bug导致,触发条件一般为生产上部署架构(ASM+RAC)与数据恢复环境(非RAC+本地磁盘)部署架构不一致导致,针对该问题可登录MOS网站(My Oracle Support)下载相应补丁并进行打补丁操作。
启动数据库:
Rman> Alter database open resetlogs ;
最后通过resetlogs方式启动数据库,至此数据恢复成功。
问题总结
本文就测试数据申请中遇到的具体问题为切入点,对Oracle12C多租户架构下的备份与还原方法进行了研究和总结,从整个过程来看,其备份与恢复方法与单租户架构恢复有较大差异,具体差异主要体现在以下三个方面:
① 在数据备份方面,除需备份存放有业务数据的PDB数据库外,也许备份CDB$ROOT和PDB$SEED库。
② 在restore恢复数据文件阶段,由于多个PDB可插拔数据库共用一份控制文件及存储与计算资源,需在数据恢复时显示指定需恢复的数据库。
③ 在使用日志文件进行数据恢复的过程中,需要使用recover database skip forever tablespace命令显示跳过不需恢复的PDB对应表空间。
目前,考虑到生产系统的重要性,生产系统基本都部署在物理机+RAC集群环境中。
若为数据量较小项目单独提供物理机+RAC环境势必会对服务器资源提出更高的要求。
Oracle 12C多租户体系特性可以在一定程度上解决服务器资源瓶颈的问题,可以考虑将多个数据量较小项目部署在多租户架构下,每个PDB数据库独立存放各自的业务数据,多个PDB数据库共享一个实例。
Oracle多租户环境学习路线图
| Category | Topic | Documentation |
|---|---|---|
Concepts |
Overview of CDBs and PDBs |
"Overview of the Multitenant Architecture" |
Administration |
Creating and configuring a CDB |
"Creating and Configuring a CDB" |
Administration |
Managing a CDB |
"Administering a CDB" |
Administration |
Creating and configuring PDBs |
"Creating and Removing PDBs and Application Containers" |
Administration |
Managing PDBs |
"Administering PDBs" |
Administration |
Creating and removing application containers |
"Creating and Removing Application Containers" |
Administration |
Administering application containers |
"Administering Application Containers" |
Performance |
Troubleshooting PDBs |
Oracle Database Performance Tuning Guide |
Monitoring |
Viewing information about CDBs and PDBs |
"Monitoring CDBs and PDBs" |
Backup and Recovery |
Performing backup and recovery in a CDB |
Oracle Database Backup and Recovery User’s Guide |
Security |
Managing common users, roles, and privileges in a CDB |
Oracle Database Security Guide |
Miscellaneous |
All other tasks relating to managing a CDB or PDB, including Oracle RAC, resource management, data transfer, and so on |
This guide is the primary task-oriented intermediate and advanced documentation for managing CDBs. This guide also contains See Also links to books that cover different CDB topics. For example, Oracle Database Utilitiesexplains concepts and tasks specific to PDBs when using Oracle Data Pump. |
https://docs.oracle.com/en/database/oracle/oracle-database/19/multi/introduction-to-the-multitenant-architecture.html#GUID-345CDAD9-3D12-475F-82EC-FED2790F504A
结束语
学习如茶,需细细品味。

