ORACLE 11G EXP导出空表方法
EXP在導出11G的庫的時候,與過去10G,9I的版本有很大的差別. 就是沒有數據的表是不會分配空間的.
從Oracle 11.2.0.1版本開始,Oracle又提供了一種新的空間分配方法: Create一個非分區表時,這個Table Segment并沒有立刻創建, 而是直到有第一行記錄插入的時候才去創建這個Segment,這和我們以前的Segment的創建和空間分配方法是不一樣.這樣的段也被稱為延遲段.
?
?
Deferred segment 的優點:
(1)降低空間的開銷:當一次創建成百上千個表時,因為很多表短時間內根本不會用到,所以可以節約大量的磁盤開銷
(2)加快應用的部署:因為沒有分配Segment,所以建表的時候僅僅是操作數據字典而已,不設計空間的分配,所以效率自然就高了很多
?
2、設置deferred_segment_creation 參數
show parameter deferred_segment_creation
NAME???????????????????????????????? TYPE??????? VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation??????????? boolean???? TRUE
SQL> alter system set deferred_segment_creation=false;
系統已更改。
SQL> show parameter deferred_segment_creation
NAME???????????????????????????????? TYPE??????? VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation??????????? boolean???? FALSE
?
該參數值默認是TRUE,當改為FALSE時,無論是空表還是非空表,都分配segment。需注意的是:該值設置后對以前導入的空表不產生作用,仍不能導出,只能對后面新增的表產生作用
當啟用deferred segment 之后,如果有空表,在使用exp進行導出時, 會報:EXP-00011: 'Table Name' does not exist。即空表不被導出。
?如果想在創建表時就分配segment,可以使用如下SQL:???? createtable b_tab (id number, text varchar2(10)) segment creation immediate;
?
空表: user_talbes的rows=0?? ,分配的段是user_segments
?
?
select'altertable '||table_name ||'allocate extent size 64K;'from user_tableswhere table_name not in(select segment_name from user_segments where segment_type ='TABLE')?
轉載于:https://www.cnblogs.com/suncoolcat/p/3357860.html
總結
以上是生活随笔為你收集整理的ORACLE 11G EXP导出空表方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [WinCE版凯立德]2013夏季版地图
- 下一篇: 结对项目——电梯调度算法的实现和测试