Oracle11gExp导出空表方法
生活随笔
收集整理的這篇文章主要介紹了
Oracle11gExp导出空表方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
之前有需求要導入導出數據,每次發現執行exp導出的表都不全,后來發現,原來在11g新特性中,對exp的導出做了限制。 Oracle11g 在使用exp 導出數據時會出現空表不能導出的問題,這是因為: 1、Oracle11g 默認對空表不分配segment,故使用exp 導出Oracle11g 數據庫時,空表不 會導出。 2、默認設置deferred_segment_creation 參數為TRUE,空表不分配segment。 處理方法: 在 sqlplus 中,執行如下命令: SQL>alter system set deferred_segment_creation=false; 查看: SQL>show parameter deferred_segment_creation; 該值設置后只對后面新增的表產生作用,對之前建立的空表不起作用。 3、可以使用手工為空表分配Extent的方式,來解決導出之前建立的空表的問題。說明如下: 3.1 使用ALLOCATE EXTENT的說明 使用 ALLOCATE EXTENT可以為數據庫對象分配Extent。其語法如下: ----------- ALLOCATE EXTENT { SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer } ----------- 可以針對數據表、索引、物化視圖等手工分配Extent。 ALLOCATE EXTENT使用樣例: ALLOCATE EXTENT ALLOCATE EXTENT(SIZE integer [K | M]) ALLOCATE EXTENT(DATAFILE 'filename') ALLOCATE EXTENT(INSTANCE integer) ALLOCATE EXTENT(SIZE integer [K | M] DATAFILE 'filename') ALLOCATE EXTENT(SIZE integer [K | M] INSTANCE integer) 針對數據表操作的完整語法如下: ----------- ALTER TABLE [schema.]table_name ALLOCATE EXTENT [({ SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer})] ----------- 故,需要構建如下樣子簡單的SQL命令: ----------- alter table aTabelName allocate extent ----------- 3.2 構建對空表分配空間的SQL命令, 查詢當前用戶下的所有空表(一個用戶最好對應一個默認表空間)。命令如下: ----------- SQL>select table_name from user_tables where NUM_ROWS=0; ----------- 根據上述查詢,可以構建針對空表分配空間的命令語句,如下: ----------- SQL>Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 ----------- 批量輸出上述生成的SQL語句,建立C:\createsql.sql,其內容如下: ----------- set heading off; set echo off; set feedback off; set termout on; spool C:\allocate.sql; Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0; spool off; ----------- 執行 C:\createsql.sql,命令如下: ----------- SQL>@ C:\createsql.sql; ----------- 執行完畢后,得到C:\allocate.sql文件。 打開該文件會看到,已經得到對所有空表分配空間的命令SQL語句。 3.4 執行SQL命令,對空表分配空間: 執行 C:\allocate.sql,命令如下: ----------- SQL>@ C:\allocate.sql; ----------- 執行完畢,表已更改。 3.4 此時執行exp 命令,即可把包括空表在內的所有表,正常導出。 另外:Oracle11g 中,對密碼是大小寫敏感的,即密碼中的字母是區分大小寫的。 在 Oracle10g 中及以前,密碼中的字母大小寫無所謂。
總結
以上是生活随笔為你收集整理的Oracle11gExp导出空表方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux Lernel Panic 报
- 下一篇: 税务系统问题分析 来自CSNA论坛