導資料時ora-31640報錯

dingzihan發表於2014-03-06
單例項資料庫10.2.0.4,目標資料庫11.2.0.3 rac,目標準備將單例項上的資料匯入到rac資料庫。
在匯入過程中報錯如下:
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "LBSBUS"."T_MSG_SEND_DETAIL"                401.5 MB 1726271 rows
. . imported "LBSBUS"."T_GISROADQUERY"                   87.84 MB 1982744 rows

ORA-31693: Table data object "LBSBUS"."T_LOG" failed to load/unload and is being skipped due to error:
ORA-31640: unable to open dump file "/home/oracle/gejie/ngis140227.dmp" for read
ORA-19505: failed to identify file "/home/oracle/gejie/ngis140227.dmp"
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory

奇怪,為什麼有的表能導進,有的表不能導進?查詢檔案目錄許可權,都沒問題。


2.1 因為報的錯誤是不可以讀dump檔案,仔細檢查了檔案及其目錄的訪問許可權,發現沒有任何問題.


2.2 在metalink上搜尋,找到了ID=1071373.1的文章,知道了真正的原因.
原來11g R2的IMPDP 增加了一個引數設定:CLUSTER,在設定了parallel引數>1的情況下, 可以支援多個節點的同時匯入工作.
這邊實際的情況是,另外一個節點無法訪問到dump檔案,我也是隻想從一個節點匯入資料,所以需要關閉這個選項.


三. 問題解決
修改匯入的命令,設定cluster=N,再次進行匯入
$nohup impdp lbsbus/lbsbus directory=a1 dumpfile=ngis0816.dmp logfile=ngis.log TABLE_EXISTS_ACTION=append EXCLUDE=STATISTICS parallel=5  cluster=n; 


資料庫資料可以正常匯入到11g rac的資料庫中問題解決.


附件: metalink doc id=1071373.1的文章的主要內容:


Symptoms
DataPump on 11.2 RAC with PARALLEL > 1 still hits the following errors though the unpublished Bug 8415620 is fixed into 11.2:


ORA-31693: Table data object "TITAN"."TN_TICKET":"TN01_2006_02" failed to load/unload and is being skipped due to error:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-31640: unable to open dump file "/oracle/xfertest/titan_01.dmp" for read
ORA-19505: failed to identify file "/oracle/xfertest/titan_01.dmp"
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Unpublished Bug 8415620 DATA PUMP DOES NOT HONOR THE BOUNDARIES OF THE CONNECTED SERVICE ON RAC


DataPump RAC support is provided in 11.2. Prior to 11.2, once you use a service to make the initial connection to the database, 
an instance is selected, and the master process and all worker processes run on that instance.


Cause
From 11.2, DataPump new parameter CLUSTER is introduced.


CLUSTER : Default=Y


Purpose :
Determines whether Data Pump can use Oracle Real Application Clusters (RAC)
resources and start workers on other Oracle RAC instances.


Syntax and Description : CLUSTER=[Y | N]
Solution
To force DataPump to use only the instance where the job is started and to replicate pre-Oracle Database 11g release 2 (11.2) behavior, specify CLUSTER=N.


Example:
#> expdp lbsbus/lbsbus  DIRECTORY=dpump_dir1 DUMPFILE=gis*.dmp CLUSTER=N PARALLEL=3



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22969361/viewspace-1102454/,如需轉載,請註明出處,否則將追究法律責任。

相關文章