Oracle 11g 預設不給空表分配空間,exp匯出備份不匯出空表!
11G中有個新特性,當表無資料時,不分配segment,以節省空間
解決方法:
1、insert一行,再rollback就產生segment了。
該方法是在在空表中插入資料,再刪除,則產生segment。匯出時則可匯出空表。
2、設定deferred_segment_creation 引數
show parameter deferred_segment_creation
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean TRUE
SQL> alter system set deferred_segment_creation=false;
系統已更改。
SQL> show parameter deferred_segment_creation
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
deferred_segment_creation boolean FALSE
該引數值預設是TRUE,當改為FALSE時,無論是空表還是非空表,都分配segment。
需注意的是:該值設定後對以前匯入的空表不產生作用,仍不能匯出,只能對後面新增的表產生作用。如需匯出之前的空表,只能用第一種方法。
搞了我好久,最後查到這個方法。
先查詢一下當前使用者下的所有空表
select table_name from user_tables where NUM_ROWS=0;
用以下這句查詢空表
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
把查詢結果匯出,執行匯出的語句
'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
-----------------------------------------------------------
alter table AQ$_AQ$_MEM_MC_H allocate extent;
alter table AQ$_AQ$_MEM_MC_G allocate extent;
alter table AQ$_AQ$_MEM_MC_I allocate extent;
alter table AQ$_AQ_PROP_TABLE_T allocate extent;
alter table AQ$_AQ_PROP_TABLE_H allocate extent;
alter table AQ$_AQ_PROP_TABLE_G allocate extent;
alter table AQ$_AQ_PROP_TABLE_I allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_T allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_H allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_G allocate extent;
alter table AQ$_KUPC$DATAPUMP_QUETAB_I allocate extent;
'ALTERTABLE'||TABLE_NAME||'ALLOCATEEXTENT;'
-----------------------------------------------------------
alter table AQ$_SYS$SERVICE_METRICS_TAB_T allocate extent;
alter table AQ$_SYS$SERVICE_METRICS_TAB_H allocate extent;
alter table AQ$_SYS$SERVICE_METRICS_TAB_G allocate extent;
alter table AQ$_SYS$SERVICE_METRICS_TAB_I allocate extent;
然後再執行
exp 使用者名稱/密碼@資料庫名 file=/home/oracle/exp.dmp log=/home/oracle/exp_smsrun.log 成功!
還可以使用資料泵的方式備份匯出
先建立目錄:
create directory directoryname as '路徑';
授權:
grant read,write on directoryname to username;
透過命令進行匯入匯出:
expdp username/password@databasename directory=directoryname dumpfile=expname.dmp 成功!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/76103/viewspace-1474518/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g的exp不能匯出空表Oracle
- Oracle 11g匯出空表Oracle
- oracle之EXP匯出表空間錯誤解決Oracle
- oracle 11g 不能匯出空表Oracle
- 解決Oracle 11g空表不能exp匯出的問題Oracle
- Oracle 11G用EXP時,空表不能匯出解決方法Oracle
- Oracle11g使用exp匯出空表(轉載)Oracle
- Oracle建立使用者、表空間、匯入匯出、...命令Oracle
- oracle11g 空表不能exp匯出的問題Oracle
- OracleDatabase——資料庫表空間dmp匯出與匯入OracleDatabase資料庫
- 11g 表空間extent預分配特性
- Oracle修改預設表空間和預設臨時表空間Oracle
- Oracle - 匯入異常ORA-01659和11G在Exp時空表不能匯出Oracle
- oracle expdp、impdp匯入從原表空間更換到其他表空間 ----匯入到另個表空間測試Oracle
- Oracle 11g無法匯出空表的解決方案Oracle
- Oracle11g用exp無法匯出空表的解決方法Oracle
- Oracle匯出空表(從來都沒有用過的表)Oracle
- Oracle建立刪除使用者、角色、表空間、匯入匯出...命令總結Oracle
- IMPDP 多個表空間物件匯入到一個表空間中物件
- Oracle 傳輸表空間-EXP/IMPOracle
- delete不釋放表空間delete
- Oracle 11g 匯出空表解決辦法Oracle
- Oracle11g新特性導致空表不能匯出Oracle
- 如何用rman 不備份只讀表空間的資料
- expdp/impdp來解決exp/imp出現的錯誤並匯入指定表空間
- QQ空間日誌匯出(php)PHP
- oracle監控表空間,JOB,rman備份Oracle
- Oracle 11g 表空間的誤刪除, 當前的控制檔案不識別該表空間Oracle
- ORACLE預設的臨時表空間Oracle
- MySQL 遷移表空間,備份單表MySql
- Oracle 11g 表空間加密Oracle加密
- Oracle imp 匯入資料到另一個表空間Oracle
- Oracle表空間Oracle
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- 利用可恢復空間分配技術自動分配表空間
- oracle 11g線上收回臨預設臨時表空間Oracle
- Oracle資料庫設定預設表空間Oracle資料庫
- 臨時表空間的建立、刪除,設定預設臨時表空間