近期遭遇一个客户误truncate idl_ub1$表,导致数据库关闭后无法启动,在受到支援请求后在1小时内解决了此问题,遭遇了此类问题的处理方式主要如下,
以upgrade方式打开数据库,并截断相关表
startup upgrade truncate table idl_ub1$; truncate table idl_char$; truncate table idl_ub2$; truncate table idl_sb4$;
接着执行utlirp和rmjvm两个脚本,并关闭数据库
@c:\oracle\product\10.2.0\db_1\rdbms\admin\utlirp shutdown immediate startup upgrade @c:\oracle\product\10.2.0\db_1\javavm\install\rmjvm shutdown immediate exit
再次启动数据库后,设置监听为临时不可用状态并依据数据库组件状态运行相关脚本
startup upgrade alter system set "_system_trig_enabled"=false scope=memory; @c:\oracle\product\10.2.0\db_1\javavm\install\initjvm.sql -- 如果xml已经安装执行此脚本 @c:\oracle\product\10.2.0\db_1\xdk\admin\initxml.sql @c:\oracle\product\10.2.0\db_1\xdk\admin\xmlja.sql @c:\oracle\product\10.2.0\db_1\rdbms\admin\catjava.sql -- shutdown immediate exit
启动数据库并执行ultrp修复失效对象,运行编译修复后,修复完成。
startup upgrade @c:\oracle\product\10.2.0\db_1\rdbms\admin\utlrp exit SQLPLUS / AS SYSDBA shutdown immediate startup execute utl_recomp.recomp_serial(); exit