程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 11g參數之deferred_segment_creation

11g參數之deferred_segment_creation

編輯:Oracle教程

11g參數之deferred_segment_creation


deferred_segment_creation

布爾型

默認值為true

這個參數10gR2中是沒有的,11g中才有

從字面意思也可以看出來,當這個參數設置為true時,當創建一個表的時候,不給它分配segment,即不分配空間,當向這個表中插入第一條數據的時候才開始分配segment。

設置為true的優點:在創建一系列表的時候,若事先已知許多表並沒有數據,可以指定這個參數為true。這樣可以節省空間,也可以增加建表速度。

缺點:使用exp導出的時候,不會導出沒有segment分配的表。使用expdp可以導出空表。

查看該參數當前設置可以使用

show parameter deferred_segment_creation

這個參數可以動態修改,使用

alter system/session set deferred_segment_creation=true/false;

更改後,之前延遲分配segment的表並不會受到影響,仍然為空表。

查詢某schema中所有未分配segment的表可以使用以下語句

select *
  from user_tables 
 where segment_created = 'NO'
若想為這些未分配segment的表分配空間,可以使用語句

select 'alter table ' || table_name || ' allocate extent;'
  from user_tables
 where segment_created = 'NO'

為所有空表分配segment,之後就可以進行exp導出了。

如果表插入數據後被truncate,則會保留segment。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved