ORA-600 [12820] 导致alter database open打开数据库失败一例

如果打开数据库open database时遇到如下报错:

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

且其stack call 为:

 

 

ksedmp kgeriv kgeasi kkmevw kkmfcbvw kkmfcblo kkmpfcbk qcsprfro qcspafq qcspqb qcspqb kkmdrv 
opiSem opiDeferredSem opitca  rpiswu2 kksSetBindType kksfbc opiexe opoal8 opiodr kpoodrc 
rpiswu2 kpoodr upirtrc kpurcsc kpuexecv8 kpuexec OCIStmtExecute ktsmg_execute_sql ktsmgfru 
ktusmout_online_ut ktusmiut_init_ut ktuini adbdrv opiexe opiosq0 kpooprx kpoal8 opiodr ttcpip 
opitsk opiino opiodr  opidrv sou2o main start

 

ORA-00600 [12820]在这里 表达的是 数据库打开过程中发现在数据字典上 视图的定义长度和视图定义文本的实际长度之间有差别。

在一个特定的例子中,可能是如下的查询引发的报错:

select max(maxconcurrency) from sys.wrh$_undostat where instance_number = :1 and dbid = :2 and snap_id in (select snap_id from dba_hist_snapshot where end_interval_time > (select max(end_interval_time)-7 from dba_hist_snapshot))

 

sys.wrh$_undostat 是一张表

dba_hist_snapshot是视图上的同义词

 

有的时候却是可能是数据字典上的对应记录存在损坏的情况。尝试重建视图即可绕过这些问题。但如果是大量数据库视图都出现了问题,那么要重新运行catalog.sql。

针对该问题的解决需要设置部分隐藏参数,并重新运行数据库核心脚本catalog.sql。

 

Comment

*

沪ICP备14014813号

沪公网安备 31010802001379号