联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
对于19c在pdb情况下三种常见故障进行了模拟测试:
模拟19c数据库redo异常恢复
模拟19c数据库pdb undo异常恢复
模拟19c数据库root pdb undo异常恢复
模拟oracle 19c数据库redo丢失的恢复操作,模拟数据库有事务,在没有提交的情况下redo丢失故障
[oracle@localhost oradata]$ ss SQL*Plus: Release 19.0.0.0.0 - Production on Mon Nov 16 16:11:16 2020 Version 19.5.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.5.0.0.0 SQL> conn xff/oracle@127.0.0.1/pdb Connected. SQL> create table t_xifenfei as select * from dba_objects; Table created. SQL> insert into t_xifenfei select * from t_xifenfei; insert into t_xifenfei select * from t_xifenfei; insert into t_xifenfei select * from t_xifenfei; insert into t_xifenfei select * from t_xifenfei; insert into t_xifenfei select * from t_xifenfei; 72351 rows created. SQL> 144702 rows created. SQL> 289404 rows created. SQL> 578808 rows created. SQL> 1157616 rows created.
另外一个会话kill数据库并且删除redo
[root@localhost ~]# ps -ef|grep pmon oracle 38500 1 0 16:08 ? 00:00:00 ora_pmon_ora19c root 39030 39009 0 16:11 pts/2 00:00:00 grep --color=auto pmon [root@localhost ~]# kill -9 38500 [root@localhost ~]# ps -ef|grep pmon root 39042 39009 0 16:11 pts/2 00:00:00 grep --color=auto pmon [root@localhost ~]# ls -l /u01/app/oracle/oradata/ORA19C/redo*.log ls: cannot access /u01/app/oracle/oradata/ORA19C/redo*.log: No such file or directory
启动数据库报错ORA-00313 ORA-00312 ORA-27037
SQL> startup ORACLE instance started. Total System Global Area 4999609088 bytes Fixed Size 9145088 bytes Variable Size 905969664 bytes Database Buffers 4076863488 bytes Redo Buffers 7630848 bytes Database mounted. ORA-00313: open failed for members of log group 3 of thread 1 ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/ORA19C/redo03.log' ORA-27037: unable to obtain file status Linux-x86_64 Error: 2: No such file or directory Additional information: 7
因为redo全部丢失只能尝试强制拉库
SQL> startup mount pfile='/tmp/pfile'
ORACLE instance started.
Total System Global Area 4999609088 bytes
Fixed Size 9145088 bytes
Variable Size 905969664 bytes
Database Buffers 4076863488 bytes
Redo Buffers 7630848 bytes
Database mounted.
SQL> recover database until cancel;
ORA-00279: change 2335666 generated at 11/16/2020 16:08:42 needed for thread 1
ORA-00289: suggestion :
/u01/app/oracle/product/19.2/db_1/dbs/arch1_12_1056620100.dbf
ORA-00280: change 2335666 for thread 1 is in sequence #12
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/u01/app/oracle/oradata/ORA19C/system01.dbf'
ORA-01112: media recovery not started
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-00603: ORACLE server session terminated by fatal error
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-00600: internal error code, arguments: [kcbzib_kcrsds_1], [], [], [], [],
[], [], [], [], [], [], []
Process ID: 39588
Session ID: 9 Serial number: 32012
数据库报ORA-600 kcbzib_kcrsds_1错误是由于在强制拉库过程中文件异常导致,通过对异常文件进行处理数据库open成功
SQL> recover database;
Media recovery complete.
SQL> alter database open;
Database altered.
SQL>
SQL> alter session set container=pdb;
Session altered.
SQL> alter database open;
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB READ WRITE NO
这个是模拟redo丢失或者损坏故障,在实际的生产故障中可能要比这个复杂很多.
