在oracle11g中,每張表在起初創建時,默認是不分配區段給此對象。
當首次插入數據時,會分配對應的區段。
對應控制參數為 deferred_segment_creation=true
如果要保持跟低版本保持一致的屬性,可以設定此參數值為flase
alter system set deferred_segment_creation=false scope=both;
在后續創建的新表中,會默認分配區段。
如果參數值設定為true,即使在創建表時指定具體的存儲參數來獲取初始區段大小,也不會分配對應區段。
eg:
create table A_ALLOCAT_EXTENT
(
userno NUMBER,
username VARCHAR2(20 CHAR)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
SQL> select * from user_extents t where t.segment_name = 'A_ALLOCAT_EXTENT';
no rows selected
在設定參數值為false后,需要把沒有分配區段的表,增加區段。
獲取沒有分區的表名:
select table_name from user_tables
minus
select segment_name from user_segments
然后執行分區語句進行分配:
alter table A_ALLOCAT_EXTENT allocate extent (size 8K); -- 大小自己定義
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。