所有這些檔案都會用於設定 Oracle 的網絡軟件(SQL*Net,和 Oracle8 的 Net8 差不多)。這些檔案應該都建立在伺服器中的
$ORACLE_HOME/network/admin
目錄。
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)
)
)
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
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
現在有關監聽程式及 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 分鐘之間)。如果真的發生這情況,請耐心等待,不必擔心。