將 Oracle 完整轉儲文件導入全新的 Oracle 安裝
我正在將 AIX Oracle 9.2 安裝上創建的 Oracle 轉儲填充導入到 Windows 2008 R2 x64 上的 Windows Oracle 10.2.0.4 中,並帶有完全導出選項。
我想將文件導入一個乾淨的數據庫。但是,如果我不先創建數據庫,則沒有什麼可創建的。如果我創建數據庫,它會引發很多錯誤,抱怨缺少使用者和表空間,即使使用 FULL=Y。
如何將此轉儲導入乾淨的 Oracle 安裝?
導出在系統下執行,導入也在系統下執行。索引文件不包含導入使用者和表空間的語句,但是當我對原始文件執行完全導入時,IMP 嘗試創建
TABLESPACES
(路徑不正確,我必須更改,我知道)但是它不會嘗試創建使用者,只是抱怨他們不存在。實際的導出命令使用者是:
exp <a_User>/<a_Password> FULL=Y FILE=/PATHHERE/oradata/Export/expdat.dmp log=exp`date + %d%m%y.%H%M%S`.log consistent=y
最終,我執行了一個過程來列出所有使用者和表空間,在目標數據庫上重新創建它們,並在執行導入時使用 DESTROY=Y 開關。這解決了我的問題。
如果您使用舊的 imp 方法,則必須首先創建使用者和表空間。這包括授權、數據庫連結和您可能正在使用的任何高級隊列。範例腳本在 Windows imp a_DBA_user/apassword LOG =C:\dump\logs\import.log file =user01.dmp fromuser=user_name touser=user_name 中可能如下所示
較新的數據泵方法效果很好。您不需要創建使用者,但我會創建您可能在原始表空間上擁有的任何自定義表空間。
範例數據泵呼叫要求您創建指向原始數據庫和目錄的數據庫連結。這將創建一個目錄
CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS 'C:\app\Oracle\product\11.2.0\dbhome_1\rdbms\log\'; GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO EXP_FULL_DATABASE; GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO auser; GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO IMP_FULL_DATABASE;
在要導入的腳本中設置這些變數 NLS_LANG
ORACLE_SID=您的數據庫名稱
impdp a_user_who_exists/你的數據庫名 directory=DATA_PUMP_DIR network_link=原始數據庫名 schemas=user1,user2 LOGFILE=DataPump.log TABLE_EXISTS_ACTION=REPLACE