ORACLE_OCP多租户之CDB与PDB的备份恢复和闪回
- 文章目标:
- 执行CDB和PDB备份
- 使用RMAN备份插入或未插入的PDB
- 从基本文件丢失中恢复CDB
- 从PDB数据文件丢失中恢复PDB
- 执行闪回数据库
- 复制PDB
- 验证CDB和PDB
一、目标
- 独立备份CDB和应用程序:
- CDB级别的ARCHIVELOG模式(尽在CDB级别)
- CDB备份和PDB备份
- CDB和PDB级别的热备份
- 恢复不同级别的CDB或PDB :
- CDB的实例级恢复
- 完整的介质恢复:
- CDB或PDB临时文件
- 控制文件/重做日志文件/根数据文件丢失在已挂载CDB状态下
- PDB数据文件:打开的PDB中非SYSTEM数据文件丢失
- PDB数据文件:挂载的CDB中数据文件丢失
- 不完全的介质恢复:CDB以挂载或PDB已关闭状态
- 闪回数据库:已挂载的CDB状态下
二、RMAN中的新语法和子句
$ export ORACLE_SID=cdb1
$ rman TARGET / <--------|----> $ rman TARGET jim@pdb1
-
DATABASE关键字在所有PDB和根容器上运行.
RMAN> BACKUP DATABASE;
RMAN> RECOVER DATABASE; -
备份单个PDB.
RMAN> BACKUP PLUGGABLE DATABASE hr_pdb, sales_pdb;
RMAN> RECOVER PLUGGABLE DATABASE hr_pdb; -
使用CDB$ROOT关键字备份,还原,恢复根容器
RMAN> BACKUP PLUGGABLE DATABASE “CDB$ROOT”;
-
使用PDB名称限定PDB的表空间.
RMAN> BACKUP TABLESPACE sales_pdb:tbs2;
RMAN> RESTORE TABLESPACE system;
三、CDB备份:CDB全备
- 备份所有PDB数据文件和根文件
RMAN> CONNECT TARGET /
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
四、CDB备份:用户管理的CDB热备份
- 执行用户管理的CDB热备份.
SQL> CONNECT / AS SYSDBA
SQL> ALTER DATABASE BEGIN BACKUP;
SQL> !cp datafiles /backup_dir
SQL> ALTER DATABASE END BACKUP;
五、CDB备份:部分CDB备份
- 备份根容器或单个PDB.
RMAN> CONNECT TARGET /
RMAN> BACKUP PLUGGABLE DATABASE “CDB$ROOT”, sales_pdb;
RMAN> BACKUP PLUGGABLE DATABASE hr_pdb PLUS ARCHIVELOG;
六、PDB备份:PDB全备
-
使用RMAN进行PDB全备:
RMAN> CONNECT TARGET /
RMAN> BACKUP PLUGGABLE DATABASE sales_pdb;RMAN> BACKUP PLUGGABLE DATABASE sales_pdb, hr_pdb;
- 执行用户管理的PDB热备:
SQL> ALTER PLUGGABLE DATABASE sales_pdb BEGIN BACKUP;
SQL> !cp pdb_datafiles /backup_dir
SQL> ALTER PLUGGABLE DATABASE sales_pdb END BACKUP;
七、PDB备份:部分PDB备份
RMAN> CONNECT TARGET /
RMAN> REPORT SCHEMA;
RMAN> BACKUP TABLESPACE sales_pdb:tbs2;
RMAN> BACKUP TABLESPACE hr_pdb:system,
sales_pdb:sysaux;
RMAN> BACKUP TABLESPACE sysaux, hr_pdb:sysaux;
八、恢复
- 实例恢复: CDB level only
- CDB打开时丢失的临时文件,自动重新创建
- 文件丢失或损坏后完成介质恢复
- CDB mounted: 方法同非CDB的方法
- Redo log files, control files
- 根容器的SYSTEM表空间和PDB数据文件,UNDO数据文件
- PDB opened:除SYSTEM以外的任何PDB数据文件
- Tablespace OFFLINE:任何其他PDB或CDB数据文件
- CDB mounted: 方法同非CDB的方法
- 文件丢失或损坏后介质的不完全恢复
- CDB mounted: 整个的CDB回到一个时间点上
- PDB closed: 整个的PDB回到一个时间点上
- TSPITR用于除SYSTEM,UNDO,SYSAUX以外的任何表空间
- Block recovery(块恢复): 没有任何变化和非CDB一样
- Flashback database: CDB mounted
九、实例故障
- PDB实例恢复无法进行.
- 实例故障后:
- 连接到根容器
- 打开根容器
- 使用以下命令打开所有PDB :
- Triggers
SQL> STARTUP
- SQL statement
SQL> STARTUP
SQL> ALTER PLUGGABLE
2 DATABASE ALL OPEN;
- Triggers
十、NOARCHIVELOG Mode(非归档模式)
- 如果数据库处于NOARCHIVELOG模式,并且数据文件丢失,请执行以下任务:
- 如果实例尚未关闭,请关闭它。
- 恢复整个CDB,包括所有数据文件和控制文件。
- 启动实例并打开CDB和所有PDB。
- 用户必须重新输入自上次备份以来所做的所有更改。
十一、介质故障:CDB或PDB临时文件恢复
- 如果缺少一个临时文件,则需要临时空间执行的SQL语句可能会失败:与非CDB相似
- CDB打开时自动重新创建临时文件
- 也可以手动创建
十二、介质故障:PDB临时文件恢复
- 如果缺少临时文件之一,则需要临时空间才能执行的SQL语句可能会失败。
- 仅在CDB打开时自动重新创建临时文件
- 也可以手动创建
十三、介质故障:控制文件丢失
- 类似于非CDB:CDB nomounted CDB mounted
RMAN> CONNECT TARGET /
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
RMAN> ALTER DATABASE MOUNT;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN RESETLOGS;
RMAN> ALTER PLUGGABLE DATABASE ALL OPEN;
十四、介质故障:重做日志文件(REDO)丢失
- 类似于非CDB恢复程序:
- 连接到根容器。
- 检查丢失文件的状态:ACTIVE,INACTIVE,CURRENT
- 恢复方案与非CDB相同。
十五、介质故障:根容器的SYSTEM或UNDO数据文件
- 类似于非CDB : CDB mounted
RMAN> STARTUP MOUNT;
RMAN> RESTORE TABLESPACE undo1;
RMAN> RECOVER TABLESPACE undo1;
RMAN> ALTER DATABASE OPEN;
RMAN> ALTER PLUGGABLE DATABASE ALL OPEN;
十六、介质故障:根容器SYSAUX数据文件
- 类似于非CDB: tablespace OFFLINE
RMAN> ALTER TABLESPACE sysaux OFFLINE IMMEDIATE;
RMAN> RESTORE TABLESPACE sysaux;
RMAN> RECOVER TABLESPACE sysaux;
RMAN> ALTER TABLESPACE sysaux ONLINE;
十七、介质故障:PDB SYSTEM数据文件
- 如果PDB is opened, CDB只能mounted下恢复.
- 如果PDB is closed, CDB可以在open状态下恢复
-
还原和恢复PDB:
RMAN> STARTUP MOUNT; — useless on closed PDB —
RMAN> RESTORE PLUGGABLE DATABASE sales_pdb;
RMAN> RECOVER PLUGGABLE DATABASE sales_pdb;
RMAN> ALTER DATABASE OPEN; — useless on closed PDB —
RMAN> ALTER PLUGGABLE DATABASE sales_pdb OPEN; -
还原和恢复丢失的表空间或数据文件:
RMAN> RESTORE TABLESPACE sales_pdb:system;
RMAN> RECOVER TABLESPACE sales_pdb:system;
-
十八、介质故障:PDB非系统数据文件
- 与非CDB相似:在PDB中执行恢复。
- 连接到PDB。
- 将表空间置于脱机状态。
- 其他PDB不受影响。
SQL> CONNECT system@sales_pdb
SQL> ALTER TABLESPACE tbs2 OFFLINE IMMEDIATE;
RMAN> CONNECT TARGET /
RMAN> RESTORE TABLESPACE sales_pdb:tbs2;
RMAN> RECOVER TABLESPACE sales_pdb:tbs2;
SQL> ALTER TABLESPACE tbs2 ONLINE;
十九、Data Recovery Advisor RMAN命令行界面
-
列出故障.
RMAN> LIST FAILURE DETAIL;
-
取得顾问建议.
RMAN> ADVISE FAILURE;
-
预览恢复脚本.
RMAN> REPAIR FAILURE PREVIEW;
-
应用恢复脚本.
RMAN> REPAIR FAILURE;
二十、介质故障:PITR
-
PDB PITR
RMAN> ALTER PLUGGABLE DATABASE PDB1 CLOSE;
RMAN> RUN {
SET UNTIL SCN = 1851648 ;
RESTORE pluggable DATABASE pdb2_1;
RECOVER pluggable DATABASE pdb2_1
AUXILIARY DESTINATION=’/u01/app/oracle/oradata’;
ALTER PLUGGABLE DATABASE pdb2_1 OPEN RESETLOGS;
} -
PDB Tablespace PITR
RMAN> RECOVER TABLESPACE PDB1:TEST_TBS
2> UNTIL SCN 832972
3> AUXILIARY DESTINATION ‘/tmp/CDB1/reco’;
RMAN> ALTER TABLESPACE PDB1:TEST_TBS ONLINE;
二十一、Flashback CDB—CDB的闪回
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT
#如果CDB处于ARCHIVELOG模式,则无需重新启动它。
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER SYSTEM SET
2 DB_FLASHBACK_RETENTION_TARGET=2880 SCOPE=BOTH;
SQL> ALTER DATABASE FLASHBACK ON;
SQL> ALTER DATABASE OPEN;
- 不闪回根目录将导致不会闪回整个CDB
- 没有闪回到执行PDB的PITR之前的时间
二十二、Flashback CDB
- 公共或本地用户被删除.
-
Flashback CDB: 建议以独占模式让CDB mounted。
SQL> STARTUP MOUNT
SQL> FLASHBACK DATABASE TO SCN 53943; -
要查看闪回是否成功:在“只读”中打开CDB和PDB。
SQL> ALTER DATABASE OPEN READ ONLY;
SQL> ALTER PLUGGABLE DATABASE ALL OPEN READ ONLY; -
完成:必要时再次闪回并使用RESETLOGS打开CDB。
RMAN> SHUTDOWN IMMEDIATE
RMAN> STARTUP MOUNT
RMAN> FLASHBACK DATABASE TO SCN 10;
RMAN> ALTER DATABASE OPEN RESETLOGS;
RMAN> ALTER PLUGGABLE DATABASE ALL OPEN;
-
二十三、复制(Duplicating)可插拔数据库(PDB)
-
单个可插拔数据库.
RMAN> DUPLICATE DATABASE TO cdb1
2> PLUGGABLE DATABASE pdb1; -
几个可插拔数据库.
RMAN> DUPLICATE DATABASE TO cdb1
PLUGGABLE DATABASE pdb1, pdb3; -
除一个数据库外的所有可插入数据库.
RMAN> DUPLICATE DATABASE TO cdb1
SKIP PLUGGABLE DATABASE pdb3; -
一个PDB和其他PDB的表空间.
RMAN> DUPLICATE DATABASE TO cdb1
PLUGGABLE DATABASE pdb1
TABLESPACE pdb2:users;
二十四、坏块的检测
- 使用RMAN VALIDATE命令调用数据库及其组件的主动健康检查:
-
扫描指定的文件并验证其内容。
-
CDB:根容器和PDB的所有数据文件
RMAN> VALIDATE DATABASE;
-
root:仅根目录的所有数据文件
RMAN> VALIDATE DATABASE ROOT;
-
PDB:列出的PDB的所有数据文件
RMAN> VALIDATE PLUGGABLE DATABASE pdb1, pdb2;
-
-
确认数据文件存在坏块,并且找到其位于的位置
-
检查损坏的数据块
-
二十五、特殊情况
-
创建一个控制文件备份脚本:
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
-
使用块更改跟踪日志进行快速增量备份:
- At CDB level:块更改跟踪日志使用绝对路径数据文件。
-
PDB关闭与CDB热备份不兼容:
SQL> ALTER DATABASE BEGIN BACKUP;
SQL> ALTER PLUGGABLE DATABASE hr_pdb CLOSE;
ALTER PLUGGABLE DATABASE pdb1_1 close
*
ERROR at line 1:
ORA-01149: cannot shutdown - file 10 has online backup set
ORA-01110: data file 10: '/D1/oradata/cdb1/pdb1_1/users01.dbf’
二十六、New Data Dictionary View and Column
- New views
- RC_PDBS
- New column PLUGGABLE_DBID in V$ views and RC_xxx views
- V$DATAFILE_COPY
- V$BACKUP_DATAFILE
- V$PROXY_DATAFILE
- RC_DATAFILE_COPY
- RC_BACKUP_DATAFILE
- RC_PROXY_DATAFILE