前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ORA-12560 问题的分析

ORA-12560 问题的分析

作者头像
jeanron100
发布2020-04-15 17:26:05
7150
发布2020-04-15 17:26:05
举报

来自路勇同学投稿,在此感谢。

作者:路勇 南京恩瑞特有限公司

近日公司软件应用客户端连接数据库时不时出现ORA-12560错误,通过PL/SQL工具、NetManager工具测试连接数据服务器都正常,上网查找ORA-12560方法解决尝试以后都没有成功,自己以前从来不会写记录,但是希望遇到类似问题的朋友不要像我一样很茫然。

应用客户端系统Win7,数据库版本Oracle(11.2.0),应用开发语言C,以下是分析步骤:

1. 在sqlnet.ora文件中开启日志记录功能

文件位置,”D:\app\lenovo\product\11.2.0\client_1\network\admin”,根据自己按照路径获取修改。

在文件中加入以下内容:

Trace_level_client=16

Trace_directory_client=D:\OracleLog

Trace_unique_client=on

Trace_timestamp_client=on

Diag_adr_enabled=off

tnsping.trace_directory=D:\OracleLog

tnsping.trace_level=admin

日志会在OracleLog文件中产生。

2. 分析OracleLog日志

产生ORA-12560日志如下:

connection refused - trying again in 16 seconds.

TCP连接拒绝,查找了相关资料,刚开始怀疑系统端口不够或者过多的TIME_WAIT连接造成的,修改了TCP注册表参数以后还是没有解决。

nserror: nsres: id=0, op=65, ns=12560, ns2=0; nt[0]=530, nt[1]=55, nt[2]=0; ora[0]=0, ora[1]=0, ora[2]=0

这句日志分析,查找了Oracle文档,没有找到nserror: nsres参数字段意思,自己只有慢慢异想天开,突然间nt[1]=55,这个字段55让我摇摆不定,55难道是系统错误码或者TCP错误码,自己查阅了系统错误码或者TCP错误码。

只有找到TCP错误码有点类似,ENOBUFS (10055):无缓冲区空间可用。难道是应用进程内存泄漏或者内存资源不足引起的吗?

3. 提交大小

通过任务管理器查看应用进程内存才14.7M,也不大啊,摸索了一天,打开性能监视器查看进程发现进程提交大小很大,是不是发现问题了,自己很兴奋。

提交大小:1059kb

查阅资料提交大小=内存(专用工作集)+页面缓存 ,但是进程显示提交大小怎么大,肯定是程序问题。

4. 如何解决

内存资源问题,肯定是代码或者软件架构问题,自己把整个工程中的变量声明、宏定义、文件引用都重新规范化,把工程重新新建在添加,最后编译通过运行,主要有:

1)开发工程规范化,合理使用.h和.c文件,编写代码不冗余,每个文件代码量合理控制。 2).变量声明合理化,.c文件声明变量,.h文件extern变量并加入宏控制头文件多次引用,其它文件如果使用变量包含头文件即可。 3).宏合理化使用,将工程中经常使用的数据定义成宏,可以提高程序效率。

进程提交大小变成46kb左右,在反反复复测试连接数据库竟然没有问题了,有的时候解决问题就是凭感觉。

5. 学习

通过今日分析问题,让我知道了https://docs.oracle.com/en/,里面有大量的文档,自己以后多学习。

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

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

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

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

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