![](/img/trans.png)
[英]ORA-12541: TNS:no listener on ubuntu server, oracle instant client
[英]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.