Oracle 10g New Feature:MAXTRANS參數已經廢棄

 

此前寫過兩篇文章,介紹ITL競爭的模擬,有朋友在留言版上留言無法模擬,經過詢問,得知在Oracle10g上無法再現我的試驗結果.

首先猜測是Oracle10g的處理方式不同,我決定動手來驗證一下,首先在Oracle9i中,創建一個測試表,設置MAXTRANS參數,結果如下:

SQL> connect eygle/eygle
Connected.
SQL> CREATE TABLE EYGLE_ITL
2 (C1 NUMBER,
3 C2 VARCHAR2(10)
4 )
5 INITRANS 1 MAXTRANS 1
6 /

Table created.

SQL> select table_name,INI_TRANS,MAX_TRANS from user_tables where table_name='EYGLE_ITL';

TABLE_NAME INI_TRANS MAX_TRANS
------------------------------ ---------- ----------
EYGLE_ITL 1 1

而在Oracle10g中,我們注意到MAXTRANS參數的設置已經無效:

[oracle@danaly ~]$ sqlplus eygle/eygle

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Jun 26 11:59:20 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options

SQL> CREATE TABLE EYGLE_ITL
2 (C1 NUMBER,
3 C2 VARCHAR2(10)
4 )
5 INITRANS 1 MAXTRANS 1
6 /

Table created.

SQL> select table_name,INI_TRANS,MAX_TRANS from user_tables where table_name='EYGLE_ITL';

TABLE_NAME INI_TRANS MAX_TRANS
------------------------------ ---------- ----------
EYGLE_ITL 1 255

我們注意到,不管如何設置,最終的MAX_TRANS都是255。

查閱Oracle手冊得到如下說明:

Note:In earlier releases of Oracle Database, the MAXTRANS parameter limited the number of transaction entries that could concurrently use data in a data block. This parameter has been deprecated.

Oracle Database now automatically allows up to 255 concurrent update transactions for any data block, depending on the available space in the block.
The database ignores MAXTRANS when specified by users only for new objects created when the COMPATIBLE initialization parameter is set to 10.0 or greater.

也就是說在Oracle10g中,對於單個數據塊,Oracle缺省最大支持255個併發,MAXTRANS參數被廢棄。

這就是網友在10g上無法模擬我的結果的原因。

總結一下:當我們想要找到一個答案時,步驟可能很簡單,只需要動手,思考。懶惰是要不得的,要知道天道酬勤

發佈了4 篇原創文章 · 獲贊 2 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章