Oracle 導出某一用戶下數據,Table不全

前幾天做了一個自動備份,然後嘗試在別的數據庫中導入時發現,新導入的數據庫,缺少了好多表。

一開始以爲自己導入有問題,查詢了好久發現不是。

然後確認自己的導出dmp文件是不是有問題,發現確實有問題,導出的dmp文件中本身就缺少好多表格。

刨根問底,發現了問題所在!,這是Oracle的一個機制,空表是無法exp導出的。這個很總要~~~~ 切記


具體解決方案如下,要是參考了別人的內容:

參考文獻:http://ligaosong.iteye.com/blog/1317886


根據個人情況整理如下:

根據個人情況,導出表後,發現缺少部分表結構。開始以爲只是是我的導出語句編寫錯誤,後來發現這是因爲空表沒有導出導致的。
這裏通過上文實現導出全部內容,實際情況如下:
select instance_name from v$instance; -- 數據庫實例名字
select * from user_tables where TABLESPACE_NAME = 'XXXX' ; -- 數據庫某一個用戶下的全部表內容

然後查詢“XXXX用戶下的空表
select * from user_tables where TABLESPACE_NAME = 'XXXX' AND INITIAL_EXTENT is null
或者
select * from user_tables where TABLESPACE_NAME = 'XXXX' AND INITIAL_EXTENT = 0

拼接“XXXX”用戶下的空表
select 'alter table '||table_name||' allocate extent;' from user_tables where TABLESPACE_NAME = 'XXXX' AND INITIAL_EXTENT is null
然後執行
alter table YYY_TABLE allocate extent;

最後執行導出用戶下的全表內容。
root登錄
su - oracle
exp 用戶名/密碼@數據庫名 file=/home/oracle/exp.dmp log=/home/oracle/exp_smsrun.log
就可以了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章