暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 12.2.0.1.0 PDB丢失数据文件对CDB的影响

IT小Chen 2021-04-14
448

Oracle 12.2.0.1.0 PDB丢失数据文件对CDB的影响

 

Oracle 12.1.0.1.0版本时:

当某一个PDB数据库丢失数据文件后,可能会导致所有整个CDB数据库宕机;

主要是_datafile_write_errors_crash_instance参数导致的,默认为true;

其中:

12.1版本多租户可以包含252PDB

12.2版本多租户可以包含4096PDB

 

如果因为其中一个PDB异常导致整个CDB都宕机,显然是不合理的;

 

因此在12.2.0.1版本,修复了这个问题;

 

实验如下:

OS: 

[root@chenjch ~]# cat etc/issue

Red Hat Enterprise Linux Server release 6.3 (Santiago)

Kernel \r on an \m

 

DB:Oracle 12.2.0.1.0

12.2.0.1.0版本_datafile_write_errors_crash_instance参数默认值也是TRUE

SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ

  FROM SYS.x$ksppi x, SYS.x$ksppcv y

 WHERE x.inst_id = USERENV('Instance')

   AND y.inst_id = USERENV('Instance')

   AND x.indx = y.indx

   AND x.ksppinm LIKE '%_datafile_write_errors_crash_instance%';

数据库启用归档模式;

SQL> archive log list;

Database log mode             Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     3

Next log sequence to archive   5

Current log sequence           5

 

实验之前先用RMANPDB做全库备份

[oracle12@chenjch ~]$ rman target

RMAN> backup pluggable database orclpdb;

RMAN 12C 备份

备份全部的数据库(包括CDB)

RMAN> BACKUP DATABASE;

只备份CDB

RMAN> BACKUP DATABASE ROOT;

只备份PDB(一个或多个)

rman target=sys/oracle@pdb1

RMAN> BACKUP DATABASE;

---或者

rman target /

RMAN> BACKUP PLUGGABLE DATABASE orclpdb;

多个数据库备份

RMAN> BACKUP PLUGGABLE DATABASE pdb1,pdb2;

 

删除或重命名orclpdb下的system01.dbf数据文件

[oracle12@chenjch orclpdb]$ pwd

/u01/app/oracle12/oradata/orcl/orclpdb

 

[oracle12@chenjch orclpdb]$ mv system01.dbf system01.dbf_bak

 

手动生成检查点

SQL> conn /as sysdba

SQL> alter system checkpoint;

 

查看警告日志

[root@chenjch trace]# pwd

/u01/app/oracle12/diag/rdbms/orcl/orcl/trace

 

[root@chenjch trace]# tail -f alert_orcl.log

2017-04-16T15:22:21.522848+08:00

Errors in file /u01/app/oracle12/diag/rdbms/orcl/orcl/trace/orcl_ckpt_9896.trc:

ORA-01243: system tablespace file suffered media failure

ORA-01116: error in opening database file 9

ORA-01110: data file 9: '/u01/app/oracle12/oradata/orcl/orclpdb/system01.dbf'

ORA-27041: unable to open file

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

2017-04-16T15:22:21.523233+08:00

Internal PDB shutdown abort of ORCLPDB (container=3)

ORCLPDB(3):JIT: pid 9866 requesting stop

2017-04-16T15:22:21.707754+08:00

Errors in file /u01/app/oracle12/diag/rdbms/orcl/orcl/trace/orcl_m000_10474.trc:

ORA-01110: data file 9: '/u01/app/oracle12/oradata/orcl/orclpdb/system01.dbf'

ORA-01565: error in identifying file '/u01/app/oracle12/oradata/orcl/orclpdb/system01.dbf'

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file or directory

Additional information: 7

2017-04-16T15:22:22.222205+08:00

Errors in file /u01/app/oracle12/diag/rdbms/orcl/orcl/trace/orcl_m000_10474.trc:

ORA-01110: data file 10: '/u01/app/oracle12/oradata/orcl/orclpdb/sysaux01.dbf'

ORA-01208: data file is an old version - not accessing current version

2017-04-16T15:22:22.474543+08:00

Errors in file /u01/app/oracle12/diag/rdbms/orcl/orcl/trace/orcl_m000_10474.trc:

ORA-01110: data file 11: '/u01/app/oracle12/oradata/orcl/orclpdb/undotbs01.dbf'

ORA-01208: data file is an old version - not accessing current version

2017-04-16T15:22:22.694146+08:00

Errors in file /u01/app/oracle12/diag/rdbms/orcl/orcl/trace/orcl_m000_10474.trc:

ORA-01110: data file 12: '/u01/app/oracle12/oradata/orcl/orclpdb/users01.dbf'

ORA-01208: data file is an old version - not accessing current version

 

此时CDB仍是OPEN状态,并没有自动关闭实例;

SQL> select status from v$instance;

STATUS

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

OPEN

 

PDB数据库处于mount状态,并且无法open

SQL> alter session set container=orclpdb;

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED

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

         3 ORCLPDB                        MOUNTED

 

SQL> startup

ORA-01113: file 12 needs media recovery

ORA-01110: data file 12: '/u01/app/oracle12/oradata/orcl/orclpdb/users01.dbf'

 

SQL> recover database;

ORA-00283: recovery session canceled due to errors

ORA-01110: data file 9: '/u01/app/oracle12/oradata/orcl/orclpdb/system01.dbf'

ORA-01157: cannot identify/lock data file 9 - see DBWR trace file

ORA-01110: data file 9: '/u01/app/oracle12/oradata/orcl/orclpdb/system01.dbf'

 

SQL> recover datafile 9;

ORA-00283: recovery session canceled due to errors

ORA-01110: data file 9: '/u01/app/oracle12/oradata/orcl/orclpdb/system01.dbf'

ORA-01157: cannot identify/lock data file 9 - see DBWR trace file

ORA-01110: data file 9: '/u01/app/oracle12/oradata/orcl/orclpdb/system01.dbf'

 

恢复system01.dbf数据文件

(1) 离线损失数据文件

SQL> alter database datafile 9 offline;

 

(2)rman执行恢复操作

[oracle12@chenjch ~]$ rman target /

RMAN> restore datafile 9;

RMAN> recover datafile 9;

 

(3)online受损文件,启动pdb;

SQL> alter session set container=orclpdb;

SQL> startup

ORA-01147: SYSTEM tablespace file 9 is offline

 

SQL> alter database datafile 9 online;

SQL> startup

ORA-01113: file 12 needs media recovery

ORA-01110: data file 12: '/u01/app/oracle12/oradata/orcl/orclpdb/users01.dbf'


SQL> recover database;

Media recovery complete.

SQL> startup

Pluggable Database opened.


文章转载自IT小Chen,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论