簡體   English   中英

Oracle 11即時客戶端連接到遠程Oracle 8i服務器:ORA-12514錯誤

[英]Oracle 11 instant client connect to remote Oracle 8i server: ORA-12514 error

我遇到了一個問題,我花了幾個小時修復它。 這是問題所在:

我正在嘗試使用Oracle 11即時客戶端連接到遠程Oracle 8i服務器:這是我在PHP中的連接字符串:

$ conn = oci_connect('db_user','db_pass',“db_ip / db_service”);

db_ip是服務器的ip,例如“12.34.56.78”。
db_service是服務器的服務,例如“test”。

顯示的錯誤是

ORA-12514:TNS:監聽器當前不知道連接描述符中請求的服務

我可以使用同一個客戶端連接到另一個Oracle 10g服務器。 php代碼相同,只更改db_user或db_pass或db_ip。 未提供db_service。

我不使用tnsnames.ora用於oracle 10g服務器或oracle 8i服務器。 我只是使用服務器的簡單IP。 這有關系嗎?

Server using: Windows Server 2008 R2
PHP: php 5.2.17
Oracle Instant Client: 11_2

任何想法將不勝感激。

更新的 Php現在也可以使用。 我的php文件夾在Programfiles(x86)下,不允許使用括號。 所以我將整個文件夾移動到C:\\ php,並配置IIS以更改php版本。 參考文獻:http://stackoverflow.com/questions/9215983/php-cant-connect-but-sqlplus-can

更新非常感謝賈斯汀的幫助。 有用!!! 我剛剛將sid改為scblive而不是SCBLIVE。 他們的數據庫名稱是scblive。 我仍在使用10.2.0.1,使用sqlplus,我可以連接到oracle 10g和oracle 8i。 非常感謝!

這是適用於oracle 8i的tns名稱:

scblive =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = [oracle 8i ip])(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SID = scblive)))

另一個問題是,在php代碼中,它顯示了oracle 10g或oracle 8i的相同錯誤。

ORA-12154:TNS:無法解析指定的連接標識符

我剛剛使用了以下連接字符串:

$ conn = oci_connect('user_name','pass','scblive');

對於oracle 10g,如果我像以前一樣使用相同的連接字符串,則錯誤仍然顯示:

$ conn = oci_connect('user_name','pass',[oracle 10g ip]);

有任何想法嗎?

更早的更新 :感謝@ Justin的幫助。 嘗試過10.2.0.5,10.2.0.4或10.1.0.0,它們都不起作用。 我看到了矩陣。 看來即時客戶端8.1.7或即時客戶端9.0.1可以同時適用於oracle 10g和oracle 8i。 有沒有人有這些文件的鏈接? Oracle只能提供10.1.0.5及更高版本。

這是預期的行為。 11.2客戶端未經認證可與任何版本的Oracle 8i連接。 您至少需要一個Oracle 9.2.0.4數據庫。 如果要與8.1.7數據庫連接,則需要Oracle 10.2或更早版本的客戶端。 10.2客戶端的初始版本與Windows Server 2008 R2系統不兼容,但應該可以安裝10.2.0.5客戶端補丁集。 如果要連接到早於8.1.7的Oracle數據庫,則需要早期版本的Oracle客戶端,這可能需要安裝早期版本的Windows。

如果您有Metalink訪問權限,Metalink 207303.1是客戶端/服務器互操作性矩陣

如果您確實安裝了10.2.0.5完整客戶端,則您的TNS別名需要使用SID。 服務名稱在8.1.7中不存在。 您可能希望從能夠連接到8.1.7數據庫的計算機復制TNS別名。 我的猜測是你想要的

SCBLIVE = 
  (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = [ORACLE 8i IP])(PORT = 1521)) 
    (CONNECT_DATA = (SERVER = DEDICATED)(SID = SCBLIVE)) 
  )

如果這不起作用,請在命令行中鍵入tnsping scblive並復制並粘貼結果。

我將以前的Oracle 9/8客戶端的ora ....文件夾和所有相關的dll復制到特定文件夾,並將這兩個文件夾放入路徑變量中。 一次,我成功使用php中的oci連接Oracle 8.1.7。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM