Oracle

在 ORACLE 12 C 中創建新表時設置 PCTUSED 等參數

  • June 21, 2016

在 ORACLE 12 C 中創建新表時,是否需要顯式設置 PCTUSED、PCTFREE、INITRANS、MAXTRANS、STORAGE 等參數(如下例所示)?

或者 ORACLE 會自動有效地設置這些值嗎?開發人員通常傾向於忽略這些參數,因為他們只關注表/模式/數據模型的創建——任何應用程序執行所需的“最低限度”!

CREATE TABLE TABLE1
(
COL1 VARCHAR2(28 BYTE) NOT NULL
.....
)
PCTUSED    40
PCTFREE    10
INITRANS   1
MAXTRANS   255
STORAGE    (
           INITIAL          64K
           MINEXTENTS       1
           MAXEXTENTS       2147483645
           PCTINCREASE      0
           FREELISTS        1
           FREELIST GROUPS  1
           BUFFER_POOL      DEFAULT
          )
LOGGING 
NOCOMPRESS 
NOCACHE
NOPARALLEL
MONITORING;

“或者 ORACLE 會自動有效地設置這些值”

好吧,Oracle 會預設將它們設置為某些東西……雖然可能不是很“有效”;)為此,您將需要對您需要的東西進行一些研究和基礎工作。

正如 Wernfried 在評論中提到的,本地管理的表空間是要走的路,一旦你定義了這些,為每個表指定這些選項是浪費的——Oracle 將忽略它們。

通常認為為使用的不同類型的表設置某些類型的表空間會更好。

小型的、主要是只讀的表:1 個表空間:設置為小的 Extent 大小和 small/0 pctincrease。

更大、高度易變的表:另一個表空間:更大的範圍大小、更大的 pctincrease ..

等等。你需要弄清楚你的需求是什麼,你有什麼樣的表(然後你想要什麼表空間/儲存選項)。

引用自:https://dba.stackexchange.com/questions/141778