联系:手机/微信(+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丢失或者损坏故障,在实际的生产故障中可能要比这个复杂很多.