为了使得外部进程如 CAMS后台程序能够访问 Oracle 数据库必须配置 Oracle 网络服务器环境配置 Oracle 网络服务器环境是通过配置listener.ora sqlnet.ora 和 tnsnames.ora 共三个文件来进行的listener.ora即监听配置文件在本小节说明 另两个文件分别在随后的两个小节说明
监听配置文件 listener.ora 的存放路径为 $ORACLE_HOME/network/admin
以下是一个示例
LISTENER = #监听器名称
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = localhost.localdomain)
(PORT = 1521))
)
)
(DESCRIPTION =
(PROTOCOL_STACK =
(divSENTATION = GIOP)
(SESSION = RAW)
)
(ADDRESS =
(PROTOCOL = TCP)
(HOST = localhost.localdomain)
(PORT = 2481))
)
)
SID_LIST_LISTENER = #命名规则 SID_LIST_+上面定义的监听器名称
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc1)
(ORACLE_HOME = /u01/app/oracle/product/8.1.7)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = cams)
(ORACLE_HOME = /u01/app/oracle/product/8.1.7)
(SID_NAME = cams)
)
(SID_DESC =
(GLOBAL_DBNAME = oid)
(ORACLE_HOME = /u01/app/oracle/product/8.1.7)
(SID_NAME = oid)
)
)
1 listener.ora 文件中定义一个监听器 其缺省的名称为LISTENER这个监听器缺省以tcp/ip为协议地址且端口号为1521运行在CAMS应用中监听文件定义的监听器就使用这个缺省名字并且使用缺省的协议 tcp/ip和缺省的端口号 1521 待配置好监听文件以及随后说明的 sqlnet.ora 和tnsnames.ora 文件之后就可以用以下命令将监听文件中定义的监听器启动起来
$ lsnrctl start
停止监听器的命令为
$ lsnrctl stop
监测监听器当前状态的命令为
$ lsnrctl status
当 lsnrctl status 命令有如下输出结果
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 8.1.7.4.0 - Production
Start Date 17-JAN-2004 19:00:08
Uptime 31 days 15 hr. 27 min. 59 sec
就说明监听器正在运行否则说明监听器已经停止了 CAMS 系统的后台程序的正常运行不仅依赖于数据库实例的运行还依赖于这个数据库监听器的运行假如监听器没有启动即使数据库已经启动 CAMS 后台程序仍然不能正常工作
2 如(ADDRESS = (PROTOCOL= IPC)(KEY = EXTPROC))所示的一个
IPC 协议地址的监听 是为了外部进程调用用的 在数据库安装时自动设定不需要改动
3 在监听文件后部还有一个SID_LIST_LISTENER 段该段用于定义监听器的服务即为哪些数据库实例提供监听服务以 cams 实例为例其对应的服务信息为
(SID_DESC =
(GLOBAL_DBNAME = cams) #数据库名
(ORACLE_HOME = /u01/app/oracle/product/8.1.7)
(SID_NAME = cams) #数据库实例名
)
sqlnet.ora 文件的存放路径为$ORACLE_HOME/network/admin 以下是一个示例
NAMES.DEFAULT_DOMAIN = localdomain
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
NAMES.DEFAULT_DOMAIN 指定网络域名NAMES.DIRECTORY_PATH指定当解析客户端连接标识符时命名方法 naming metthods 采用的优先顺序从左至右递减 在 CAMS 应用中 这两个参数采用上述所示的系统缺省值
tnsnames.ora 文件的存放路径为$ORACLE_HOME/network/admin 以下
是一个示例
OID.LOCALDOMAIN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT =
1521))
)
(CONNECT_DATA =
(SERVICE_NAME = oid)
)
)
CAMS.LOCALDOMAIN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT =
1521))
)
(CONNECT_DATA =
(SERVICE_NAME = cams)
)
)
INST1_HTTP.LOCALDOMAIN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT =
1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = MODOSE)
(divSENTATION = http://admin)
)
)
EXTPROC_CONNECTION_DATA.LOCALDOMAIN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(CONNECT_DATA =
(SID = PLSExtProc1)
(divSENTATION = RO)
)
)
tnsnames.ora 文件中定义一个或多个网络服务 netservice cams 实例对
应的网络服务为
CAMS.LOCALDOMAIN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = localhost.localdomain)
(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = cams)
)
)
注意这里 ADDRESS项包含三个子参数
PROTOCOL :默认协议TCP
HOST :ip地址
PORT:端口,默认1521
CAMS.LOCALDOMAIN为数据名
要确保在监听文件中也有对应的一个 ADDRESS 项也包含同样的三个子参数并且子参数的值对应都相等另外 这里SERVICE_NAME 的值必需确保与监听文件中某 SID_DESC项下的 SID_NAME参数的值相等