[Oracle]Oracle错误案例:TNS-00510

TNS-00510 Internal limit restriction exceeded

Cause Too many files or sockets open simultaneously (or some other resource has been depleted).

Action For further details, trace the operation for protocol details.

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

Cause The process of starting up a dedicated server process failed. The executable could not be found or the environment may be set up incorrectly.

Action Turn on tracing at the ADMIN level and re-execute the operation. Verify that the Oracle Server executable is present and has execute permissions enabled. Ensure that the Oracle environment is specified correctly in LISTENER.ORA. The Oracle Protocol Adapter that is being called may not be installed on the local hard drive. Check that the correct Protocol Adapter are successfully linked. If the error persists, contact Oracle Customer Support.

TNS-12540 TNS:internal limit restriction exceeded

Cause Too many TNS connections open simultaneously.

Action Wait for connections to close and retry.

TNS-12560 TNS:protocol adapter error

Cause A generic protocol adapter error occurred.

Action Check addresses used for proper protocol specification. Before reporting this error, look at the error stack and check for lower level transport errors.For further details, turn on tracing and re-execute the operation. Turn off tracing when the operation is complete.

问:进程的数量会引起监听器错误吗?

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

TNS-12540: TNS:internal limit restriction exceeded

TNS-12560: TNS:protocol adapter error

TNS-00510: Internal limit restriction exceeded

IBM/AIX RISC System/6000 Error: 11: Resource temporarily unavailable

我们在监听器日志中发现如上的错误信息。服务器上每个用户的最大进程数量被设置600 Oracle中的最大进程数量为600。进程最大的利用率是482,每个会话的最大利用率是490。会话的数量设置为840。

根据我所了解的,看起来进程的数量是没有问题的。我们通过在这个机器上无法正确建立内存分页空间而对此进行了证实,然而,一些人仍然告诉我们要在起始的时候增加进程的数量。我不同意这个观点。我遗漏了什么吗?

答:TNS-510错误信息显示了有太多的文件或者socket同时开放了(或者是其他一些资源耗尽了)。这是操作系统的限制,不是Oracle的限制。你需要确认你的AIX平台可以处理你在服务器上开放的这么多的文件。这是“全部”文件,并不仅仅是Oracle数据库文件。并且,你还需要确认你的AIX服务器可以正确处理全部数量的Oracle进程,而不仅仅是专用的服务器进程。Oracle的起始参数PROCESSES限制了专用的服务器进程数量。但是还有后台的进程(SMON, PMON, LGWR等),以及支持并行语句的进程,更不用说你的监听器等了。我觉得你应该配置AIX来允许每个Unix用户拥有更多的进程。

总结: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: TNSrotocol 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: TNSrotocol adapter error

...TNS-00510: Internal limit restriction exceeded

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

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

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

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

三 原因分析:

....系统资源耗竭,意味着系统分配给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.php...15&pagenumber=1 ),在本安全应用中,宜将两者(减小用户堆栈与增加oracle可用内存)结合起来使用,以提高数据库性能。但是,这种方式下,同样不可能无限制地增加用户连接数。要想使用户连接数达到更大,则应使用MTS方式。

时间: 2025-01-21 01:06:34

[Oracle]Oracle错误案例:TNS-00510的相关文章

Oracle错误案例:TNS-00510

TNS-00510 Internal limit restriction exceeded Cause Too many files or sockets open simultaneously (or some other resource has been depleted). Action For further details, trace the operation for protocol details. TNS-12500 TNS:listener failed to start

安oracle数据库出现ORA-12560: TNS: 协议适配器错误

问题描述 安oracle数据库出现ORA-12560: TNS: 协议适配器错误 如题,本来想重装,但是程序里没有显示oracle数据库,也就找不到卸载,有大神知道应该怎么办吗? 解决方案 oracle数据库导入问题--ORA-12560: TNS: 协议适配器错误Oracle:ORA-12560: TNS: 协议适配器错误oracle:ora-12560:tns:协议适配器错误 解决方案二: http://zhidao.baidu.com/link?url=Ovflvu4-1L6YDUZNO0

Oracle数据泵(Data Dump)使用过程当中经常会遇到一些奇奇怪怪的错误案例_oracle

Oracle数据泵(Data Dump)使用过程当中经常会遇到一些奇奇怪怪的错误案例,下面总结一些自己使用数据泵(Data Dump)过程当中遇到的问题以及解决方法.都是在使用过程中遇到的问题,以后陆续遇到数据泵(Data Dump)的错误案例,都会补充在此篇. 错误案例1: ORA-39065: DISPATCH 中出现意外的主进程异常错误:ORA-44002: 对象名无效 Windows 平台错误提示: Linux平台错误提示 解决方法: [oracle@DB-Server admin]$

oracle数据库错误ora-00600 [3712] 恢复案例

在Oracle数据库的日常维护中,我们可能经常会遇到一些从未见过的错误,甚至莫名其妙的错误.很多时候,甚至通过metalink.baidu.甚至google 都无法搜索到相关内容.这不,昨天公司南区同事让帮忙恢复的的一个客户数据库:据说是归档数据库,没有备份,重启实例后就无法打开数据库了. 我也是第一次听说这种事情,看了下居然是Oracle 11.2.0.3的数据库,还有这样起码的事情,确实有点匪夷所思.首先我们来看下是报错是什么样的.   看到这个错误.我感觉有一定似曾相识的感觉,但是有又说不

ORACLE OLAP错误ORA-06512: at "SYS.OLAPIHISTORYRETENTION"

刚刚安装了ORACLE 10g R2后,启动数据库时发现告警日志有如下错误: Database Characterset is UTF8 replication_dependency_tracking turned off (no async multimaster replication found) WARNING: AQ_TM_PROCESSES is set to 0. System operation might be adversely affected. Fri Apr 24 13

数据库登陆错误-跪求指导,oracle数据库错误

问题描述 跪求指导,oracle数据库错误 oracle登陆时怎么总是出现无效的参数?ORA-12532:TNS:无效的参数!每次联网弄好后,再开机就又不好用了,求大牛帮帮忙! 解决方案 配置没错?有没有成功过?会不会是安装的过程出现包错误? 解决方案二: 你是不是没设置好SID啊 set oracle_sid=*** ***填你的数据库实例的SID号 解决方案三: 谢啦,搞定了,是本机IP的问题!所以没监听到!

ORACLE ORA-00600错误的阐述

oracle|错误 ORACLE ORA-00600错误不是你的程序错误.是ORACLE内部的错误,一般来说,大部分的ORA-00600错误均是由ORACLE软件的bug所导致,因此对于这样的错误需要及时联系ORACLE技术支持工程师.对于这种类型的ORA-00600错误,一个简单的处理方式就是打补丁,将数据库升级到一个稳定的版本,另外建议屏蔽某些ORACLE特性,诸如MTS(MultiThread Server).但也有部分错误是由数据库内部的表或索引(包括应用的)结构被损坏所或其他原因所造成

ORACLE 4431215错误原因详解

可为什么该目录会丢失呢,原因是因为ORACLE的BUG,且看故障元凶:Bug 4431215的定位过程,看如下三个日志,节点1在归档到8211发生错误,节点2在归档到6852发生错误,而1点钟有个RMAN定时JOB发起2级备份,备份后会删除归档日志,从RMAN日志可以看出,最大的备份号分别为8210和6851,这和节点ALERT日志是完全一致的,可见在RMAN备份后归档便发生了错误,而RMAN备份后的瞬间,归档目录是空的,这难免让人想到ORACLE在ASM环境下的一个BUG:"在ASM上建立的目

Oracle ORA-4031错误详解

oracle  ORA-4031错误产生的原因 首先这个错误发生时的表现如下: ORA-04031: unable to allocate XXXX bytes of shared memory ("shared pool,"unknown object","sga heap(1,0)","obj stat memor") 就是最基本的查询简单的动态性能视图都无法完成: 下面来细细的分析一下原因: 这就需要从shared pool 的内