Oracle 数据库配置文件和连接池/缓存

Oracle DB Profile and Connection Pooling / Caching

我刚刚接手了一个项目,注意到他们正在为用于连接缓存的服务帐户使用数据库配置文件

ALTER PROFILE APP_PROF LIMIT 
    SESSIONS_PER_USER          100 
    CONNECT_TIME               640 
    IDLE_TIME                  15
   ...

我相信这就是为什么我们有时会遇到过时的连接,并且 "ORA-02399: exceeded maximum connect time, you are being logged off"。

我的问题是:对于缓存连接的中间层应用程序,是否有充分的理由将此类配置文件用于具有此类限制的服务帐户?

就我个人而言,我很难想象我想要一个设置了 connect_timeidle_time 的中间层服务帐户的情况。我想某个地方的某个人可能有合理的理由使用这样的配置——也许强制连接被频繁回收是快速对资源泄漏进行创可贴的最不痛苦的方法,例如,当你想要修复时底层代码问题。但这些肯定是我会仔细查看的设置。

我见过和听说过有人想为中间层服务帐户设置 sessions_per_user 的情况,中间层应用程序服务器管理员和数据库管理员之间的关系很紧张。通常,中间层管理员在与确保数据库可以处理 connection_pool_max * number_of_app_servers 个连接的 DBA 团队协商后,为中间层的连接池大小设置一个上限。如果中间层管理员有在未与 DBA 团队交谈的情况下启动新的应用程序服务器场或增加连接池中允许的连接数的历史,则 DBA 团队可能希望设置自己的限制以保护数据库。我宁愿解决通信问题也不愿有单独的数据库限制。