关闭

ORA-12519错误的解决方案

标签: 数据库processesORA-12519
454人阅读 评论(0) 收藏 举报
分类:

有时候连得上数据库,有时候又连不上.
可能是数据库上当前的连接数目已经超过了它能够处理的最大值。

解决方法:

查看一下数据库现有的进程数,是否已经达到参数processes的大小。

  1. 查看processes和sessions参数

      SQL> show parameter processes

      NAME TYPE VALUE

      db_writer_processes integer 1

      gcs_server_processes integer 0

      job_queue_processes integer 10

      log_archive_max_processes integer 2

      processes integer 50
      

      SQL> show parameter sessions

      NAME TYPE VALUE

      license_max_sessions integer 0

      license_sessions_warning integer 0

      logmnr_max_persistent_sessions integer 1

      sessions integer 60

      shared_server_sessions integer
      

根据Oracle文档,SESSIONS和TRANSACTIONS的初始化参数应该源于PROCESSES参数,根据默认设置SESSIONS = PROCESSES * 1.1 + 5。

但是目前SESSIONS的设置达到了600,而PROCESSES的设置没有改变,仍然为150,导致了过多的用户会话连接到Oracle上时,Oracle没有足够的后台进程来支持这些会话。

解决方法很简单,直接设置合适的PROCESSES产生就可以了。

修改processes和sessions值

  SQL> alter system set processes=300 scope=spfile;

  系统已更改。

  SQL> alter system set sessions=335 scope=spfile;

  系统已更改。

修改processes和sessions值必须重启oracle服务器才能生效。

  附录 - 常用查询语句

  查询数据库当前进程的连接数:

  select count(*) from v$process;

  查看数据库当前会话的连接数:

  elect count(*) from v$session;

  查看数据库的并发连接数:

  select count(*) from v$session where status=’ACTIVE’;

  查看当前数据库建立的会话情况:

  select sid,serial#,username,program,machine,status from v$session;

 查询数据库允许的最大连接数:

  select value from v$parameter where name = ‘processes’;

  或者:show parameter processes;

  修改数据库允许的最大连接数:

  alter system set processes = 300 scope = spfile;

  (需要重启数据库才能实现连接数的修改)

  重启数据库:

  shutdown immediate;

  startup;

  查看当前有哪些用户正在使用数据:

  select osuser, a.username, cpu_time/executions/1000000||’s’, sql_fulltext,machine

  from vsessiona,vsqlarea b

  where a.sql_address = b.address

  order by cpu_time/executions desc;

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3551次
    • 积分:68
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类