一点使用net的心得
刚接触ORACLE,虽然以前也用SQL Server、mySQL等其他数据库管理系统,但是真正要学好、用好ORACLE还需要很大的努力。
首先,学会安装系统。个人认为这是入门了解ORACLE的最好途径,特别是安装UNIX/LINUX下的ORACLE系统。建议用9i的产品,9i中含有更多我们需要的东西。而且在不了解的情况下,多花些时间,多安装几遍,会遇到许多问题,就想办法解决或请教高手,也就对系统就有一定的了解。首先要知道系统要求,比如硬件、软件都需要什么,需要打什么补丁(了解为什么该打补丁)。然后,安装前准备,从中你可以知道,ORACLE需要什么目录,需要那些那些环境变量,需要那些用户,需要配置那些系统参数。安装手册已经很多了,具体配置详见安装手册。然后就是安装,安装就是按部就班。安装完毕后,如何才能使用ORACLE呢。主要执行dbstart(启动数据库),lsnrctl start(启动侦听器)。
这里主要介绍SQL*Net的使用,也就是侦听器的使用和配置。
所有这些文件都会用于设定 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 =
(Port = 1521)
)
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host =
(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=
(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 分种之间)。如果真的发生这情况,请耐心等待,不必担心。
总之,值得注意的是,tnsname.ora是针对客户端的配置,而listener.ora主要是针对服务器接受客户提供的接口。也就是tnsname.ora是用来配置如何找到服务侦听器,而listener.ora让客户连到侦听器后如何找到数据库的SID。