« Oracle SQLID 与 Hash_value 算法及转换 | Blog首页 | 日志信息:kewastUnPackStats(): bad magic 1 - Bug »
Event 38003 与 C_OBJ#_INTCOL# 对象清理
作者:eygle | 【转载请注出处】|【云和恩墨 领先的zData数据库一体机 | zCloud PaaS云管平台 | SQM SQL审核平台 | ZDBM 数据库备份一体机】
链接:https://www.eygle.com/archives/2012/05/event_38003_c_obj_intcol.html
在很多朋友的数据库中,聚簇对象 C_OBJ#_INTCOL# 占用了大量空间,有时候希望通过TRUNCATE清理这个对象,注意,当然最好不要这么做,风险太高。链接:https://www.eygle.com/archives/2012/05/event_38003_c_obj_intcol.html
但是当遇到坏块时,如下:
Sat May 26 06:00:11 2012
Corrupt Block Found
TSN = 0, TSNAME = SYSTEM
RFN = 1, BLK = 38287, RDBA = 4232591
OBJN = 253, OBJD = 251, OBJECT = C_OBJ#_INTCOL#, SUBOBJECT =
SEGMENT OWNER = SYS, SEGMENT TYPE = Cluster Segment
就可能可以尝试一下,使用特殊的手段进行恢复尝试。
设置 38003 事件,可以将对象 C_OBJ#_INTCOL# 从启动依赖中暂时剥离出来:
alter system set event='38003 trace name context forever, level 10' scope=spfile;
然后重启数据库,可以Truncate该对象:
SQL> truncate cluster c_obj#_intcol#;
Cluster truncated.
此后去掉参数,重启数据库即可。

聚簇对象 C_OBJ#_INTCOL# 存储着柱状图信息, histgrm$ 基于其创建:
rem注意:如果选择安全的方式,建议导出数据,重建数据库,如果有备份,通过备份进行块恢复是最好的选择。
rem Histograms
rem
create cluster c_obj#_intcol#
( obj# number, /* object number */
intcol# number) /* internal column number */
pctfree 5
storage (initial 2m next 200k maxextents unlimited pctincrease 0)
/
create index i_obj#_intcol# on cluster c_obj#_intcol#
storage (maxextents unlimited)
/
create table histgrm$ /* histogram table */
( obj# number not null, /* object number */
col# number not null, /* column number */
row# number, /* row number (in row cache) */
bucket number not null, /* bucket number */
endpoint number not null, /* endpoint hashed value */
intcol# number not null, /* internal column number */
epvalue varchar2(1000), /* endpoint value information */
spare1 number,
spare2 number)
cluster c_obj#_intcol#(obj#, intcol#)
/
create index i_h_obj#_col# on histgrm$(obj#, col#)
storage (maxextents unlimited)
/
可以参考以下链接:
http://www.eygle.com/archives/2007/02/ora_00701_warmstarting.html
By eygle on 2012-05-28 15:21 | Comments (0) | Backup&Recovery | 3014 |