oracle强行起库流程

2 篇文章 0 订阅

环境模拟:单机11204,开归档数据库,做写入事务时,删除所有redo。无备份。(2662可以模拟,4193模拟的效果不好没有undo损坏段)

大致流程

  1. 使用临时参数文件起mount
  2. 重建控制文件
  3. 推进控制文件scn
  4. Open resetlogs
  5. 重建undo
  6. 正常启动与后续工作(原则上所有强起的库都要做导出重建库)

 

隐含参数强起库

一般流程

1、配置隐含参数

2、恢复控制文件、或使用原控制文件启动到mount

3、恢复数据库(using backup controlfile)

4、Open resetlogs

在open resetlogs遇到需要恢复dbf1,需要按如下流程

  1. 重建控制文件
  2. 推进scn(先做recover until cancel,不做也应该可以)
  3. Open resetlogs

 

 

配置单实例的pfile参数文件,方便修改

cluster_database=false                      ###关闭集群模式,修复完成前不使用rac启动

_allow_resetlogs_corruption=true      ###允许resetlogs损坏打开,redo与datafile损坏

Startup nomount pfile=‘/home/oracle/init.ora’

用以下sql查询dbf状态信息

select file#,checkpoint_change#,fuzzy from v$datafile_header;

#######mount状态下,fuzzy状态为yes情况下必须设置_allow_resetlogs_corruption=true

#######开库前的数据库scn应为全平

用以下语句重新生成控制文件

alter database backup controlfile to trace;

#######内有4个创建语句,(no)archivelog\(no)resetlog条件组合,

#######根据数据库状态与redolog是否损坏选择。我这里用arcivelog resetlogs

注1:重建控制文件内不存在tempfile,需要手添加tempfile

Alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/prod/temp01.dbf’size 5m autoextend on;

 

ora600【2662】、【2663】 控制文件scn不足

一般强制起库时会遇到以下报错

ERROR at line 1:

ORA-00603: ORACLE server session terminated by fatal error

ORA-00600: internal error code, arguments: [2662], [0], [2419301], [0],

[2462324], [12583040], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [2662], [0], [2419300], [0],

[2462324], [12583040], [], [], [], [], [], []

ORA-01092: ORACLE instance terminated. Disconnection forced

ORA-00600: internal error code, arguments: [2662], [0], [2419298], [0],

[2462324], [12583040], [], [], [], [], [], []

Process ID: 7568

Session ID: 1 Serial number: 5

 

2662\2663都是scn不足的报错。处理方法相同。

黄底字样是当前的scn,蓝底字样是起库需要的scn

常用的推进工具有以下

  1. Oradebug工具,详见后
  2. 事件event 10015(adjust scn事件)###12c后摒弃

Mount状态时,alter session set event 10015 trace name adjust_scn level 1;

3、隐含参数_minimum_giga_scn###该隐含参数仅支持10g

_minimum_giga_scn=1000

 

Oradebug流程见下

SQL> oradebug setmypid

Statement processed.

SQL> oradebug dumpvar sga kcsgscn_

kcslf kcsgscn_ [06001AE70, 06001AEA0) = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 6001AB50 00000000

SQL> oradebug poke 0x06001AE70 8 1073741824               ####要推进值算法见后

BEFORE: [06001AE70, 06001AE78) = 00000000 00000000

AFTER:    [06001AE70, 06001AE78) = 40000000 00000000

SQL> alter database open resetlogs;

概念

ORA-00600: internal error code, arguments: [2662], [0],      [2419301], [0],[2462324], [12583040],

                                                                          scn wrap   scn base

数据库scn计算

scn=scn wrap * power(2,32)+scn base

推进的scnscn/1024/1024/1024后向上取整,再*1024*1024*1024

 

 

 

ora600【4193】、【4194】、【4197】undo损坏

一般流程为

1、Undo设置manual起库

2、新建undotbs,查询损坏undo段

3、指定新undotbs,屏蔽undo段启动

4、重建之前的undotbs

5、恢复之前的参数状态启动

 

 

 

数据库启动后,或启动时alert中看到

Errors in file /u01/app/oracle/diag/rdbms/prod/PROD/trace/PROD_mmon_7620.trc  (incident=27730):

ORA-00600: internal error code, arguments: [4193], [], [], [], [], [], [], [], [], [], [], []

Incident details in: /u01/app/oracle/diag/rdbms/prod/PROD/incident/incdir_27730/PROD_mmon_7620_i27730.trc

可能遇到无法启动,先设置参数

undo_management=manual

一般可以启动

查询故障的undo段

select SEGMENT_ID,SEGMENT_NAME,STATUS,TABLESPACE_NAME from dba_rollback_segs where status not in('ONLINE','OFFLINE')

 

查询死掉的事务

select KTUXEUSN,KTUXESLT,KTUXESTA,KTUXECFL,KTUXESIZ from x$ktuxe where KTUXESTA='ACTIVE' and KTUXECFL='DEAD';

 

重建新的undo表空间,将实例表空间指向该新表空间(spfile),设置隐含参数屏蔽undo段,启动。

 

Undo_tablespace=undotbs9

_corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)

 

重建undotbs

Drop tablespace undotbs1;

 

Create undo tablespace undotbs1 datafile ‘/u01/app/oracle/oradata/prod/undotbs1.dbf’ size 500m autoextend on;

 

官方参考文献

281429.1

Basic Steps to be Followed While Solving ORA-00600 [4194]/[4193] Errors Without Using Unsupported parameter (文档 ID 281429.1)

1428786.1

Step by step to resolve ORA-600 4194 4193 4197 on database crash (文档 ID 1428786.1)

28929.1

ORA-600 [2662] "Block SCN is ahead of Current SCN" (文档 ID 28929.1)

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值