Skip to content

How to recreate idl_ub1$,idl_char$,idl_ub2$,idl_sb4$.

近期遭遇一个客户误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

发表评论

电子邮件地址不会被公开。 必填项已用*标注