ITPub博客

首页 > 数据库 > > 12C容器数据库的备份恢复及闪回CDB与PDB。

12C容器数据库的备份恢复及闪回CDB与PDB。

作者:Abraham林老师 时间:2020-09-12 22:20:35 0 删除 编辑

12C之五备份恢复、闪回CDB与PDB。

(1) 备份整个CDB

rman target /

backup as compressed backupset database plus archivelog delete all input;

(2) 备份pluggable库

backup as compressed backupset pluggable database orclpdb;

(3)恢复PDB的system表空间

sqlplus system/oracle@orclpdb

select file_name from dba_data_files;

! rm /u01/app/oracle/oradata/orcl/orclpdb/system01.dbf


rman target /

shutdown abort

start mount


restore tablespace orclpdb:system;

recover tablespace orclpdb:system;

alter database open;

alter pluggable database orclpdb open;


至此恢复完毕

也可以将整个PDB恢复到方式实现

rman target /

shutdown abort;

startup mount;

restore pluggable database orclpdb;

recover pluggable database orclpdb;

alter database open;

alter pluggable database orclpdb open;


(4) 恢复PDB的非关键文件(高可用恢复)

创建测试表空间

create tablespace users datafile ‘/u01/app/oracle/oradata/orcl/orclpdb/users01.dbf’ size 10m;

create table t (id number) 

insert into t values(100);

commit;

alter table t move tablespace users;


!rm /u01/app/oracle/oradata/orcl/orclpdb/users01.dbf

(这里清除Buffer cache验证表t无法查询数据)

sqlplus system/oracle@orclpdb

alter tablespace users offline immediate

(这里文件已经删除了,必须使用immediate,否则报错文件不存在)


rman target /

restore tablespace orclpdb:users;

recover tablespace orclpdb:users;


sqlplus system/oracle@orclpdb

alter tablespace users online;


(5)备份控制文件夹

alter database backup controlfile to trace;

cd /u01/app/oracle/diag/rdbms/orcl/orcl/trace/

ls -ltr | tail -10


配置RMAN自动备份


(6) 恢复控制文件

 方法1:直接拷贝完好的副本

方法2:使用trace的脚本

方法3:使用RMAN自动备份恢复。


select name from v$controlfile;

!rm /u01/app/oracle/fast_recovery_area/orcl/control02.ctl

此时尝试关闭数据库,无法关库(关库需要写控制文件,完全检查点),报错

shutdown abort;

rman target /

startup nomount;

restore controlfile from autobackup;

alter database mount;

recover database;

alter database open resetlogs;


sqlplus / as sysdba

alter pluggable database orclpdb open;


最后再做一次全备份

rman target /

backup as compressed backupset database plus archivelog delete all input;


(7)恢复重做日志文件

先向日志组添加成员

alter database add logfile member '/u01/app/oracle/oradata/orcl/redo01_2’ to group 1;

alter database add logfile member '/u01/app/oracle/oradata/orcl/redo02_2' to group 2;

alter database add logfile member '/u01/app/oracle/oradata/orcl/redo03_2’ to group 3;


切换日志,让所有新成员都有数据。


查看当前日志状态

SQL> select group#,sequence#,archived,status from v$log;


    GROUP#  SEQUENCE# ARC STATUS

---------- ---------- --- ----------------

1       10                NO  CURRENT

2       8                 YES INACTIVE

3       9                 YES INACTIVE


我们删除当前Group1 的某个日志成员


 !rm -f /u01/app/oracle/oradata/orcl/redo01_2


 group1—/u01/app/oracle/oradata/orcl/redo01_2

group1—/u01/app/oracle/oradata/orcl/redo01

如何恢复呢,通过clear的方式尝试重新格式化重做日志

alter database clear logfile group 1;

但是该日志的当前在用的,系统报错


下面尝试切换日志

alter system switch logfile;

切换成功后,查询日志状态

SQL> select group#,sequence#,archived,status from v$log;


    GROUP#  SEQUENCE# ARC STATUS

---------- ---------- --- ----------------

1                 10 YES ACTIVE

2                 11 NO  CURRENT

3                   9 YES INACTIVE


再clear,可能依然报错,需要通过完全检查点推进,使得日志组1实例恢复不再需要。

alter database clear logfile group 1;

ERROR at line 1:

ORA-01624: log 1 needed for crash recovery of instance orcl (thread 1)

ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/orcl/redo01.log'

ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/orcl/redo01_2

alter system checkpoint;


继续clear

alter database clear logfile group 1;

此时成功!

验证:

 !ls -l /u01/app/oracle/oradata/orcl/redo*



其他

如新增日志组

alter database add logfile group 1 '/u01/app/oracle/oradata/orcl/redo01.log'  size 200m;


删除日志成员

alter database drop logfile member '/u01/app/oracle/oradata/orcl/redo01.log'


注意:操作系统文件依然存在,需要手工删除

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31540773/viewspace-3146567/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-07-18

  • 博文量
    169
  • 访问量
    1544