我之前写过一篇文章《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;

避免因为Arcgis Server服务设置不当导致Oracle Process溢出的方法的更多相关文章

  1. Windows分页文件设置不当导致SQL Server服务被终止

    Windows分页文件设置不当导致SQL Server服务被终止 文章说明 在正式开始验证和测试之前,先介绍Windows分页文件和SQL Server的动态内存管理.下面测试将分为两种测试场景:场景 ...

  2. 在Linux环境下设置ArcGIS Server 服务开机自启

    在 VMware 11.0 中安装了CentOS 6.5的Linux系统中部署ArcGIS Server,安装完后默认开机不自动启动此服务,每次开机都要手动启动(如下图所示),这样太麻烦.本文记录了设 ...

  3. arcgis engine 调用arcgis server服务

    首先需要添加两个引用: using ESRI.ArcGIS.GISClient;using ESRI.ArcGIS.DataSourcesRaster; /// <summary> /// ...

  4. 教你发布Silverlight Bussiness Application(SQL Server 登录,局域网访问,以及使用ArcGIS Server服务需要注意的问题)

    原文:教你发布Silverlight Bussiness Application(SQL Server 登录,局域网访问,以及使用ArcGIS Server服务需要注意的问题) 之前发布过Silver ...

  5. ArcGIS JS 之通过代理配置ArcGIS Server服务 token

    ArcGIS JS 代理 1.ArcGIS Server Manager中配置访问服务的用户名.密码.角色等,并配置地图服务的具体角色名称 2.在ArcGIS JS中配置使用代理,下述代码将esri的 ...

  6. Arcgis server服务启动后停止

    ---恢复内容开始--- 重新按装server10.1,10sp1和10.2 易出现服务无法启动.在管理中手动启动服务,出现如图1所示的错误. 图1 错误信息 本人多次遇到用户反馈这问题,最初以为是因 ...

  7. 一次由于 MTU 设置不当导致的网络访问超时

    转自:http://weibo.com/ttarticle/p/show?id=2309404140904511340923 API 服务正常,但是调用总是超时.api端日志显示,响应速度很快. ​​ ...

  8. ArcGIS Server服务扩展SOE应用场景

    何时需要使用SOE? 用自己的业务逻辑扩展ArcGIS Server • 分析超越了即拿即用的GP工具 • 功能超越了Esri Web APIS中包含的内容 • 通过其他方式细粒度的ArcObject ...

  9. ArcSOC进程数不断增长导致oracle processes溢出原因分析

    现场出现了一个问题,oracle运行一段时间之后,process个数会溢出,然后新的连接会失败.通过分析,发现Arcgis Server 的ArcSOC进程在不段增长.ArcSOC是arcgis se ...

随机推荐

  1. set容器与map容器的简单应用

    set容器中一些函数,取自百度其他大佬已总结好的,如有侵权,请联系删除! set的各成员函数列表如下: c++ stl容器set成员函数:begin()--返回指向第一个元素的迭代器 c++ stl容 ...

  2. win10桌面左下角搜索框无法搜索解决办法

    方法1.首先看下window search服务是不是被禁止或者停止运行了,如果停止了,就重新启动看看. 方法2.如果上面的方法还没有解决的话:任务管理器-详细信息--结束explorer.exe进程- ...

  3. Java 之 Vector 集合

    一.构造方法 Vector():构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零. Vector(int initialCapacity) :使用指定的初始容量和等于零的容量增量构造 ...

  4. 如何提高你的移动开发中AS3/AIR性能

    Shawn Blais 让我了解到如何在移动平台上对AS3代码进行优化.他的博客(http://esdot.ca/site/category/blog)只有十来篇文章,但都是些很意思的信息,尤其适合我 ...

  5. vue+element下拉框样式的点击按钮

    项目中点击按钮实在太多了,怎么办呢?我们就可以将它们制作成像下拉框那样的类似操作 1.HTML样式部分:关键点在于command 方法和属性 1 <el-dropdown 2 size=&quo ...

  6. Elasticsearch 在 7.X版本中去除type的概念

    背景说明 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎库. El ...

  7. nginx的 ngx.var ngx.ctx ngx.req

    ngx.var 是获取 Nginx 的变量,需要经历字符串 hash.hash 表查找等过程. ngx.ctx 仅仅是一个 Lua table 而已,它的引用存放在 ngx_lua 的模块上下文(ct ...

  8. 【目录】Jmeter系列

    为天地立心,为生民立命.为往圣继绝学,为万世开太平. ---<横渠四句>·张载 Jmeter(一)简介以及环境搭建 Jmeter(二)Jmeter目录介绍 Jmeter(三)Test-Pl ...

  9. JavaScript 关于金额、数字验证的正则表达式

    JavaScript 关于金额.数字验证的正则表达式 function ismoney(money) { var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^ ...

  10. mybatis 模糊查询 mapper.xml的写法

    1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%'); 2. 使用 ${...} ...