如何使用Oracle 11g中的exp命令導出包括空表的數(shù)據(jù)
隨著技術的發(fā)展,Oracle 11g引入了新特性。 當表中沒有數(shù)據(jù)時,默認情況下不分配段來節(jié)省空間。 然而,在使用exp命令導出表數(shù)據(jù)時,無法導出空表。 下面介紹如何使用exp命令導出包括空表的數(shù)據(jù)。
隨著技術的發(fā)展,Oracle 11g引入了新特性。 當表中沒有數(shù)據(jù)時,默認情況下不分配段來節(jié)省空間。 然而,在使用exp命令導出表數(shù)據(jù)時,無法導出空表。 下面介紹如何使用exp命令導出包括空表的數(shù)據(jù)。
1.設置系統(tǒng)參數(shù)deferred_segment_creation
首先,在任務欄上搜索圖標,輸入cmd以打開命令提示符窗口。 接下來,設置系統(tǒng)參數(shù)deferred_segment_creation。
輸入以下SQL語句查詢參數(shù)值:
```sql
show parameter deferred_segment_creation;
```
輸出的結果應為默認值TRUE。 修改該參數(shù)值,輸入以下SQL語句:
```sql
alter system set deferred_segment_creationfalse;
```
執(zhí)行結果如下圖所示:
![image1]()
2.登錄Oracle數(shù)據(jù)庫
然后,打開PL/SQL Developer數(shù)據(jù)庫連接工具,點擊【Session】選項卡,然后點擊“Log on”按鈕并輸入用戶名和密碼即可完成登錄,如下圖所示:
![image2]()
3.查詢空表
接下來,我們需要查詢空表。 點擊【File】選項卡,然后點擊“SQL Window”子菜單。 輸入以下SQL查詢語句:
```sql
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows0;
```
按F8鍵或點擊工具欄上的“綠色三角按鈕”執(zhí)行查詢。 執(zhí)行結果顯示APT_MAIN_FEES是空表,如下圖所示:
![image3]()
4.編寫B(tài)at腳本并導出數(shù)據(jù)
最后,我們需要編寫一個Bat腳本,將其與exp命令一起使用來導出數(shù)據(jù)。 雙擊Bat腳本以執(zhí)行并導出表數(shù)據(jù)。 從命令提示符窗體中,可以看到即使空表APT_MAIN_FEES也在導出范圍之內,如下圖所示:
![image4]()
結論
通過以上步驟,我們可以成功地使用exp命令導出包括空表的數(shù)據(jù)。 首先,我們需要設置deferred_segment_creation參數(shù)。 其次,我們需要查詢空表并編寫一個Bat腳本來導出數(shù)據(jù)。這些步驟確保了所有數(shù)據(jù)都能夠被正確導出。