前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ORA-12516|数据库连接问题遇到的坑

ORA-12516|数据库连接问题遇到的坑

作者头像
JiekeXu之路
发布2021-07-30 15:29:50
1.8K0
发布2021-07-30 15:29:50
举报
文章被收录于专栏:JiekeXu之路JiekeXu之路

大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起看看 ORA-12516|数据库连接问题,欢迎点击上方蓝字关注我,标星或置顶,更多干货第一时间到达!

事情是这样的,听我慢慢道来,在一个夜黑风高的周五晚上,出现了……哦,不对,剧本不是这样的哈,回归正题,有两套 Oracle 11g 的单机环境通过搭建 DG switchover 的方式进行迁移,当迁移切换后,数据库状态正常,但应用无法连接,报错 ora-12516 错误,如下图所示:

代码语言:javascript
复制
[66000][12516]
        Listener refused the connection with the following error:
        ORA-12516, TNS:listener could not find available handler with matching protocol stack
oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12516, TNS:listener could not find available handler with matching protocol stack.

但是自己通过轻松连接的方式测试发现,只有通过主 service_names 可以连接,其他的 service_names 均不能连接。这里的主 service_names 指的就是创建实例时生成的第一个。如下指的就是“jiekexu”。

代码语言:javascript
复制
SQL> show parameter name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cell_offloadgroup_name               string
db_file_name_convert                 string
db_name                              string      jiekexu
db_unique_name                       string      jiekexu
global_names                         boolean     FALSE
instance_name                        string      jiekexu
lock_name_space                      string
log_file_name_convert                string
optimizer_dynamic_sampling           integer     2
processor_group_name                 string
service_names                        string      jiekexu,test,orcl,scott

service_names 有多个服务名

查看监听状态正常,端口为 1523 .但是就是无法通过例如 test,scott 等的服务名连接,报错均为 ORA-12516,重启监听,注册监听等等,被坑了好久好久。

多番检查没有问题,于是寻求网络,强大的百度对于 ' ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程'错误,无一例外的都是让我修改最大连接数,翻了两页的内容均是一样的结果。

代码语言:javascript
复制
SQL> alter system set processes=300 scope=spfile;

无果,还是放弃百度,寻求 MOS 的帮助,但也没有太大的帮助,重启监听,修改监听参数的等等均没有进展,真可谓是山穷水尽疑无路呐。

柳暗花明又一村

20:30、21:30、22:00 时间花花的就过去了,偶然间看到“local_listener”的作用的一篇文章,【pmon只会动态注册port等于1521的监听,否则pmon不能动态注册listener,要想让pmon动态注册listener,需要设置local_listener参数。

代码语言:javascript
复制
SQL> show parameter listener 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
listener_networks                    string
local_listener                       string
remote_listener                      string

查看后发现,local_listener 确实为空,没有值,但发现原主库现今的备库中此参数有值不为空。

ALTER SYSTEM SET local_listener='TEST' SCOPE=BOTH;

但奇怪的是 $ORACLE_HOME/network/admin/tnsnames.ora 文件中并没有 local_listener 参数的任何设置,猜测可能什么时候被删除了而没有注意到,故在 tnsnames.ora 此文件中添加

代码语言:javascript
复制
TESTIP =
   (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST =10.0.X.X )(PORT = 1523))
   )

然后在数据库中注册 local_listener 然后注册监听

ALTER SYSTEM SET local_listener='TESTIP' SCOPE=BOTH;

ALTER SYSTEM REGISTER;

查看监听,其他的服务名也已经注册上了,当然,有问题之前也是注册上的,这点就比较好奇,不知所以,希望有朋友不吝赐教。但使用轻松连接的方式均可以连接了。由于是事后本文,没有当时的截图,就只能到这里了。非 1521 默认端口,这个坑有点大,稍微不注意就中招了,今天有点时间,先记录一下吧,免得以后再犯同样的问题。

代码语言:javascript
复制
SQL> conn sys/REoracle@10.0.X.X:1523/test as sysdba 
Connected.
SQL> 
SQL> conn sys/REoracle@10.0.X.X:1523/scott as sysdba 
Connected.
SQL> 
SQL> conn sys/REoracle@10.0.X.X:1523/orcl as sysdba 
Connected.

备注:轻松连接方式指的是:sqlplus user/passwd@db_ip:port/server_names

前面在 tnsnames.ora 此文件中添加的 TESTIP 算是别名,代指等号后面的内容,如果不指定别名,当然也可以直接在注册是写明全部内容,就是有点长。RAC 的 local_listener 一般就是一长串地址,并没有指定别名。

代码语言:javascript
复制
ALTER SYSTEM SET local_listener='(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =10.0.X.X )(PORT = 1523)))' SCOPE=BOTH;

那么,今天就到这里结尾了,先记录下来,以后有问题在继续跟进吧。如果此文对您有帮助,欢迎点赞、在看与转发,写作不易,坚持写作更不易,您的点赞、转发,举手之劳,便是对作者最大的支持,也能让更多的人受益,感谢!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JiekeXu之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档