Next Previous Contents

4. 在伺服器上設定 SQL*Net

所有這些檔案都會用於設定 Oracle 的網絡軟件(SQL*Net,和 Oracle8 的 Net8 差不多)。這些檔案應該都建立在伺服器中的 $ORACLE_HOME/network/admin 目錄。

4.1 tnsnames.ora

TNSNAMES.ORA 檔設定所有這電腦提供的服務。現在我們描述所有掛上了伺服器的資料庫。對伺服器上所有資料庫你要加上類似以下的一段:


orcl.world =
  (DESCRIPTION =
    (ADDRESS_LIST =
        (ADDRESS =
          (COMMUNITY = tcp.world)
          (PROTOCOL = TCP)
          (Host = <INSERT HOST NAME OF SERVER HERE> )
          (Port = 1521)
        )
        (ADDRESS =
          (COMMUNITY = tcp.world)
          (PROTOCOL = TCP)
          (Host = <INSERT HOST NAME OF SERVER HERE> )
          (Port = 1526)
        )
    )
   (CONNECT_DATA = (SID = ORCL)
    )
  )

4.2 listener.ora

listener.ora 檔描述所有其他電腦可得到的服務及伺服器的監聽程式 (listener) 所需的所有設定。

它有一段包括監聽程式名稱、監聽程式地址、監聽程式提供服務的資料庫及參數設定 (listener name, listener address, databases served by the listener and configuration parameters)。

這裡有一個例子:


# 監聽程式名稱及所收聽的地址
LISTENER =
        ( ADDRESS_LIST =
                (ADDRESS =
                        (PROTOCOL=tcp)
                        (HOST=<INSERT HOST>)
                        (PORT=1521)
                        (COMMUNITY=UK_SUP_TCPIP)
                )
                (ADDRESS =
                        (PROTOCOL=ipc)
                        (KEY=700)
                        (COMMUNITY=UK_SUP_TCPIP)
                )
        )

# 列出監聽程式提供的服務
SID_LIST_LISTENER=
        (SID_LIST=
                (SID_DESC=
                        (SID_NAME=orcl)
                        (ORACLE_HOME=/home/oracle/7.3.3.0.0)
                )
        )

# 開始參數設定
TRACE_LEVEL_LISTENER=OFF
TRACE_FILE_LISTENER = "listener"
LOG_FILE_LISTENER = "listener"
CONNECT_TIMEOUT_LISTENER = 10
STOP_LISTENER = YES
DBA_GROUP = dba

4.3 sqlnet.ora

sqlnet.ora 檔包括對網絡上一個特定節點 (node) 的設定。這些資料和資料庫的數目及監聽程式的數目無關。這個檔案中最重要的東西是 Dead Connection Timeout 變數的設定。

Dead connection timeout 檢查每一個接到該資料庫的行程及確保用戶端仍有反應。如果那用戶(類型不拘)並無反應,對應的 Oracle 伺服器影子行程 (shadow process) 便會被殺。

如果你有很多用戶存取那資料庫,這點非常有用。尤其是當你仍在程式開發階段,用戶多數不能正確地結朿的時候。

以下是我的 sqlnet.ora 檔,供各讀者參考:


TRACE_LEVEL_CLIENT = OFF
sqlnet.expire_time = 30         # 兩次檢查客戶相差的秒數
names.default_domain = world
name.default_zone = world

4.4 開始及結朿監聽程式

現在有關監聽程式及 SQL*Net 的設定已經完成,我們可以試用網絡軟件來駁到資料庫。(之前我們只是直接連接到資料庫,現在則是在模擬使用遠程 (remote) 用戶。)

使用以上的設定來啟動監聽程式:


$ lsnrctl

LSNRCTL for SCO System V/386: Version 2.3.3.0.0 - Production on 23-FEB-98 20:38:25

Copyright (c) Oracle Corporation 1994.  All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> start
Starting /home/oracle/7.3.3.0.0/bin/tnslsnr: please wait...

TNSLSNR for SCO System V/386: Version 2.3.3.0.0 - Production
System parameter file is /home/oracle/7.3.3.0.0/network/admin/listener.ora
Log messages written to /home/oracle/7.3.3.0.0/network/log/listener.log
Listening on: (ADDRESS=(PROTOCOL=tcp)(DEV=6)(HOST=192.168.1.1)(PORT=1521))
Listening on: (ADDRESS=(PROTOCOL=ipc)(DEV=10)(KEY=700))

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=magic.com)(PORT=1521)(COMMUNITY=UK_SUP_TCPIP))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for SCO System V/386: Version 2.3.3.0.0 - Production
Start Date                23-FEB-98 20:38:50
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  OFF
SNMP                      ON
Listener Parameter File   /home/oracle/7.3.3.0.0/network/admin/listener.ora
Listener Log File         /home/oracle/7.3.3.0.0/network/log/listener.log
Services Summary...
  orcl          has 1 service handler(s)
The command completed successfully
LSNRCTL> exit

要停止監聽程式:


$ lsnrctl

LSNRCTL for SCO System V/386: Version 2.3.3.0.0 - Production on 23-FEB-98 20:43:20

Copyright (c) Oracle Corporation 1994.  All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> stop
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=magic.com)(PORT=1521)(COMMUNITY=UK_SUP_TCPIP))
The command completed successfully
LSNRCTL> exit

如果你的 DNS 並不傳回指定的主機的 IP 地址,啟動及結朿監聽程式會花一點時間(依據 DNS 2-3 的逾時變數 (timeout variable),大致在 2-3 分鐘之間)。如果真的發生這情況,請耐心等待,不必擔心。


Next Previous Contents