最近遇到了一个比较奇葩的问题,启动系统的时候无法显示地图服务,查找原因时发现无法连接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服务
方法三:用户自己来使用命令行启动服务,这样肯定没有问题,因为用户输入的密码就是最新的密码