有时候连得上数据库,有时候又连不上.

可能是数据库上当前的连接数目已经超过了它能够处理的最大值.

select count( *) from v$process -- 当前的连接数
select value from v$parameter where name = ' processes ' -- 数据库允许的最大连接数

修改最大连接数:
alter system set processes = 300 scope = spfile;

重启数据库:
shutdown immediate;
startup;

-- 查看当前有哪些用户正在使用数据
SELECT osuser, a.username,cpu_time /executions / 1000000 || ' s ', sql_fulltext,machine
from v$session a, v$sqlarea b
where a.sql_address =b.address order by cpu_time /executions desc;