这几天qq上很多朋友问及客户端网络配置问题,希望这篇文章能帮助一些朋友(之前也写过一篇文章关于用第三方工具连接数据库:http://blog.itpub.net/29876893/viewspace-1465317/)。首先说明的是数据库是单实例,数据库的连接方式是专有连接模式。
SQL> select * from v$version where rownum=1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
首先浅谈一下服务器端的网络配置,两种方式可以选择:
1.
[[email protected] ~]$ netca
通过netca来配置,这种通过图形化的方式,很方便
2.直接去listener.ora文件里配置
静态监听配置:
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = jing)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = orcl3939)
)
(SID_DESC =
(GLOBAL_DBNAME = tai)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = orcl3939)
)
)
这里的GLOBAL_DBNAME的值(jing,tai)就是为客户端提供的服务名,也就是客户端service_name的值:
服务 "jing" 包含 1 个实例。
实例 "orcl3939", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "tai" 包含 1 个实例。
实例 "orcl3939", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
你也可以添加多个服务名。
如果你想配置动态监听,很简单,设置service_names,数据库默认注册的是1521的端口,设置了多个service_names后,oracle的后台进程PMON会给你注册,是不是很方便!
如果你注册的动态监听端口不想是1521,比如是1522还要设置 local_listener=text(alter system set local_listener=text scope=spfile;)
并在tnsnames.ora文件里添加:
text =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 主机名XXXX)(PORT = 1522))
)
)
下面我们看看注册的监听吧:(注意哦,配置的动态监听要数据库打开才可以启动)
[[email protected] ~]$ lsnrctl status
...
...
服务 "a.localdomain" 包含 1 个实例。
实例 "ORCL3939", 状态 READY, 包含此服务的 1 个处理程序...
服务 "b.localdomain" 包含 1 个实例。
实例 "ORCL3939", 状态 READY, 包含此服务的 1 个处理程序...
服务 "c.localdomain" 包含 1 个实例。
实例 "ORCL3939", 状态 READY, 包含此服务的 1 个处理程序...
服务 "d.localdomain" 包含 1 个实例。
实例 "ORCL3939", 状态 READY, 包含此服务的 1 个处理程序...
服务 "jing" 包含 1 个实例。
实例 "orcl3939", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "orcl3939.localdomain" 包含 1 个实例。
实例 "ORCL3939", 状态 READY, 包含此服务的 1 个处理程序...
服务 "orcl3939XDB.localdomain" 包含 1 个实例。
实例 "ORCL3939", 状态 READY, 包含此服务的 1 个处理程序...
服务 "tai" 包含 1 个实例。
实例 "orcl3939", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
...
...
a.localdomain
b.localdomain
c.localdomain
jing =>都可以给客户端提供服务(客户端的service_name)
orcl3939.localdomain
orcl3939XDB.localdomain
tai
下面介绍客户端吧:
同样我们配置可以有两种方式:
1.Net manager(图形化界面还是比较被我们喜爱的):
先配服务命名:
这里你写啥都行,我们写55
主机名建议写ip,端口号看服务器端监听的配置啦
这里的服务名写什么,不要我多说了吧:
a.localdomain
b.localdomain
c.localdomain
jing
orcl3939XDB.localdomain
tai
到此我们的服务命名已经配好了!
测试一下先:
下面我们配置下监听:(只做以下说明图片,其他的都不是问题)
oracle主目录可以不用写,全局数据库名和sid,Google please啦
2.直接去目录下配置tnsnames.ora:
55 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.115.78)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED) =>服务器专有连接模式(如果用的是共享模式,则服务名需要写动态注册的监听)
(SERVICE_NAME = b.localdomain)
)
)
这里也不用太多说明了吧!
那我们tnsping 服务命名!
OK啦!
下面就是你使用第三方工具连接数据库了!
pl/sql developer,toad,spotlight.....剩下的问题迎刃而解。
如以上有误请指正。