Oracle
如何更改已經製作好的表(sql developer)的儲存參數?
總結問題 我已經得到了 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_EXTENTS
andPCT_INCREASE
參數沒有改變。它們僅與字典管理的表空間相關,但是很久以前就被遺忘了,我們使用本地管理的表空間。