Oracle 10g 對象 默認(rèn) ITL 數(shù)量 測試 |
發(fā)布時間: 2012/9/4 17:31:58 |
Oracle 的每個Block上都有一個部分,叫做ITL,其用來保存事務(wù)的信息。 對象的ITL數(shù)由對象的initrans 和 maxtrans 參數(shù)決定,Oracle 官方文檔中記載:initrans 的默認(rèn)值是1,maxtrans 是255. 實際上任何block中的ITL 都是可以根據(jù)需要動態(tài)增長的,只要block里還有足夠的空間。ITL的最大數(shù)限制是255,實際上其大小受data block的大小決定。 在Oracle 10g之后的版本,對于8KB的block size,最大的ITL數(shù)只能是169.-
Oracle之前版本中,表的initrans參數(shù)默認(rèn)值是1,但是最近的版本中Oracle改成2,即使數(shù)據(jù)字典還是顯示為1.
[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
從這個語句我們可以判斷該表使用了一個block:94658。
--確認(rèn)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,確認(rèn)ITL數(shù)量: 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信息,F(xiàn)在我們看一下表默認(rèn)的創(chuàng)建參數(shù)值:
SQL> set long 2000000 SQL> set pagesize 0 SQL> executedbms_metadata.set_transform_param(dbms_metadata.session_transform,'storage',false); --該語句是在會話級別設(shè)置不顯示某些屬性,讓我們的返回結(jié)果看上去更簡潔。
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" --注意這里返回的結(jié)果:initrans 是1. 因此也即使說即使我們的數(shù)據(jù)字典里ITL初始化值是1,但在實際創(chuàng)建時使用的ITL數(shù)為2. SQL> executedbms_metadata.set_transform_param(dbms_metadata.session_transform,'default'); PL/SQL procedure successfully completed. --還原設(shè)置
本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |