联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
对于19c在pdb情况下三种常见故障进行了模拟测试:
模拟19c数据库redo异常恢复
模拟19c数据库pdb undo异常恢复
模拟19c数据库root pdb undo异常恢复
模拟oracle 19c cdb模式下root pdb中undo丢失故障恢复
会话1,pdb中插入大量数据,未提交
SQL> alter session set container=pdb; Session altered. SQL> alter database open; Database altered. SQL> create user xff identified by oracle default tablespace users; grant dba to xff; conn xff/oracle@127.0.0.1/pdb create table t_xifenfei as select * from dba_objects; 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; User created. SQL> Grant succeeded. SQL> Connected. SQL> Table created. SQL> 72351 rows created. SQL> 144702 rows created. SQL> 289404 rows created. SQL> 578808 rows created. SQL> 1157616 rows created. SQL> SQL> SQL>
会话2中root pdb模拟事务
[oracle@localhost ~]$ ss SQL*Plus: Release 19.0.0.0.0 - Production on Mon Nov 16 16:56:01 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> SQL> SQL> conn system/oracle Connected. SQL> create table t_xifenfei tablespace users as select * from dba_objects; 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; Table created. SQL> 72380 rows created. SQL> 144760 rows created. SQL> 289520 rows created. SQL> 579040 rows created. SQL> 1158080 rows created. SQL> SQL>
会话3 abort库并删除root pdb中undo文件
[oracle@localhost ~]$ ss SQL*Plus: Release 19.0.0.0.0 - Production on Mon Nov 16 16:56:55 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> shutdown abort; ORACLE instance shut down. SQL> [oracle@localhost oradata]$ cd ORA19C [oracle@localhost ORA19C]$ ls control01.ctl control02.ctl pdb pdbseed redo01.log redo02.log redo03.log sysaux01.dbf system01.dbf temp01.dbf undotbs01.dbf users01.dbf [oracle@localhost ORA19C]$ rm -rf undotbs01.dbf
启动数据库报ORA-01157 ORA-01110错误
SQL> alter database datafile 4 offline drop; Database altered. SQL> alter database open; Database altered. SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB MOUNTED SQL> alter session set container=pdb; Session altered. SQL> alter database open; Database altered. SQL> conn / as sysdba Connected. SQL> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB READ WRITE NO SQL> SQL> select tablespace_name,segment_name,status from dba_rollback_segs; TABLESPACE_NAME SEGMENT_NAME STATUS ------------------------------ ------------------------------ -------------------------------- SYSTEM SYSTEM ONLINE UNDOTBS1 _SYSSMU1_1261223759$ NEEDS RECOVERY UNDOTBS1 _SYSSMU2_27624015$ NEEDS RECOVERY UNDOTBS1 _SYSSMU3_2421748942$ NEEDS RECOVERY UNDOTBS1 _SYSSMU4_625702278$ NEEDS RECOVERY UNDOTBS1 _SYSSMU5_2101348960$ NEEDS RECOVERY UNDOTBS1 _SYSSMU6_813816332$ NEEDS RECOVERY UNDOTBS1 _SYSSMU7_2329891355$ NEEDS RECOVERY UNDOTBS1 _SYSSMU8_399776867$ NEEDS RECOVERY UNDOTBS1 _SYSSMU9_1692468413$ NEEDS RECOVERY UNDOTBS1 _SYSSMU10_930580995$ NEEDS RECOVERY
本次测试比较幸运,虽然undo段状态为NEEDS RECOVERY,但是数据库直接open成功.实际生产情况,可能比这个要复杂很多