在Oracle的官方文档里这样描述道:
CBO Disable column stats for the dictionary objects in recursive SQL
即可以将部分对象从启动的bootstrap$需要里剥离出来,从而可以被在线rebuild.
简单的说可以这样理解:
Oracle数据库启动时,加载各种内部对象、视图,而如果某个视图、对象出现故障(如坏块),就无法加载过去,数据库会启动失败或者出现故障。
而38003事件的目的就是,把一部分的加载对象剥离出来(但是只是暂时的),从而让数据库能正常启动,让你可以修复这些错误(如重建视图等等)。
示例:在正常模式下,Oracle不允许rebuild这些索引:
SQL> alter index I_H_OBJ#_COL# rebuild;
alter index I_H_OBJ#_COL# rebuild
*
ERROR at line 1:
ORA-00701: object necessary for warmstarting database cannot be altered
有两种方式可以使得这些对象允许被重建:
1、通过migrate模式(migrate模式就是激活38003的,因为UPGRADE的时候需要更新部分BOOTSTRAP$对象)
SQL> shutdown immediate;
SQL> startup migrate;
SQL> alter index I_H_OBJ#_COL# rebuild;
SQL> shutdown immediate;
SQL> startup
2、使用EVENT 38003来重建BOOTSTRAP$对象
SQL> alter system set events '38003 trace name context forever, level 10' scope=spfile;