• Oracle 10g 对象 默认 ITL 数量 测试



    Oracle 的每个Block上都有一个部分,叫做ITL,其用来保存事务的信息。 有关ITL的说明参考:

    OraceITL(Interested Transaction List) 说明

    http://blog.csdn.net/tianlesoftware/article/details/6573988

    对象的ITL数由对象的initrans 和 maxtrans 参数决定,Oracle 官方文档中记载:initrans 的默认值是1,maxtrans 是255. 实际上任何block中的ITL 都是可以根据需要动态增长的,只要block里还有足够的空间。ITL的最大数限制是255,实际上其大小受data block的大小决定。 在Oracle 10g之后的版本,对于8KB的block size,最大的ITL数只能是169.

    Oracle Table创建参数 说明

    http://blog.csdn.net/tianlesoftware/article/details/4954417

    Oracle之前版本中,表的initrans参数默认值是1,但是最近的版本中Oracle改成2,即使数据字典还是显示为1.

    下面我们在Oracle10.2.0.4 的环境下测试一下这个默认值到底是多少。

    [oracle@localhost ~]$ sqlplus / as sysdba;

    SQL*Plus: Release 10.2.0.4.0 - Productionon 星期四 6月 7 09:37:32 2012

    Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

    Connected to:

    Oracle Database 10g Enterprise EditionRelease 10.2.0.4.0 - Production

    With the Partitioning, Data Mining and RealApplication Testing options

    SQL> create table anqing(id number,namevarchar2(20));

    Table created.

    SQL> insert into anqingvalues(1,'tianlesoftware');

    1 row created.

    SQL> commit;

    Commit complete.

    SQL> select distinctdbms_rowid.rowid_block_number(rowid) from anqing;

    DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)

    ------------------------------------

                                   94658

    从这个语句我们可以判断该表使用了一个block94658

    --确认block 存在具体datafile编号:

    SQL> selectdbms_rowid.rowid_relative_fno(rowid) file_id,dbms_rowid.rowid_block_number(rowid)block_id from anqing;

      FILE_ID   BLOCK_ID

    ---------- ----------

            1      94658

    --dump Block,确认ITL数量:

    SQL> alter system dump datafile 1 block94658;

    System altered.

    --查看trace 文件:

    SQL> oradebug setmypid

    Statement processed.

    SQL> oradebug tracefile_name

    /oradata/XEZF/admin/udump/xezf_ora_31544.trc

    这里确实是2条ITL信息。现在我们看一下表默认的创建参数值:

    SQL> set long 2000000

    SQL> set pagesize 0

    SQL> executedbms_metadata.set_transform_param(dbms_metadata.session_transform,'storage',false);

    --该语句是在会话级别设置不显示某些属性,让我们的返回结果看上去更简洁。

    PL/SQL procedure successfully completed.

    SQL> selectdbms_metadata.get_ddl('TABLE','ANQING','SYS') from dual;

     CREATE TABLE "SYS"."ANQING"

      (    "ID" NUMBER,

           "NAME" VARCHAR2(20)

       )

    PCTFREE 10 PCTUSED 40

    INITRANS 1 MAXTRANS 255

    NOCOMPRESS LOGGING

    TABLESPACE "SYSTEM"

     

    --注意这里返回的结果:initrans 1. 因此也即使说即使我们的数据字典里ITL初始化值是1,但在实际创建时使用的ITL数为2.

    SQL> executedbms_metadata.set_transform_param(dbms_metadata.session_transform,'default');

    PL/SQL procedure successfully completed.

    --还原设置

    更多查看Oracle 对象源码参考:

    Oracle 查看 表 存储过程 触发器 函数 等对象定义语句的方法

    http://blog.csdn.net/tianlesoftware/article/details/5679293

    -------------------------------------------------------------------------------------------------------

    版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

    Skype: tianlesoftware

    QQ:              tianlesoftware@gmail.com

    Email:   tianlesoftware@gmail.com

    Blog:     http://www.tianlesoftware.com

    Weibo: http://weibo.com/tianlesoftware

    Twitter: http://twitter.com/tianlesoftware

    Facebook: http://www.facebook.com/tianlesoftware

    Linkedin: http://cn.linkedin.com/in/tianlesoftware

    -------加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请----

    DBA1 群:62697716(满);   DBA2 群:62697977(满)  DBA3 群:62697850(满)  

    DBA 超级群:63306533(满);  DBA4 群:83829929   DBA5群: 142216823

    DBA6 群:158654907    DBA7 群:172855474   DBA总群:104207940


  • 相关阅读:
    Linux下的压缩zip,解压缩unzip命令具体解释及实例
    编程验证哥德巴赫猜想
    HDU 4735 Little Wish~ lyrical step~(DLX , 反复覆盖)
    The 2013 South America/Brazil Regional Contest 题解
    【 D3.js 高级系列 — 2.0 】 捆图
    怎么让百度收录站点的图片呢?
    ios-UI1
    oc85--利用宏定义简化单例
    oc84--单利
    oc83--自定义类实现copy方法
  • 原文地址:https://www.cnblogs.com/tianlesoftware/p/3609267.html
Copyright © 2020-2023  润新知