Oracle11g使用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 中及以前,密碼中的字母大小寫無所謂。
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 中及以前,密碼中的字母大小寫無所謂。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-1478903/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle11g 空表不能exp匯出的問題Oracle
- Oracle11g用exp無法匯出空表的解決方法Oracle
- Oracle11g中用exp不能匯出空表,異構平臺遷移可以使用expdp、impdpOracle
- Oracle 11g 預設不給空表分配空間,exp匯出備份不匯出空表!Oracle
- Oracle 11g的exp不能匯出空表Oracle
- oracle之EXP匯出表空間錯誤解決Oracle
- Oracle11g新特性導致空表不能匯出Oracle
- 【EXP】使用EXP的QUERY選項匯出表中部分資料
- 【EXP/IMP】使用EXP /IMP工具“模糊”匯出和匯入
- 解決Oracle 11g空表不能exp匯出的問題Oracle
- Oracle 11G用EXP時,空表不能匯出解決方法Oracle
- exp/imp匯出匯入工具的使用
- Oracle exp/imp匯出匯入工具的使用Oracle
- Oracle資料匯入匯出imp/exp命令(轉)Oracle
- Oracle建立使用者、表空間、匯入匯出、...命令Oracle
- imp/EXP 表空間轉換問題
- Oracle - 匯入異常ORA-01659和11G在Exp時空表不能匯出Oracle
- exp 匯出 全庫,全使用者
- Oracle 11g 使用exp命令匯出表不全的解決方案Oracle
- 【實驗】【PARTITION】exp匯出分割槽表資料
- exp匯出命令中的query選項(轉)
- expdp/impdp來解決exp/imp出現的錯誤並匯入指定表空間
- Oracle 11g匯出空表Oracle
- 資料匯入匯出EXP/IMP
- exp/imp匯出匯入資料
- Oracle匯入(imp )與匯出(exp )Oracle
- 【ORACLE 匯入匯出】exp 錯誤Oracle
- ORACLE匯入匯出命令exp/impOracle
- 低版本exp連線到高版本庫進行匯出,匯出資料為空
- oracle 11g 不能匯出空表Oracle
- oracle資料匯出匯入(exp/imp)Oracle
- Oracle 遠端匯出匯入 imp/expOracle
- 【匯入匯出】EXP-00068分析
- Oracle 11gR2 用exp無法匯出空表解決方法Oracle
- exp 分檔案大小匯出
- Oracle11g新特性影響EXP匯出,ORA-01455的處理Oracle
- 將oracle11g的表匯出並匯入到10g中Oracle
- OracleDatabase——資料庫表空間dmp匯出與匯入OracleDatabase資料庫