SYS@ORCL>show parameter segment
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean TRUE
rollback_segments string
transactions_per_rollback_segment integer 5
deferred_segment_creation參數,在11.2.0.4g才有的參數,
創建一個表,在沒有插入數據時是否分配空間,為true時,不分配空間,但在sys用戶下不支持;
deferred_segment_creation=ture;
1.在sys用戶下,創建一個沒有數據的表時,同時自動分配空間;
2.在普通用戶下,創建一個沒有數據的表時,不會分配空間;
查看sql語句,是否已經分配空間;
select dbms_metadata.get_ddl('TABLE','T1') from dual;
--設置輸出格式(set long 99999)
deferred_segment_creation在11.2.0.4版本的Oracle數據庫新增參數,默認是true。
這會導致在exp時,沒有segment的對象不會導出。
解決:
(1)設置deferred_segment_creation的值為false
此方法只對以後的表有效,之前的表還是沒分配空間。
(2) 創建表的時候聲明立即創建Segment
create table table_name segment creation immediate;
(3)對於已經創建但是還沒有Segment的表來說,
可以執行alter table table_name allocate extent來使其創建出分配空間,
當然也可以插入一條數據,使其創建分配空間;