關於Windows Oracle「ORA-12154 TNS:could not resolve service name.」抄寫錯誤的處理 @ 超兩光的電腦工程師 >> 佑子窩 :: 隨意窩 Xuite日誌
  • 喜歡貓,也喜歡狗,現在的工作,就是玩電腦!

    關於Sam,就在這部落格中,希望大家會喜歡這地方! ^^

    和Sam聯絡:phantom2431@hotmail.com 

  • 關鍵字
    1. 沒有新回應!






  • 如何使用RSS
    Powered by Xuite
    2007-12-17 02:00 關於Windows Oracle「ORA-12154 TNS:could not resolve service name.」抄寫錯誤的處理
    平均分數:0 顆星    投票人數:0
    我要評分:
    1. 發生狀況:在資料庫(Server:Oracle 10g / Windows)進行抄寫時,出現「ORA-12154:TNS:could not resolve service name(TNS:無法解析指定的連線 ID)」錯誤訊息。
    且重新Create DB Link,也確認過DB Link所指向的Oracle SID 在 tnsping 部份正常,仍無法讓Oracle DB正常進行抄寫動作。

    2.說明:
    TNS 無法解析Server端 SID 時,就會出現該狀況。不過,這回比較像是所建立好的DB Link無法讓client端解析到server端。
    一般create DB Link的時候,多用server端的SID代表即可。當碰到用SID無法正確解析到server端時,可能要用到如下的解決方法告訴DB Server端的正確IP位址。

    備註:
    一般create DB Link語法如下:
    CREATE DATABASE LINK dblink_name CONNECT TO user IDENTIFIED BY password USING '(SID)';

    3.可能原因:
    目前原因還待
    確認......

    4.解決:
    (1)在Client端登入Oracle後,先Drop原本的DB Link。
    Syntax:
    DROP [PUBLIC] DATABASE LINK link_name
    Ex:
    SQL> DROP DATABASE LINK lktest;

    (2)重新建立DB Link,不過,在 connect_string 的地方,指定 Service name和它的IP Address。
    Syntax:
    CREATE DATABASE LINK linkname
    CONNECT TO user IDENTIFIED BY password
    USING '(description=(address=(protocol=TCP) (host=xxx.xxx.xxx.xxx)(port=1521))(connect_data=(sid=sidname)))'

    [ 其實,這段 connect_string 所用到的語法,和在 tnsnames.ora 檔案中所用到的語法結構相當類似。只不過,在 connect_string 中全用小寫,且不斷行,才不會造成另外一個錯誤──指定的IP Address無效 ]
    Ex:
    SQL> CREATE DATABASE LINK lktest CONNECT TO testuser IDENTIFIED BY testpassword USING '(desc
    ription=(address=(protocol=TCP) (host=192.168.0.1)(port=1521))(connect_data=(si
    d=testdb)))';

    其中:
    「192.168.0.1」為「testdb」 Server的 IP,登入帳號為「testuser」,密碼為「testpassword」。


    Sam / Xuite日誌 / 回應(2) / 引用(0) / 好文轉寄
    回應