Oracle

如何更改已經製作好的表(sql developer)的儲存參數?

  • September 2, 2020

總結問題 我已經得到了 6 個已經創建的表,並被告知要更改這些表的儲存參數。我遇到的問題是我只能更改 pctfree、pctused、initrans 和 max trans 而不能更改其他(initial、next、pctincrease 和 maxextents)

提供詳細資訊和任何研究

我做了很多研究,但其中一些根本不適用於 sql developer。雖然其他人確實有效,但僅針對 4 個儲存參數進行了說明。

在適當的時候,描述你嘗試過的東西

alter table CUSTOMERS
pctused 20 pctfree 80;

這對這兩個非常有效,但我無法添加其他的。從我在網上找到的內容來看,這實際上是唯一對我有用的東西。

我感謝所有輸入!

現有表的範圍參數不能更改,它們是在創建表時指定的。您可以通過重新組織表格來更改它們。

SQL> select INITIAL_EXTENT, NEXT_EXTENT, MAX_EXTENTS, PCT_INCREASE
    from user_tables where table_name = 'T1';

INITIAL_EXTENT NEXT_EXTENT MAX_EXTENTS PCT_INCREASE
-------------- ----------- ----------- ------------
        65536     1048576  2147483645

SQL>  alter table t1 storage(initial 1048576 next 2097152 maxextents 1073741822 pctincrease 1);
alter table t1 storage(initial 1048576 next 2097152 maxextents 1073741822 pctincrease 1)
                       *
ERROR at line 1:
ORA-02203: INITIAL storage options not allowed


SQL> alter table t1 storage(next 2097152 maxextents 1073741822 pctincrease 1);
alter table t1 storage(next 2097152 maxextents 1073741822 pctincrease 1)
*
ERROR at line 1:
ORA-25150: ALTERING of extent parameters not permitted


SQL> create table t2 storage (initial 1048576 next 2097152 maxextents 1073741822 pctincrease 1)
    as select * from t1;

Table created.

SQL> select INITIAL_EXTENT, NEXT_EXTENT, MAX_EXTENTS, PCT_INCREASE
    from user_tables where table_name in ('T1', 'T2');

INITIAL_EXTENT NEXT_EXTENT MAX_EXTENTS PCT_INCREASE
-------------- ----------- ----------- ------------
        65536     1048576  2147483645
      1048576     2097152  2147483645

注意MAX_EXTENTSandPCT_INCREASE參數沒有改變。它們僅與字典管理的表空間相關,但是很久以前就被遺忘了,我們使用本地管理的表空間。

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