2015-05-25 136 views
0

我需要連接oracle 11g數據庫與我的xampp服務器,我需要本地和遠程連接。爲此我首先安裝了oracle 11g express版和下載的instantclient-basic-nt-11.2.0.4.0,並將提取的文件夾instantclient_11_2置於C:\,然後設置環境變量(系統變量),我的路徑值看起來像這樣path=C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\instantclient_11_2與oracle連接問題(xampp)

然後我從php.ini文件中刪除了extension=php_oci8.dllextension=php_oci8_11g.dll之前的;。那麼首先我想用我的本地數據庫連接:

$tns_turjo = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.13)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))'; // tns of another pc 
$tns_ishrak = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.18)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))'; // tns of my pc 

$conn = oci_connect('system', 'cibl123*#', $tns_turjo); 
if($conn) { 
    echo "connected"; 
} 
else { 
    echo "not"; 
} 

當我通過$tns_ishrak呼應connected但是當我試圖訪問另一臺PC上的Oracle數據庫即使用$tns_turjo則呼應not和錯誤是

Message: oci_connect(): ORA-12170: TNS:Connect timeout occurred 

我也改變了用戶名和密碼,而連接到另一臺電腦。

N.B.在啓動Apache後,從php.ini文件啓用.dll擴展名後,我在彈出的xampp中發出警告,它是:Module 'oci8' is already loaded

如何解決遠程連接問題?

回答

0

您不需要安裝InstantClient; Oracle XE包含一個完整的Oracle客戶端。

可能有許多原因的遠程連接不工作,但最常見的(在我的經驗)是:

  1. 您的PC上的防火牆阻止了連接。
  2. 遠程PC上的防火牆正在阻止連接。
  3. TNS監聽器未在遠程PC上運行。
  4. 連接字符串錯誤。

您可以連接到沒有PHP的遠程PC嗎?您是否通過SQL * Plus或僅僅使用了tnsping命令?


N.B.從php.ini文件中啓用.dll擴展名的後,每當我啓動Apache,我得到一個彈出的XAMPP這是Module 'oci8' is already loaded

那是相當的警告言自明的:你要加載的模塊OCI超過一旦。您應該只啓用一個 OCI模塊,所以如果你在php.ini文件已經像下面那麼這就是問題所在:

extension=php_oci8.dll 
extension=php_oci8_11g.dll 

只有php_oci8_11g.dll應該啓用,因爲這是你所安裝的版本。

+0

@jishan有沒有反饋意見?這對你有幫助嗎? – timclutton