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