eygle.com   eygle.com
eygle.com  
 

« ITPUB年会日程已定-我的20分钟 | Blog首页 | 遭遇不明流量攻击 网络是危险的 »

系统对象IDL_UB1$表的含义及作用

作者:eygle |【转载时请务必以超链接形式标明文章和作者信息及本声明
链接:
在ITPUB上有朋友遇到SYSTEM表空间快速扩展的问题

系统表空间异常扩展的情况遇到过很多:
有的和用户表空间或对象分配不当有关
有的和高级复制的空间使用有关....

经过如下代码查询,可以找出系统表空间中占用空间最多的Top9对象:
col segment_name for a25
col owner for a10
SELECT *
  FROM (SELECT   BYTES, segment_name, segment_type, owner
            FROM dba_segments
           WHERE tablespace_name = 'SYSTEM'
        ORDER BY BYTES DESC)
 WHERE ROWNUM < 10
/

这个朋友的Top9对象为:
1    3082174464  IDL_UB1$	TABLE	SYS
2    63979520      SOURCE$	TABLE	SYS
3    12075008      IDL_UB2$	TABLE	SYS
4    7749632	      DEPENDENCY$	TABLE	SYS
5    7356416	      I_DEPENDENCY2	INDEX	SYS
6    6438912	      I_DEPENDENCY1	INDEX	SYS
7    5521408	      I_IDL_UB11  	INDEX	SYS
8    4341760	      IDL_SB4$	TABLE	SYS
9    3555328	      I_ACCESS1  	INDEX	SYS

我们注意到占用空间最大的对象是IDL_UB1$系统表,空间占用近3G,那么这个表是做什么用的呢?
从sql.bsq中我们可以找到这个表的创建语句:
create table idl_ub1$                            /* idl table for ub1 pieces */
( obj#          number not null,                            /* object number */
  part          number not null,
         /* part: 0 = diana, 1 = portable pcode, 2 = machine-dependent pcode */
  version       number,                                    /* version number */
  piece#        number not null,                             /* piece number */
  length        number not null,                             /* piece length */
  piece         long raw not null)                              /* ub1 piece */
  storage (initial 10k next 100k maxextents unlimited pctincrease 0)
/


idl_ub1$表是用来存储PL/SQL的代码单元的,包括DIANA等,IDL在这里代表Interface Definition Language.
这个对象的含义可以从Ixora找到一点提示:
It is an intermediate language in which the structure of database tables and the logic of PL/SQL program units can be consistently represented as attributed trees. Oracle uses the DIANA IDL, which comes from compilers for the Ada programming language. DIANA stands for Descriptive Intermediate Attributed Notation for Ada. Anyway, this is one of four tables in the data dictionary used to store the DIANA for PL/SQL program units, and the database objects that they reference.


在高级复制中会用到这个表,所以可能导致这个表快速增长,在Oracle10g之前,高级复制需要考虑的事情的确很多。

-The End-

By eygle on 2007-01-17 11:10 | Comments (7) | Posted to Internal | Edit |Pageviews:

相关文章 随机文章
  • Oracle9i与Oracle10g之间的高级复制配置
  • 如何将复制队列表移出系统(SYSTEM)表空间
  • 高级复制下如何强制删除废弃复制组
  • 高级复制下如何强制删除复制组
  • 高级复制的整体规划也很重要
  • 转载一篇长文-清华梦的粉碎—写给清华大学的退学申请
    spam留言知几何之三
    写给朋友的一封信-新年快乐
    扩展Oracle10gR2 ASM磁盘空间
    Oracle HowTo:如何快速杀死占用过多资源(CPU,内存)的数据库进程
    网上相关主题:
    Google

    留言 (7)

    我是用Google Reader 订阅的,
    看到 () WHERE ROWNUM < 10, 便觉得此人出手不凡.

    随手点击 "Show original item", 原来是eygle.

    我向来不对(g)v$ and DBA_/ALL_ 以外的内部数据字典作研究, (Tom 也是这么推荐的, 嘻嘻)
    看来时不时,还是有帮助的.

    前两天看到类似的内部系统表在增长, 好像是C_OBJ#_INTCOL#,
    而且它的 Logical Reads 急剧频繁,
    我重建了 a single hash cluster table, 就好了.

    Posted by: zhu1 (木匠) at January 18, 2007 2:04 AM

    大师:我的库是100M,
    那怎么处理呢.能不能使减少?

    Posted by: lily at January 18, 2007 9:13 AM

    to zhu1;
    你现在是自在逍遥啊,幸福!

    to lily;
    要看内容是什么,用的高级复制么?

    Posted by: eygle at January 18, 2007 9:33 AM

    OK, here is the top SQL ordered by CPU Time and Logical Reads in 1 hour AWR snapshot,
    I guess them related to Oracle SQL optimizer.
    帮忙给看看, they showed up when rows in Single Hash Cluster table excess the HASHKEYS(7200000) limit.

    histgrm$ 这张表最能说明问题, 数据分布信息.
    而icol$, ccol$, cdef$ 都不知道是干啥的...
    可能是Column的相关信息.

    1) Executions 527,125/hour
    select /*+ rule */ bucket, endpoint, col#, epvalue from histgrm$ where obj#=:1 and intcol#=:2 and row#=:3 order by bucket;

    2) 507,681 times/hour
    select /*+ rule */ bucket_cnt, row_cnt, cache_cnt, null_cnt, timestamp#, sample_size, minimum, maximum, distcnt, lowval, hival, density, col#, spare1, spare2, avgcln from hist_head$ where obj#=:1 and intcol#=:2;

    3) 57,932 times/hour
    select i.obj#, i.ts#, i.file#, i.block#, i.intcols, i.type#, i.flags, i.property, i.pctfree$, i.initrans, i.maxtrans, i.blevel, i.leafcnt, i.distkey, i.lblkkey, i.dblkkey, i.clufac, i.cols, i.analyzetime, i.samplesize, i.dataobj#, nvl(i.degree, 1), nvl(i.instances, 1), i.rowcnt, mod(i.pctthres$, 256), i.indmethod#, i.trunccnt, nvl(c.unicols, 0), nvl(c.deferrable#+c.valid#, 0), nvl(i.spare1, i.intcols), i.spare4, i.spare2, i.spare6, decode(i.pctthres$, null, null, mod(trunc(i.pctthres$/256), 256) ), ist.cachedblk, ist.cachehit, ist.logicalread from ind$ i, ind_stats$ ist, (select enabled, min(cols) unicols, min(to_number(bitand(defer, 1))) deferrable#, min(to_number(bitand(defer, 4))) valid# from cdef$ where obj#=:1 and enabled > 1 group by enabled) c where i.obj#=c.enabled(+) and i.obj# = ist.obj#(+) and i.bo#=:1 ;

    4) 399,948 times per hour

    select intcol#, nvl(pos#, 0), col#, nvl(spare1, 0) from ccol$ where con#=:1;

    Posted by: zhu1 (木匠) at January 19, 2007 1:25 PM

    这几个表分别是:

    icol$ /* index column table */
    ccol$ /* constraint column table */
    cdef$ /* constraint definition table */

    Posted by: eygle at January 19, 2007 2:24 PM

    没有用高级复制

    Posted by: lily at January 19, 2007 5:07 PM

    zhu1 的问题,我的系统中也遇到了,如何解决?请教eygle老师

    Posted by: yxyup at October 12, 2007 5:56 PM

    发表留言:



    Remember Me?
    (输入验证码后方可评论,谢谢支持)



    CopyRight © 2004 eygle.com, All rights reserved.