遠端客戶端查詢oracle外部表出錯:ORA-29913: 執行 ODCIEXTTABLEOPEN 調出時出錯

dcswinner發表於2012-02-22
今天通過遠端在外網資料上查詢外部表:
select count(*) from tb_clct_out;報如下錯誤:
ORA-29913: 執行 ODCIEXTTABLEOPEN 調出時出錯
ORA-29400: 資料外掛錯誤KUP-04040: 未找到檔案 20120217225002.dat, 在 DIR_03004 中
登入伺服器上檢視目錄DIR_03004下,確實有這個檔案。
考慮到這資料庫是兩個節點的rac,因此我在之前已經在兩臺伺服器上都建好這個目錄,並在這個目錄裡面放上了相應的檔案。
再來檢視資料庫裡面的建的directory的許可權,已經分配了read,write許可權給這個使用者了。
登入oracle伺服器上,用sqlplus來查檢視:
 
SQL> select count(*) from tb_clct_out;
  COUNT(*)
----------
     21305
在另外一臺伺服器上也這麼執行看看:
SQL> select count(*) from tb_clct_out;
  COUNT(*)
----------
     21305
均可以查出,為何在客戶端執行不行呢??
 
檢視伺服器上,這個目錄以及檔案在作業系統裡面的許可權,目錄擁有755許可權,檔案也擁有755許可權,這個目錄時之間建在oracle的宿主目錄/home/oracle/下的,看上去貌似沒什麼問題。
再來檢視/home/目錄下的oracle這個目錄的許可權,/home/oracle的許可權卻是700,不妨將oracle的許可權改改看,改為755試試:
chmod 755 /home/oracle/
 
再在遠端客戶端sqlplus下執行:
SQL> select count(*) from tb_clct_out;
  COUNT(*)
----------
     21305
還真是這個問題,將另外一個伺服器上的相對應的目錄也改為755的許可權,問題解決。
 
參考文件:
ORA-29913: Error in Executing ODCIEXTTABLEOPEN Callout [ID 458620.1]
 
今天(2012-05-10)又在另外一套rac的outtrack資料庫上遇到了同樣現象的問題,其中節點1的/home/oracle的許可權是755,節點2的/home/oracle的許可權是700,通過修節點2上/home/oracle的許可權為755,問題解決!

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

相關文章