oracle 導出空表


數據庫備份 空表不能導出的問題處理;


設置deferred_segment_creation 參數:
設置deferred_segment_creation 參數為FALSE來禁用"段推遲創建"(也就是直接創建segment),無論是空表還是非空表,都分配segment。
在sqlplus中,執行如下命令:

SQL>alter system set deferred_segment_creation=false;

查看:
SQL>show parameter deferred_segment_creation;



注意:該值設置后只對后面新增的表產生作用,對之前建立的空表(已經存在的)不起作用,仍不能導出。
並且要重新啟動數據庫,讓參數生效。

 


1. 創建執行腳本文件:我創建一個E:\sql_script.sql文件。內容如下:

set heading off;

set echo off;

set feedback off;

set termout on;

spool C:\sql_allocate.sql;

Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null;

spool off;


2. 執行E:\sql_script.sql文件來生成“分配表空間的SQL代碼”的腳本文件sql_allocate.sql。

命令如下:

SQL>@ E:\sql_script.sql; (也可寫一個批處理文件,命令如下:sqlplus 用戶名/密碼@數據庫 @E:\sql_script.sql)

執行完畢后,得到E:\sql_allocate.sql腳本文件(里面是給所有空表分配segment的SQL代碼)。

打開該文件會看到,已經得到對所有空表分配空間的SQL語句


3. 執行E:\sql_allocate.sql文件來對表分配空間。

命令如下:SQL>@ E:\sql_allocate.sql

執行完畢,表已更改。之前存在的空表已分配segment空間!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM