項目中使用oracle11g的狀況愈來愈常見,也常常會基於oracle11g數據庫的數據遷移。緣於oracle11g的一個特性,默認狀況下,oracle不會給空表分配表空間,對於這些空表,使用exp命令作導出的時候,不會導出這些空表。 sql
固然oracle11g數據遷移的方式有不少種,可是exp/imp依舊是我使用最熟悉的命令,下面提出的方案,能夠解決上文中提到的問題。 數據庫
一、修改oracle系統參數 oracle
alter system set deferred_segment_creation=false;
做用:對於新建的表,直接分配表空間 spa
二、爲空表手工分配表空間 code
用指定的數據庫用戶,執行腳本文件createAllocateSql.sql,腳本以下: io
set heading off; set echo off; set feedback off; set termout on; spool allocate.sql; select 'alter table ' || table_name || ' allocate extent;' from user_tables where num_rows = 0; spool off;執行上面的腳本後,會生成 allocate.sql文件,執行該文件,完成空表的空間分配。
經過上面的操做,之後就能夠沒壓力的使用exp命令了。 table
注意:上面的操做,針對有必定oracle基礎的同窗。 class