在团队成员增多时,经常出现“无法分发客户端连接”等问题。在网上搜索一番后,最终解决了该问题,现将解决方案总结如下,以供参考和以后备用。
原因:团队成员增多,原有数据库设置不够用,导致连接plsql和启动tomcat时经常抛出“无法分发客户端连接”的异常。
解决方案:
第一步:调整process和session值
1. 检查process和session是否够用。
a)使用plsql连接到oracle,查看process进程数:
select count(*) from v$process; --取得数据库目前的进程数。
select value from v$parameter where name = 'processes'; --取得进程数的上限。
b)查看session会话数:
select count(*) from v$session; --取得数据库目前的会话数。
select value from v$parameter where name = 'sessions'; --取得会话数的上限。
查看当前process和sessions是否接近上限值。若接近,可以将其增大。
2. 调整这两个参数值大小。
系统进程数process和系统会话数session之间存在一个关系:
process数=session数*1.1+5
我们在配置时参考该规律进行设定。
a) 修改process值
alter system set processes=1000 scope=spfile; --将process值改为1000
b) 修改session值
alter system set sessions=1105 scope=spfile; --将sessions值改为1105
3. 备份pfile,重启oracle
a) 修改完成后,备份pfile
create pfile from spfile; --从spfile(运行时配置)创建pfile(系统配置)
c) 重启oracle
重启的方法有很多种,可以重启oracle服务,或者重启数据库。Windows下可以直接重启服务。
第二步:修改dispatchers个数
如果第一步解决不了问题。可以进行第二步的操作。
查看当前dispatchers个数,和dispatchers使用率
select name,busy,status,accept,idle from v$dispatcher; --查看当前dispatchers个数和部分信息。一般默认安装的库只有一个。
select name,(busy/(busy+idle))*100 "busy rate%" from v$dispatcher; --查看dispatchers使用率
如果使用率大于50%,则要考虑增加dispatchers个数。
调整dispatchers个数
alter system set dispatchers='(protocol=tcp)(dispatchers=3)(service=youroracleservicenameXDB)';
--修改dispatchers个数为3.
3. 重启oracle。
常见问题处理办法:
在配置时,有时我们会误操作。导致数据无法正常启动。这时可以从之前备份过的pfile来恢复oracle系统设置。
sqlplus /nolog --连接到数据库
出现连接提示光标
SQL> conn / as sysdba --以windows用户以sysdba身份登录,便于操作数据库
SQL> create spfile from pfile= 'D:\pfile.ora' --从D:\pfile.ora(之前备份出来的pfile文件)创建系统配置信息。
将提示创建文件成功。
这时,启动数据库即可
SQL> startup
分享到:
相关推荐
"SAP客户端连接脚本"是自动化连接SAP GUI(图形用户界面)的一种工具,它能帮助IT人员快速、高效地设定连接,避免繁琐的手动配置步骤。本文将详细介绍SAP客户端连接脚本的工作原理、应用场景以及如何创建和使用。 ...
C++基于控制台的集群聊天服务器:配置nginx负载均衡模块分发客户端连接、基于发布-订阅的redis作为服务器消息队列,mysql数据库存储用户数据 C++基于控制台的集群聊天服务器:配置nginx负载均衡模块分发客户端连接、...
标题中的“pb不装客户端连接sqlserver,制作绿色安装文件”指的是使用PowerBuilder(PB)开发的应用程序,无需在目标机器上安装SQL Server客户端组件,就能实现与SQL Server数据库的连接。这种技术对于分发应用程序...
首先,客户端发送一个SYN(同步序列编号)包给服务器,然后服务器回应一个SYN+ACK(同步+确认)包,最后客户端再回一个ACK(确认)包,完成连接。 3. **套接字(Socket)编程**:在编程中,客户端和服务器通过套接...
消息交换机是RabbitMQ的核心组件,它根据预定义的路由规则将消息分发到不同的队列。通过源码,我们可以看到RabbitMQ如何实现不同类型的交换机(如Direct、Fanout、Topic、Header)及其路由策略。 5. **队列(Queue)...
可扩展性可以通过负载均衡和集群技术来实现,当单个服务器无法处理所有请求时,可以将请求分发到多个服务器。安全性方面,服务器需要保护自身免受恶意攻击,例如DDoS攻击,同时也要确保传输数据的安全,比如使用SSL/...
标题中的“一段无需安装Oracle客户端即可访问Oracle数据库的Delphi控件”指的是在Delphi编程环境中,使用特定的第三方控件或组件库,可以实现与Oracle数据库的连接和交互...
在Android开发中,客户端与服务器端的连接是应用程序与云端数据交互的基础。本文将详细解析Android客户端如何与服务器端建立连接,并重点介绍心跳包机制、发送与接收数据的流程以及线程管理。 首先,Android客户端...
描述中提到的“上线提示”,意味着服务端需要记录在线的客户端,并在有新的客户端连接时向所有在线的客户端广播这个信息。这可能涉及到设计一个简单的状态管理机制和消息广播机制。服务端需要维护一个客户端列表,当...
这里的"oracle11g无需客户端连接的DLL"指的是Oracle提供的Managed Data Access (ODP.NET Managed Driver)组件,特别是文件"Oracle.ManagedDataAccess.dll"。 Oracle.ManagedDataAccess.dll是Oracle Database 11g...
这个工具通常包含在Oracle客户端安装中,或者可以作为一个独立的JAR文件(如`zkOracleClient.jar`)进行分发。`sqlTest.bat`很可能是该工具的启动脚本,用于在Windows环境下运行Java应用程序。 **JDBC基础知识** ...
当有客户端连接时,`serverSocket.Accept()`会阻塞,直到接受到一个连接请求,返回一个新的Socket对象用于与客户端通信。此时,服务器可以使用这个新Socket发送和接收数据。 接下来,我们要了解"客户端"。客户端也...
功能由来:WCF服务器断开,客户端无法连接将导致错误。 解决:对同一个WCF宿主功能布设在多台服务器上,客户端调用方法前会测试连接服务器,当第一台服务器无法连接时会切换到第二台服务器。当所有服务器无法连接...
2. **C# MQTT客户端实现**:C#源码可能包括了MQTT客户端类,负责连接到Broker,订阅和发布消息。客户端可能包含连接管理、身份验证、心跳保持等功能。 3. **连接与断开**:源码中应该有建立和断开与MQTT Broker连接...
在服务器端,通常会创建两个 EventLoopGroup,一个用于接收客户端连接(BossGroup),另一个用于处理连接后的业务逻辑(WorkerGroup)。BossGroup 负责接收新的连接请求,然后将其分配给 WorkerGroup 中的一个事件...
在这个项目中,我们看到的是一个自己实现的 ActiveMQ 客户端,它特别关注多线程的实现,这在处理大量并发消息时非常关键。 1. **ActiveMQ 的基本概念**: - **消息队列**:ActiveMQ 中的核心概念,用于存储待处理...
`LICENSE.txt`文件通常包含了开源项目或库的许可协议,它定义了用户可以如何使用、修改和分发该软件。在KMIPClient的案例中,阅读这个文件了解KMIP4J库的授权条款是非常重要的,以确保你的使用符合其许可规定。 **...
2. **接受连接**:当收到客户端连接请求时,服务器会建立连接,并分配必要的资源。 3. **处理请求**:服务器解析客户端的请求,然后根据请求内容提供相应的服务。 4. **分发资源**:如果请求是获取资源,服务器会将...
【Steam客户端】是全球最大的数字游戏分发平台,由Valve公司开发,提供数千款游戏的购买、下载、更新及社区交流服务。本资源为2022年的Steam客户端离线安装包,无需付费或积分,只需点赞即可获取。下面将详细介绍...
我们可以创建一个新的Socket实例来处理每个客户端连接,这样就可以同时处理多个客户端。 ```csharp while (true) { var clientSocket = socketServer.Accept(); Task.Run(() => HandleClientConnection...