给Oracle数据库换一个1522端口的监听

可能是因为短了几天,2月过得比其他月份要快不少。这都最后一天了,博客还是没碰一下。

也因为这个月学习放缓了,就是偷懒了。。所以想了想,定不下要写些什么。

很久以前就想写写分析函数,Oracle的分析函数是个强大的东东,也整理过一些,但始终觉得拿不出手。。。

写写我们家little fairy?想到就很开心哈哈哈哈哈哈哈哈哈哈哈哈哈傻的不行!

打住打住,时间不多了,就最后一个半钟。还是记一点东西吧。、

 

======================================== 一根完美的分割线 =======================================

事情是这样发生的,公司的的一台破服务器,最近不知道为啥呢,上面的数据库连接速度特别慢,尝试用tnsping了一下那服务器的1521端口,120000+ ms,也就是差不多两份多钟的样子,尝试修理一下,未果。

但是发现,如果我重新建一个监听,用1522端口,tnsping速度块的一批,10ms妥妥的。结局还是很美好的!

 

但那只是我以为。。。

C:\Users\Lhy>tnsping 127.0.0.1:1522

TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 28-2月 -2019 22:49:09

Copyright (c) 1997, 2010, Oracle.  All rights reserved.

已使用的参数文件:
D:\app\product\11.2.0\dbhome_1\network\admin\sqlnet.ora

已使用 HOSTNAME 适配器来解析别名
尝试连接 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1522)))
OK (0 毫秒)


C:\Users\Lhy>sqlplus lhy/lhy@127.0.0.1:1522/orcl

SQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 28 22:49:41 2019

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

ERROR:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务


请输入用户名:

怎么样,惊不惊喜!!!意不意外!!!

原来的数据库并不能直接就注册到新的监听中来给外面连接。

 

那么为什么呢?有数据库,有监听,怎样关联?

原来的为什么就行呢?

 

1、了解一下动态注册

实例在启动的时候,读取init.ora文件,把一些信息动态注册到默认监听中,默认监听,也就是名称叫LISTENER,端口是1521,协议是tcp的那个监听。

而我们现在是重新建了监听。。数据库和实例并不不知道我们这个监听的信息,所以,我们要把这个监听的信息,保存到数据库里面,让它服务启动的时候,能够知道往哪里注册。。。

两种方法:

第一种:

(1)在%ORACLE_HOME%\NETWORK\ADMIN\tnsnames.ora文件中,添加新监听的连接信息,代码及位置如下图,自己按照自己的改一下host和端口:

LISTENER1522 =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-U9EADHR)(PORT = 1522))
    )

(2)然后,先通过操作系统认证登陆,并设置数据库注册的监听,如下:

C:\Users\Lhy>set oracle_sid=orcl    -- 设置默认数据库sid

C:\Users\Lhy>sqlplus / as sysdba    -- 管理员身份登陆

SQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 28 23:21:57 2019

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> alter system set local_listener=LISTENER1522;    -- 修改监听名为刚才tnsnames.ora里面的监听名

系统已更改。

SQL> alter system register;    -- 注册

系统已更改。

SQL> exit
从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开

C:\Users\Lhy>sqlplus lhy/lhy@127.0.0.1:1522/orcl    --走1522端口的监听登陆

SQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 28 23:23:06 2019

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>

这样,咱们就算是用上了新的监听了。

 

上面这种方法呢,是先在tnsnames.ora里面定义LISTENER1522这个监听的信息,然后在数据库里面设置这个监听名;这种的话,比较适合这个服务器中有多个数据库,统一维护比较方便,如后面监听再有变动,也只需要改一下tnsnames文件重启下数据库就行。

 

第二种:另外一种比较简单粗暴的,就是直接把监听的连接信息直接写到数据库中,就省了修改tnsnames.ora这一步。例如咱们把在tnsnames中配置的监听信息抽出来,就是 (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-U9EADHR)(PORT = 1522)),然后,直接把这个信息,设置到数据库中,如下:

C:\Users\Lhy>set oracle_sid=orcl    -- 设置默认数据库

C:\Users\Lhy>sqlplus / as sysdba    -- 管理员登陆

SQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 28 23:33:28 2019

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> alter system set local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-U9EADHR)(PORT = 1522))';    -- 直接设置具体的监听连接信息

系统已更改。

SQL> alter system register;    -- 注册

系统已更改。

SQL> exit
从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开

C:\Users\Lhy>sqlplus lhy/lhy@127.0.0.1:1522/orcl    -- 通过1522登录

SQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 28 23:34:07 2019

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>

这个方法呢,,可行,但是呢,如果数据库多,维护起来就比较麻烦些吧。

 

还有个方法呢,根据网上的说法,可以用静态注册的方式, 在listener.ora文件中静态注册某一个或者多个实例,但暂时没实践过,最后几分钟了,就不折腾了。

3月,你好呀~

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当一台机器上出现两个Oracle数据库,且它们的监听器重合时,可能会导致以下问题。 首先,监听器是一种用于管理与数据库之间的通信的进程。它负责侦听来自客户端的连接请求,并将其转发给适当的数据库实例。当两个数据库监听器重合时,可能会导致连接请求被错误地传递给错误的数据库实例,从而导致连接失败或错误的操作。 其次,监听器冲突可能会导致端口冲突。在一个机器上,每个监听器必须使用唯一的端口号来监听连接请求。如果两个监听器使用相同的端口号,将无法同时运行,从而导致其中一个监听器无法启动,影响数据库的正常运行。 解决这个问题的方法之一是修改其中一个数据库监听器配置。可以通过修改监听器的配置文件(通常是listener.ora文件)来更改监听器的端口号和监听地址,确保它们不会与其他监听器发生冲突。修改后,重启监听器以使更改生效。 另外,还可以考虑使用多个网络适配器(NIC)来分离两个数据库的通信路径。通过将每个数据库连接到不同的NIC,可以确保它们在网络层次上具有不同的地址,并消除监听器之间的冲突。 总而言之,当一台机器上有两个Oracle数据库时,若它们的监听器重合,会导致连接问题和端口冲突等。解决方法包括修改监听器配置和使用多个网络适配器来分离通信路径。最重要的是确保每个监听器都有唯一的端口号和监听地址,以确保数据库的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值