本文数据库版本为:Release 11.2.0.3.0 Production
通过此方法,可以实现动态注册服务,业务不受影响
1.Service Name是什么
自从Oracle 8i之后,Oracle就推荐使用service name而不是SID来连接数据库了,SID是数据库的唯一的名字,要连接使用SID连接同一个数据库的话就只能用这一个名字,别无他法。
service name是连接数据库的时候使用的别名,你可以在listener.ora中静态的设置好service name,启动listener之后这个service name会被注册到listener,然后就可以使用service name替代SID来连接数据库了。
2.查询Service Name
2.1 启动监听
[oracle@MES ~]$ lsnrctl start
SYS@PROD> alter system register;
[oracle@MES ~]$ lsnrctl status
2.1 连接方式
【tns方式】
tnsnames.ora中配置如下:
jea =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.63)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PROD)
)
)
测试是否可以连接
【远程登录】
远程登录语法为:sqlplus 用户/密码@IP 地址:端口号/服务名 (主机名、端口号、服务名)
[oracle@MES ~]$ sqlplus scott/tiger@192.168.1.63:1521/PROD
3.新增Service Name(JEAMES)
SYS@PROD> alter system set service_names=PROD,JEAMES;
查看监听状态
测试连接,一切正常
192.168.1.63:1521/JEAMES
[oracle@MES ~]$ sqlplus scott/tiger@192.168.1.63:1521/JEAMES