• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ORACLE 12C redo异常恢复测试—部分pdb未正常open

mysql 搞代码 4年前 (2022-01-09) 21次浏览 已收录 0个评论

为了验证当前redo丢失的情况下ORACLE 12C CDB数据库恢复的情况,做了一个小实验,三个会话,分别操作为在root pdb中执行一个delete 不提交;另外一本文来源gao($daima.com搞@代@#码8网^个会话在user pdb中delete记录不提交;最后一个会话中直接abort数据库,然后进行数据库恢复,验证数据库是否可

为了验证当前redo丢失的情况下ORACLE 12C CDB数据库恢复的情况,做了一个小实验,三个会话,分别操作为在root pdb中执行一个delete 不提交;另外一个会话在user pdb中delete记录不提交;最后一个会话中直接abort数据库,然后进行数据库恢复,验证数据库是否可以都正常open(所有pdb)
会话1(root pdb中操作)

CDB_CDB$ROOT@SYS> show pdbs;    CON_ID CON_NAME                       OPEN MODE  RESTRICTED---------- ------------------------------ ---------- ----------         2 PDB$SEED                       READ ONLY  NO         3 PDB                            READ WRITE NOCDB_CDB$ROOT@SYS> show con_nameCON_NAME------------------------------CDB$ROOTCDB_CDB$ROOT@SYS> create table t_xifenfei as select * from dba_objects;表已创建。CDB_CDB$ROOT@SYS> delete from t_xifenfei;已删除 91032 行。CDB_CDB$ROOT@SYS>

会话2(user pdb中操作)

CDB_CDB$ROOT@SYS> show con_nameCON_NAME------------------------------PDBCDB_CDB$ROOT@SYS> drop table t_xifenfei purge;表已删除。CDB_CDB$ROOT@SYS> create table t_xifenfei as select * from dba_objects;表已创建。CDB_CDB$ROOT@SYS> delete from t_xifenfei;已删除 91144 行。

会话3(直接abort数据库)

CDB_CDB$ROOT@SYS> shutdown abort;ORACLE 例程已经关闭。

删除数据库联机日志

E:\app\XIFENFEI\oradata\cdb>dir redo*.log 驱动器 E 中的卷是 本地磁盘 卷的序列号是 000C-3B41 E:\app\XIFENFEI\oradata\cdb 的目录2013-08-07  01:41        52,429,312 REDO01.LOG2013-08-07  01:40        52,429,312 REDO02.LOG2013-08-07  01:40        52,429,312 REDO03.LOG2014-03-20  22:47        52,432,896 REDO04.LOG2014-03-20  22:47        52,432,896 REDO05.LOG2014-03-20  22:47        52,432,896 REDO06.LOG               6 个文件    314,586,624 字节               0 个目录 21,359,374,336 可用字节E:\app\XIFENFEI\oradata\cdb>del redo*.logE:\app\XIFENFEI\oradata\cdb>dir redo*.log 驱动器 E 中的卷是 本地磁盘 卷的序列号是 000C-3B41 E:\app\XIFENFEI\oradata\cdb 的目录找不到文件

启动数据库报ORA-00313错误

idle> startupORACLE 例程已经启动。Total System Global Area  521936896 bytesFixed Size                  2404552 bytesVariable Size             205524792 bytesDatabase Buffers          306184192 bytesRedo Buffers                7823360 bytes数据库装载完毕。ORA-00313: 无法打开日志组 6 (用于线程 1) 的成员ORA-00312: 联机日志 6 线程 1: 'E:\APP\XIFENFEI\ORADATA\CDB\REDO06.LOG'ORA-27041: 无法打开文件OSD-04002: 无法打开文件O/S-Error: (OS 2) 系统找不到指定的文件。

使用_allow_resetlogs_corruption参数尝试open数据库

idle> shutdown abortORACLE 例程已经关闭。idle> startup pfile='d:/pfile.txt' mountORACLE 例程已经启动。Total System Global Area  521936896 bytesFixed Size                  2404552 bytesVariable Size             205524792 bytesDatabase Buffers          306184192 bytesRedo Buffers                7823360 bytes数据库装载完毕。idle> show parameter resetlogs;NAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------_allow_resetlogs_corruption          boolean     TRUEidle> recover database until cancel;ORA-00279: 更改 12696935641735 (在 03/20/2014 22:38:52 生成) 对于线程 1是必需的ORA-00289: 建议:E:\APP\XIFENFEI\FAST_RECOVERY_AREA\CDB\ARCHIVELOG\2014_03_20\O1_MF_1_872_9LOZSK9X_.ARCORA-00280: 更改 12696935641735 (用于线程 1) 在序列 #872 中指定日志: {=suggested | filename | AUTO | CANCEL}cancelORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误ORA-01194: 文件 1 需要更多的恢复来保持一致性ORA-01110: 数据文件 1: 'E:\APP\XIFENFEI\ORADATA\CDB\SYSTEM01.DBF'ORA-01112: 未启动介质恢复idle> alter database open resetlogs;alter database open resetlogs*第 1 行出现错误:ORA-00603: ORACLE server session terminated by fatal errorORA-00600: internal error code, arguments: [2662], [2956], [1012314778],[2956], [1012314903], [268435600], [], [], [], [], [], []ORA-00600: internal error code, arguments: [2662], [2956], [1012314777],[2956], [1012314903], [268435600], [], [], [], [], [], []ORA-01092: ORACLE instance terminated. Disconnection forcedORA-00600: internal error code, arguments: [2662], [2956], [1012314768],[2956], [1012314903], [268435600], [], [], [], [], [], []进程 ID: 9268会话 ID: 92 序列号: 3

ora-600[2662]很熟悉,文件头的scn小于文件中某个block的csn,通过bbed等工具修改文件scn,尝试启动数据库

CDB_CDB$ROOT@SYS> SHUTDOWN ABORTORACLE 例程已经关闭。CDB_CDB$ROOT@SYS> STARTUPORACLE 例程已经启动。Total System Global Area  521936896 bytesFixed Size                  2404552 bytesVariable Size             205524792 bytesDatabase Buffers          306184192 bytesRedo Buffers                7823360 bytes数据库装载完毕。数据库已经打开。

尝试open user pdb

CDB_CDB$ROOT@SYS> alter session set container=pdb;会话已更改。CDB_CDB$ROOT@SYS> alter database open;alter database open*第 1 行出现错误:ORA-00600: 内部错误代码, 参数: [kcvfdb_pdb_set_clean_scn: cleanckpt], [3],[2956], [1012312995], [2956], [1012334778], [2], [], [], [], [], []

查询mos得到结论:
Bug 16784143 ORA-600 [kcvfdb_pdb_set_clean_scn: cleanckpt] with PDBs
在12.2/12.1.0.2/12.1.0.1.1中修复,后续尝试打patch,来进一步恢复.


测试结果证明
1.root pdb的open过程和以前版本数据库无大差异,但是scn推进比较费劲,以前的event和隐含参数方法无效
2.user pdb再是看是因为bug无法open,后续继续验证
3.12.1的base 版本可能确实问题很多,生产使用慎重

  • ORACLE 12C redo异常恢复测试—打上patch恢复完全
  • ORACLE 12C 控制文件异常恢复
  • ORACLE 12C Windows-Linux 部署DATAGURAD
  • 通过修改控制文件scn推进数据库scn
  • 记录8.0.5数据库恢复过程
  • 异常断电导致current redo损坏处理
  • pdb正常运行丢失数据文件相关恢复
  • 当前联机日志损坏恢复

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ORACLE 12C redo异常恢复测试—部分pdb未正常open

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址