Oracle-10g

從源數據庫文件系統已更改的轉儲導入 Oracle 數據庫

  • December 27, 2013

我正在將數據庫從一台伺服器遷移到另一台伺服器。在遷移過程中,我們將文件系統結構從:

/appli2/oradata05/HISTO/
/appli2/oradata06/HISTO/
/appli2/oraredolog01/HISTO/
/appli2/oraarch/HISTO/

/appli2/oracle/HISTO/oradata05
/appli2/oracle/HISTO/oradata06/HISTO/
/appli2/oracle/HISTO/oraredolog01/HISTO/
/appli2oracle/HISTO/oraarch/HISTO/

根據這些變化,我得到了錯誤:

Starting "SYSTEM"."SYS_IMPORT_FULL_01":  SYSTEM/******** DIRECTORY=MIG11G DUMPFILE=20131125_full_HISTO.expdp LOGFILE=impdp_dump_HISTO_r7.log parallel=4 
Processing object type DATABASE_EXPORT/TABLESPACE
ORA-31684: Object type TABLESPACE:"UNDO" already exists
ORA-31684: Object type TABLESPACE:"TEMP" already exists
ORA-31684: Object type TABLESPACE:"TOOLS" already exists
ORA-39083: Object type TABLESPACE failed to create with error:
ORA-01119: error in creating database file '/appli2/oradata05/HISTO/HISTO_tab_anc_01.dbf'
ORA-27040: file create error, unable to create file
IBM AIX RISC System/6000 Error: 13: Permission denied
Failing sql is:
CREATE TABLESPACE "TAB_ANC" DATAFILE '/appli2/oradata05/HISTO/HISTO_tab_anc_01.dbf' SIZE 1048576000,'/appli2/oradata05/HISTO/HISTO_tab_anc_02.dbf' SIZE 2146435072 LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL UNIFORM 
ORA-39083: Object type TABLESPACE failed to create with error:
ORA-01119: error in creating database file '/appli2/oradata06/HISTO/HISTO_idx_anc_01.dbf'
ORA-27040: file create error, unable to create file
IBM AIX RISC System/6000 Error: 13: Permission denied
Failing sql is:
CREATE TABLESPACE "IDX_ANC" DATAFILE '/appli2/oradata06/HISTO/HISTO_idx_anc_01.dbf' SIZE 1048576000,'/appli2/oradata06/HISTO/HISTO_idx_anc_02.dbf' SIZE 2146435072 LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL UNIFORM 

是否可以只導入目前文件系統結構中的數據?我看到了 remap 命令,但我從未使用過它,如果它是問題的答案,有人可以舉一個例子來使用它。

remap_tablespace:source_tablespace_1:user,source_tablespace_2:user

回复你的評論,allcontentkeyword的預設值,所以你可以忽略這個。

無論如何,我已經做了一些測試。我不知道您的舊數據庫是如何建構的,但是從您的問題中我注意到您只想導入兩個表空間(TAB_ANCIDX_ANC)以及其中的所有對象/模式。如果你想這樣做,你可以執行這種導入:

impdp system/passwd@HISTO directory=MIG11G dumpfile=20131125_full_HISTO.expdp  parfile=imp_histo.par

參數文件是這個:

include=schema:"in ('SCHEMA1', 'SCHEMA2', ... , 'SCHEMAn')"
include=tablespace:"in ('TAB_ANC', 'IDX_ANC')"
remap_datafile=/appli2/oradata05/HISTO/HISTO_tab_anc_01.dbf:/appli2/oracle/HISTO/oradata05/HISTO_tab_anc_01.dbf
remap_datafile=/appli2/oradata06/HISTO/HISTO_idx_anc_01.dbf:/appli2/oracle/HISTO/oradata06/HISTO/HISTO_idx_anc_01.dbf

如您所見,您需要包含這些表空間中包含的所有模式(或者您也可以在新數據庫中從頭開始創建它們)。要驗證這些模式,您可以執行如下查詢:

SELECT username, default_tablespace FROM dba_users;

當您在具有不同文件命名約定的平台之間移動數據庫時,重新映射數據文件很有用。

我認為remap_tablespace當您已經(手動)在目標數據庫中創建了所有必需的表空間但名稱不同時,您可以使用。

引用自:https://dba.stackexchange.com/questions/55612