徹底理解初始化引數SERVICE_NAMES和客戶端TNS中SERVICE_NAME(2)

husthxd發表於2004-10-14

 SERVICE_NAMES與客戶端的TNS配置

 


      本文可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本宣告

      http://blog.itpub.net/post/11/3115

      2.       SERVICE_NAMES與客戶端的TNS配置

在客戶端配置tnsnames.ora

test1 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 129.0.8.91)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = SIMIS)

    )

  )

test2 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 129.0.8.91)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = hyk)

    )

  )

test3 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 129.0.8.91)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = hyb)

    )

  )

 

下面分佈嘗試用這三個tns來連線:

SQL> conn system/manager@test1

已連線。

SQL> /

 

INSTANCE_NAME    HOST_NAME

---------------- ------------------------------

simis            SB-HYK

 

SQL> conn system/manager@test2

已連線。

SQL> /

 

INSTANCE_NAME    HOST_NAME

---------------- ------------------------------

simis            SB-HYK

 

SQL> conn system/manager@test3

已連線。

SQL> /

 

INSTANCE_NAME    HOST_NAME

---------------- ------------------------------

simis            SB-HYK

 

SQL>

 

我們看到配置的SERVICE_NAME不管是simishykhyb均可以成功連線到伺服器上。

 

下面看看如果SERVICE_NAMES中如果不包含INSTANCE_NAME的時候能不能透過INSTANCE_NAME進行連線,事實證明連線不成功:

SQL> alter system set service_names='hyb,hyk' scope=both;

 

系統已更改。

 

SQL> shutdown abort;

ORACLE 例程已經關閉。

SQL> startup

ORA-03113: 通訊通道的檔案結束

SQL> conn / as sysdba

已連線到空閒例程。

SQL> startup

ORACLE 例程已經啟動。

 

Total System Global Area  114061244 bytes

Fixed Size                   282556 bytes

Variable Size              79691776 bytes

Database Buffers           33554432 bytes

Redo Buffers                 532480 bytes

資料庫裝載完畢。

資料庫已經開啟。

SQL>

 

SQL> conn system/manager@test1

ERROR

ORA-12514: TNS: 監聽程式不能解析在連線描述符中給出的 SERVICE_NAME

 

      3.       結論

oracle9i開始,後臺程式PMON自動在監聽器中註冊初始化引數SERVICE_NAMES中定義的服務名,SERVICE_NAMES預設為DB_NAME+DOMAIN_NAME。客戶端tns配置中SERVICE_NAME的名稱必須是SERVICE_NAMES或其中的一個NAME

 

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

相關文章