最近遇到了一个比较奇葩的问题,启动系统的时候无法显示地图服务,查找原因时发现无法连接Oracle。出现以下错误:

       

        之前遇到这种问题,通常是由于同时安装了64位和32位Oracle客户端,且二者的环境变量顺序不正确(应该为64位环境变量在前,32位环境变量在后),但是这次并不是由于这个问题,而是由于登录的sde账户被锁定。

        发现问题后将sde账户进行解锁并设置了密码不过期(解除锁定详见之前的随笔  Oracle使用笔记(三)

        顺利登录sde账户后打开查看地图服务,发现sde账户又被锁定了。

 

 Oracle账户被锁定的原因有两种,一种是密码已过期,一种是账户频繁登录失败造成锁定。

可能造成ArcSDE频繁被锁定的原因

1、ArcSDE账户密码已过期

解决方法:修改ArcSDE账户密码并设置永不过期,之后解除锁定

(解除锁定详见之前的随笔  Oracle使用笔记(三)

由于刚才已经设置了账户密码不过期,在进行新一轮测试修改的过程一直寻找可能通过sde账户登录Oracle的应用和接口:

2、Arcmap中数据库连接过期

解决方法:重新连接数据库,之后解除锁定

 

3、Arcgis Server注册数据库过期

解决方法:重新注册数据库,之后解除锁定

(重新注册数据库详见之前的随笔  发布要素服务需要已注册数据库解决方法

4、其他第三方应用或接口频繁通过ArcSDE账户登录系统

解决方法:修改通过ArcSDE账户登录Oracle的应用和接口并修改账户密码,之后解除锁定

在进行以上操作后,仍旧发现ArcSDE账户频繁被锁定。。。

 5、检查Arcgis Server许可是否过期

解决方法:通过许可文件重新进行许可


6、现有ArcSDE账户密码与发布地图服务时的ArcSDE账户密码不同

解决方法:更改ArcSDE账户密码为创建ArcSDE服务时的密码或重新创建ArcSDE服务

就在我黔驴技穷的时候,想起来前段时间同事更换过ArcSDE账户的密码,与之前的密码不同,抱着试一试的态度将ArcSDE账户密码更改为原密码,没想到成功了。

 

 由此可以得出ArcSDE账户密码对于ArcSDE服务是有影响的,根据后来网上查找到的资料https://blog.csdn.net/linghe301/article/details/8060956:

         如果用户使用Windows自动启动ArcSDE服务的方式,就肯定有影响,因为Windows自动启动ArcSDE服务是记录了SDE用户的密码,这个密码在注册表里面可以看到

        上图中的SDE_DBA_PASSWORD就是相关密码,那么用户的SDE用户密码修改过后,服务肯定启动不了。

 解决方法:

方法一(推荐):将ArcSDE账户密码改为创建ArcSDE服务时的密码

方法二(推荐):停止服务、删除ArcSDE服务、重新创建ArcSDE服务

方法三:用户自己来使用命令行启动服务,这样肯定没有问题,因为用户输入的密码就是最新的密码