我之前写过一篇文章《arcsoc进程无限增长导致oracle processes溢出》(见链接:https://www.cnblogs.com/6yuhang/p/9379086.html),后来我觉得没有说清楚,所以有了这一篇文章。

1、问题说明

对于ORACLE数据库,若用户密码已过期(即account_status为' EXPIRED'),当过期之后首次登陆数据库时(若登陆成功,会创建服务端process进程),数据库会要求首先设置新的密码,否则无法创建新的会话(session),如下图:

若Arcgis Server地图服务的数据源是oracle,当用户密码已过期,在地图服务实例新建一个数据库连接后,由于未首先设置新的密码,当前的连接会一直"挂起"在设置新密码的状态。如果service服务还配置了多实例、高隔离等,那么每一个实例在连接数据库时,都会重复上述的过程,即创建了server process,但该process会一直"挂起" 。随着用户请求次数的增多,会导致server process很快超过数据库所设置的processes参数。

2、调整方法

2.1 检查是否有用户密码过期

以sys用户登陆,执行如下的匿名存储过程,检查疑似密码已过期的用户。

declare

tcgs number;

begin

dbms_output.enable(1000000000);

dbms_output.put_line('检查如下用户,他们的密码已过期且用户下存在图层:');

for u in (select username from dba_users where account_status = 'EXPIRED')

loop

execute immediate 'select count(1) from dba_tab_columns where data_type in (''ST_GEOMETRY'' ,''SDO_GEOMETRY'') and owner=:1' into tcgs using u.username;

if tcgs > 0 then

dbms_output.put_line(u.username);

end if;

end loop;

end;

2.2 调整地图服务配置

调整每个服务的配置信息,具体如下:

  1. 将空间实例可持续运行的最长时间由1800s降低到600s

  1. 将实例的隔离级别设置为"低隔离性",如下图:

  1. 可适当降低"每台计算机上最大实例数"。

2.3 将数据库专有连接模式改为共享连接模式

以sys用户登陆,执行如下的命令。

alter system set dispatchers='(PROTOCOL=TCP)(DISPATCHERS=3)' scope=both;

 alter system set max_dispatchers = 10 scope=both;

 alter system set shared_servers = 10 scope=both;

 alter system set max_shared_servers = 40 scope=both;

 alter system set shared_server_sessions = 100 scope=both;

2.4 使用户密码永不过期

如果管理上允许设置用户密码永不过期,可以sys用户登陆,执行如下命令:

alter profile default limit password_life_time unlimited;

最新文章

  1. RoseRT配置高版本的编译器
  2. SASS用法指南-转
  3. paas架构之docker——镜像管理
  4. N年后给自己一些忠诚的建议
  5. Hadoop-- MapReduce简单理解
  6. CSS之后代选择器与多类选择器
  7. 通过expdp/impdp进行oracle数据库的备份恢复详细指导
  8. Common Lisp 编译器IDE环境搭建
  9. Django 分页功能
  10. Generic(泛型)
  11. “玲珑杯”ACM比赛 Round #13 题解&源码
  12. AJAX实现简单的读取文本文档内容到网页--AJAX
  13. Linux安装Discuz
  14. react双组件传值和传参
  15. Spring MVC的核心控制器DispatcherServlet的作用
  16. 洛谷P1315 观光公交
  17. JavaI/O(输入/输出)
  18. Oracle中如何停止正在执行SQL语句
  19. iOS 内存管理,ARC
  20. 软件架构设计学习总结(15):远程通信(RPC,Webservice,RMI,JMS、EJB、JNDI的区别)对比

热门文章

  1. ASP.NET Core使用MongoDB数据库
  2. python \r与\b的应用、光标的含义
  3. 【知识点】SPU&SKU
  4. tomcat采坑
  5. Gin-Go学习笔记八:Gin-Web框架 常用的包
  6. 类型转换 String——》Char OR Char ——》String
  7. django 权限设置-登录配置权限
  8. AQS 抽象队列同步器(Abstract Queued Synchronizer) 知识点
  9. git常用命令(测试必备)
  10. hbase表的高性能设计