ora--12518 解决方法

 -- 1. 通过网上查找原因查看12518的解决方法
  /*  
    * ORA-12518 报错是因为数据库服务进程超出最大限制而崩溃, 因此我们先得监控一下数据库的process,session 的变化情况
    * 一下是在cmd sqlplus 下操作
  */
   show parameter processes; -- 查看数据库最大进程数量限制;
   show parameter sessions; -- 查看数据库最大对话数量限制;
   
   select count(*)  from v$process; -- 监控一下看看当前的进程数量变化情况;
   select count(*) from v$session; -- 监控一下对话数量变化情况;
   
 -- 如果以上最大限制和当前数量比较接近的话, 可以把最大值调大一些
   alter system set processes=1000 scope=spfile;  --最大进程数

   alter system set sessions=1500 scope=spfile;   -- 最大对话数量限制

 -- 再监控一下当前进程和对话数量的变化情况
  select '进程数量',count(*)  from v$process
   union all
   select '对话数量',count(*) from v$session;

  /*
   * 进程还是一直在递增, 肯定有什么任务一直在创建进程
  */
  select count(*), s.PNAME, s.USERNAME, s.TERMINAL,s.PROGRAM from  v$process s
 group by s.PNAME,s.USERNAME, s.TERMINAL,s.PROGRAM;


--监控进程创建情况

  select count(*), s.PNAME, s.USERNAME, s.TERMINAL,s.PROGRAM from  v$process s
 group by s.PNAME,s.USERNAME, s.TERMINAL,s.PROGRAM;

--发现 ORACLE.EXE (SHAD) 这个program 的数量持续增加, 查了一下发现这个程序跟客户端尝试连接服务端有关系

--查看系统,有几个用户密码过期,系统一直无法正常连接重复尝试连接导致连接数和进程持续增长


--密码设置为永不过期

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

 --再把那些因密码过期而锁定的用户密码都更新一下
 alter user user_name identified by <原来的密码> ;



 


### Ora-12518 错误的原因分析 Ora-12518 是一种常见的 Oracle 数据库连接错误,通常发生在监听器尝试将客户端连接传递给服务器进程或调度程序时出现问题。具体来说,该错误表明数据库无法创建新的服务进程来处理传入的请求[^1]。 #### 原因解析 以下是可能导致 Ora-12518 错误的主要原因: 1. **数据库的最大进程数限制不足** 当前运行中的进程数量可能已经接近或达到 `processes` 参数设置的最大值。如果新连接试图启动额外的服务进程,则会触发此错误[^3]。 2. **数据库的最大会话数限制不足** 类似于进程限制,当活动会话的数量接近或超过 `sessions` 参数设定的上限时,也会引发类似的资源耗尽问题[^2]。 3. **共享内存配置不当** 如果系统的共享内存不足以支持新增加的进程和服务需求,也可能导致此类错误的发生。 4. **操作系统级别的资源限制** 操作系统本身可能存在对进程、线程或其他资源的硬性约束,这些限制可能会间接影响到 Oracle 数据库的行为。 --- ### 解决方案 针对上述原因,可以采取以下措施解决问题并优化性能: #### 调整参数以增加允许的最大进程和会话数 可以通过修改初始化参数文件 (SPFILE 或 PFILE) 来提高 `processes` 和 `sessions` 的阈值。例如,在 SQL*Plus 中执行如下命令: ```sql ALTER SYSTEM SET PROCESSES=1000 SCOPE=SPFILE; ALTER SYSTEM SET SESSIONS=1100 SCOPE=SPFILE; ``` 注意:调整后的数值应基于实际工作负载以及硬件能力合理规划。 #### 监控现有资源利用率 定期检查当前正在使用的进程和会话数目,以便及时发现潜在瓶颈: ```sql SHOW PARAMETER PROCESSES; -- 显示最大进程数限制 SHOW PARAMETER SESSIONS; -- 显示最大会话数限制 SELECT COUNT(*) FROM V$PROCESS; -- 查询当前活跃进程总数 SELECT COUNT(*) FROM V$SESSION; -- 查询当前活跃会话总数 ``` #### 验证操作系统层面是否存在限制 确认 Linux/Unix 平台上的 ulimit 设置是否满足要求,特别是对于打开文件描述符 (`nofile`) 和核心转储大小 (`coredumpsize`) 等选项。必要时可适当放宽其边界条件。 #### 重启数据库实例使更改生效 由于部分参数仅能在 SPFILE 层面定义且需重新加载才能应用最新改动,因此建议完成所有必要的调整之后再进行一次完整的停机维护操作。 --- ### 总结 通过对 Ora-12518 故障现象及其背后成因深入剖析可知,主要集中在资源配置不合理方面。通过动态调节相关控制项如 processes/sessions 数量,并辅之以持续性的状态跟踪手段即可有效缓解乃至彻底消除这一类异常状况发生几率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值