oracle names server 用最简单的话说,就是将客户端的tnsnames.ora放到一台server上,每台客户端在连接数据库server时,由names server 负责将 connect string 翻译成 ip address+sid+port,完成连接。当然,每台客户端上都要做相应的配置,指明使用 names server 代替本 tnsnames.ora ,并且需指明缺省的 names server 的地址和port。
使用 oracle names server 的好处是,所有客户端,只用设置一次,将来即使需要修改 tns 配置,也只需要修改 names server 上的东西,客户端不用再做任何修改。
下面就结合一个例子具体说说 oracle names server 的配置
1、在安装 oracle 软件时当然要选相应的组件。oracle names server需要一个schema来存储 tns 配置,所以names server 需要oracle db 建立这个schema的脚本是 $ORACLE_HOME/network/admin/namesini.sql
首先建立一个用户:
create user names identified by names default tablespace users
temorary tablespace temp;
grant connect,resource to names;
connect names/names
@namesini.sql
2、在数据库server 端运行 net8 assistant(图形界面的工具), 建立 names server:
点中 "NameServer" ,然后点“+”按钮,根据向导的提示继续,首先填 names server 的名字,比如:ns1 然后选用协议,我只会选 tcp/ip ,主机当然就是这台机器, port用推荐的1575
选 “use a region database”这个是和多names server 有关的选项,我们可以先不理会,使用缺省值。
填写数据库相关信息:主机、sid、port、schema(这里就是我们刚才创建的用户:names/names)
select NameServer is in the root region.
完成,保存设置,会生成 names.ora
3、使用 names server 代替本地的 tnsnames.ora:
还是在net8 assistant 里,点 profile ,在naming method 里只选 onames.
4、指定客户端使用的names server(在这里,这台server既是服务器又是客户端
):
从下拉菜单中选 Preferred Oracle NameServer,在这页里填上names server的ip address + port.
5、保存设置,退出
在命令行方式下:
namesctl
namesctlstart
6、将tns配置加入到oracle names server 的repository里:
使用 net8 assistant
选中刚才建立的 nameserver : ns1
从下拉菜单中选择 manage data 可以从一个tnsnaems.ora文件直接load进去,但是我老没成功,只好一个一个手工加。(也许是没运行namesupg.sql的原因,可文档里说是可选的,不明白)
每写一个点一下 execute ,比如:
Service Name = test
Protocol = TCP
Host = 192.168.2.99
Port = 1521
SID = test
很简单,不用多说了。
7、用sqlplus测试一下:
sqlplus system/manager@test
如果连接没问题,就可以把sqlnet.ora复制到各个客户端,就可以用了。
sqlnet.ora的样子大概应该是这样:
......
names.preferred_servers = (address_list =
(address=(protocol=tcp)(host=192.168.2.99)(port=1575))
)
names.directory_path = (onames)
......
以前一直没用过 oracle names server,既然有人问,就研究了一下,不过我介绍的只是oracle names server最基本的功能,其他oracle 8i版本的names server的新功能,等我有时间再说吧,或者哪位高手有兴趣,也可以继续深入。