oracle 排至tns,TNS-12500,TNS-12540,TNS-12560,TNS-00510解决过程

2023-10-13 18:40

本文主要是介绍oracle 排至tns,TNS-12500,TNS-12540,TNS-12560,TNS-00510解决过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一  环境:

1 平台:

IBM  AX360,4G内存

windows 2k advServer sp3 + oracle 816

独占模式

2 内存分配相关参数

..processes................=.1000

..shared_pool_size.........=.240000000

..large_pool_size..........=.614400

..java_pool_size...........=.32768

..db_block_buffers.........=.90000

..db_block_size............=.4096

..log_buffer...............=.163840

..log_checkpoint_interval..=.10000

..sort_area_size...........=.65536

..sort_area_retained_size..=.65536

..open_cursors.............=.100

..job_queue_processes......=.4

..job_queue_interval.......=.10

..max_dump_file_size.......=.10240

3 最大并发用户数:850个左右

二 故障现象:

....当用户数达到一定的数量时(700多)客户端连接服务器时报ora-12560错误,紧跟着报ora-03114错误,不能连接到服务器。此时已连接到服务器的用户能正常访问数据库。

....首先查看警告日志文件,未见到明显错误信息。

....查看listner.log文件,发现如下信息(很多个类似的错误记录,摘两个上来)

.........................

02-JUL-2003 10:30:09 * (CONNECT_DATA=(SID=ORCL)(CID=(PROGRAM=***.EXE)(HOST=*******)(USER=*****))) * (ADDRESS=(PROTOCOL=tcp)(HOST=*******)(PORT=1136)) * establish * ORCL * 12500

TNS-12500: TNS:listener failed to start a dedicated server process

.TNS-12540: TNS:internal limit restriction exceeded

..TNS-12560: TNS

4f06a01a81d5603cca001c0e92e5ebda.gifrotocol adapter error

...TNS-00510: Internal limit restriction exceeded

....32-bit Windows Error: 8: Exec format error

02-JUL-2003 10:30:10 * (CONNECT_DATA=(SID=ORCL)(CID=(PROGRAM=***.EXE)(HOST=*****)(USER=***))) * (ADDRESS=(PROTOCOL=tcp)(HOST=******)(PORT=1203)) * establish * ORCL * 12500

TNS-12500: TNS:listener failed to start a dedicated server process

.TNS-12540: TNS:internal limit restriction exceeded

..TNS-12560: TNS

4f06a01a81d5603cca001c0e92e5ebda.gifrotocol adapter error

...TNS-00510: Internal limit restriction exceeded

....32-bit Windows Error: 8: Exec format error

.....................

此时,原来已连接上服务器的用户还能正常使用。查看此时session达到760多个。

....重启oracle服务后,能连接新的用户数,但当并发用户数达到750个以上时,再次报同样的错误

三 原因分析:

....查看oracle帮助文件及相关的错误信息,提示出错的原因为系统资源耗竭,需要找oracle技术支持。那多贵啊,多半是找不起的。自己琢磨琢磨吧。

....系统资源耗竭,意味着系统分配给oracle的内存用尽了。虽然我们有4G的物理内存,但正常情况下系统只能给oracle分配2G的内存,这2G的内存中,包括了SGA、PGA等oracle需要使用的全部内存。在独占模式下,每一个session将单独分配2M左右的内存。在本例中,SGA分配了约600M,按每一个用户分配2M内存计算,连接数达到750个时,总分配内存已达到2G,将不能再增加新的连接数。如果要解决这个问题,在不做大的调整的前提下,要么减小SGA大小,要么减小为每一个会话分配的内存大小,以能连接更多的用户。

四 解决过程:

....查阅了oracle文档,文档里提出来了几个解决的办法:

1 重置init.ora参数文件,调小以下四个参数的值:

....short_area_size

....hash_area_size

....bitmap_merge_area_size

....create_bitmap_area_seze

....open_cursone

2 调小SGA的大小

3 减小oracle Job队列数量(job_queue_processes)和并发队列数(parallel_max_servers)

4 重置并减小会话/线程使用的堆栈大小

5 将oracle改为mts模式

6 更换操作系统为windows NT 企业版

7 使用intel的ESMA硬件支持,即使用大内存

..1) 在intel系统上使用 /3G 开关

..2) 使用PSE36内存

....结合本实例的具体情况,决定调整的主要目标为减小用户的PGA大小。

....构成PGA的主要内容有short_area_size, hash_area_size, open_cursone, 以及oracle 堆栈和TNS 堆栈。在本实例中,排序区为64K,hash区为128K(缺少值),打开的游标数与应用有关,不能随便减小了,然而oracle堆栈和TNS堆栈都是1M,却有较大的减小的余地。因此,调整的目标定为减小这两个堆栈的大小。

....使用orastack 命令来减小这两个堆栈的大小:

D:\oracle\ora81\bin>orastack oracle.exe 500000

Couldn't open file with CreateFile()

GetLastError() == 32

....停止oracle服务和TNS服务,再运行以上命令

D:\oracle\ora81\bin>orastack oracle.exe 500000

Dump of file oracle.exe

Current Reserved Memory per Thread  = 1048576

Current Committed Memory per Thread = 4096

New Reserved Memory per Thread = 500000

D:\oracle\ora81\bin>orastack tnslsnr.exe 500000

Dump of file tnslsnr.exe

Current Reserved Memory per Thread  = 1048576

Current Committed Memory per Thread = 4096

New Reserved Memory per Thread = 500000

重新启动oracle服务和TNS服务,打开数据库,用户连接到服务器,经测试,用户数到1350以上时数据库仍然运行正常,解决了本实例存在的问题。

五 小结

....事实上,正如oracle文档所指出的那样,要增加用户连接数的途径很多,除了减小用户堆栈之外,还可以减小SGA,或者是更改成MTS方式,或者是使用第三方工具增加oracle可用内存。本人前面小结过如何让oracle在32位的windows操作系统上使用超过2G内存的方法( http://www.itpub.net/showthread. ... 15&pagenumber=1 ),在本安全应用中,宜将两者(减小用户堆栈与增加oracle可用内存)结合起来使用,以提高数据库性能。但是,这种方式下,同样不可能无限制地增加用户连接数。要想使用户连接数达到更大,则应使用MTS方式。

以上方法,只是在这样一个具体的实例上进行调整的总结,仅供参考,不能作为规律性的结论。

还请各位大侠指正。

这篇关于oracle 排至tns,TNS-12500,TNS-12540,TNS-12560,TNS-00510解决过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/205139

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

springboot报错Invalid bound statement (not found)的解决

《springboot报错Invalidboundstatement(notfound)的解决》本文主要介绍了springboot报错Invalidboundstatement(not... 目录一. 问题描述二.解决问题三. 添加配置项 四.其他的解决方案4.1 Mapper 接口与 XML 文件不匹配

Python中ModuleNotFoundError: No module named ‘timm’的错误解决

《Python中ModuleNotFoundError:Nomodulenamed‘timm’的错误解决》本文主要介绍了Python中ModuleNotFoundError:Nomodulen... 目录一、引言二、错误原因分析三、解决办法1.安装timm模块2. 检查python环境3. 解决安装路径问题

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错