首页 > 代码库 > 解决ORA-00020错误
解决ORA-00020错误
解决ORA-00020错误
分类: Oracle2009-05-13 17:26 3398人阅读 评论(0) 收藏 举报
数据库sessionoraclesql服务器object
项目上使用的Oracle服务器经常出现无法登陆的情况,尝试查看数据库dump文件,没有发现在无法登陆时的报错信息,使用SecureCRT连接服务器登录sqlplus时出现错误"ORA-00020: maximum number of processes (150) exceeded",解决方法如下:
开始时怀疑数据库死锁,通常这种情况下可以通过查询下列表/视图,杀死死锁的进程解决:
V$LOCK | 列出当前Oracle持有的锁和未解决的锁请求 |
V$SESSION | 列出当前连接到数据库的Session信息 |
DBA_BLOCKERS | 显示锁住对象的会话 |
DBA_WAITERS | 显示等待被锁住对象的会话 |
DBA_DDL_LOCKS | 列出所有DDL锁和未解决的DDL锁请求 |
DBA_DML_LOCKS | 列出所有DML锁和未解决的DML锁请求 |
DBA_LOCK | 列出所有锁和latch,以及所有未解决的锁请求 |
DBA_LOCK_INTERNAL | 每个锁或latch显示一行,每个未解决的锁请求显示一行 |
通过查询V$SESSION视图,发现连接总量已达到上限150,由于在做Oracle ADF开发,该OracleDB作为开发数据库,连接较多属于允许范围内,遂增大最大连接数,修改对应init.ora文件中"procdsses=150",重启DB。
10g里面如此修改无效,可以通过sqlplus连接至数据库
SQL> show parameter processes; //查看processes连接数设置
SQL> show parameter sessions; //查看sessions连接数设置
SQL> alter system set processes=300 scope=spfile; //设置processes连接数
不需要设置sessions连接数,sessions连接数为processes * 1.1 + 5
重启DB,问题解决。
附:用于确定锁住数据库对象的锁的SQL
select c.owner,
c.object_name,
c.object_type,
b.sid,
b.serial#,
b.status,
b.osuser,
b.machine
from v$locked_object a,
v$session b,
dba_objects c
where b.sid = a.session_id
and a.object_id = c.object_id;
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。