PLSQL出现无法响应卡死问题

最近在使用plsql时候发现经常卡顿出现无响应的情况,非常抓狂;
猜想问题原因可能是出在防火墙拦截、会话时间过短、内存小等等情况,经过排查都被一一排除。最后发现竟然是oracle的客户端TNS配置问题。
我的TNS配置如下:
ORCL1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = SHARED)
(SID= orcl)
)
)

其中SERVER = SHARED 配置查询了下含义是:
在共享服务器中,Oracle 使用一个“共享进程”池为大量用户提供服务。共享服务器实际上就是一种连接池机制。利用共享服务器,我们不必为10,000 个数据库会话创建10,000 个专用服务器(这样进程或线程就太多了),而只需建立很少的一部分进程/线程,顾名思义,这些进程/线程将由所有会话共享。

而缺点是:
1)共享服务器的代码路径比专用服务器长,所以它天生就比专用服务器慢。
2)存在人为死锁的可能,因为它是串行的,只要一个连接阻塞,则该服务器进程上的所有用户都被阻塞,并且极可能死锁。
3)存在独占事务的可能,因为如果一个会话的事务运行时间过长,它独占共享资源,其它用户只能等待,而专用服务器,每个客户端是一个会话。
4)共享服务器模式限制了某些数据库特性,例如:不能单独启动和关闭实例,不能进行介质恢复,不能使用Log Miner,并且SQL_TRACE没有意义(因为是共享而不是当前会话的)。

然后改成SERVER = DEDICATED 后plsql就正常使用了。

你可能感兴趣的:(PLSQL出现无法响应卡死问题)