今天,建了要素集后,建了几个要素类,突然再建一个要素类的时候,提示用户锁定,无法新建。
用了文章二的方法后,还是不行,process_information表里有两条记录,手工删除一条后,另一条也删除了(自己感觉就是一个用户的两次登录时间),用sdemon命令也kill不掉。只有重启机器了,重启机器后问题依旧。
不知道为什么会出现这种情况。服务器同时只能一个用户登录,怎么会有其他用户占用呢?
解决方法:
文章一、二都已经试过了,最后通过以下命令:
SQL> select * from sde.state_locks;
SQL> select * from sde.object_locks;
SQL> select * from sde.layer_locks;
SQL> select * from sde.table_locks;
在table_locks表里找到了锁定的用户。但是手工删除第一次没用成功,连续删除多次,保证表里没有数据,搞定!但是原因还是没有找到。
---------------------------------------------------------------------------
文章一、
ArcSDE数据被锁定后的解锁方法
在sde数据被锁定的情况下,编辑、创建featureclass或者注册版本的时候会报告:Lock request conflicts with an established lock。多半情况下关闭数据库连接可以解决这个问题,但有时候问题依然存在。
ArcSDE数据被锁定后的解锁方法
在sde数据被锁定的情况下,编辑、创建featureclass或者注册版本的时候会报告:Lock request conflicts with an established lock。多半情况下关闭数据库连接可以解决这个问题,但有时候问题依然存在。
解决的方法是:
1.关闭所有的ArcMap和ArcCatalog session。
2. 运行命令'sdemon -o kill -t all -p sde'
3. 运行命令'sdemon -o info -I locks' then it says 'no arcsde 会报告'no arcsde layer/State/Tabel/Ojbects Locks registered.
如果以上步骤执行了后依然报告数据被锁定,那么在sqlplus下查询lock表:
SQL> select * from sde.state_locks;
SQL> select * from sde.object_locks;
SQL> select * from sde.layer_locks;
SQL> select * from sde.table_locks;
如果有记录返回,那么手工删除这些表中的记录。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
文章二、
采用arcgis平台做GIS应用的人,可能偶尔碰到sde用户锁定(Arccatalog 或应用程序异常退出的时比较多)的问题,往往咱们解决的办法是重启sde服务。如果一个服务器上有多个连接时,重启服务会影响别人。下面小罗介绍另外二种办法:
方法一:
1, 用sde用户身份登录到Oracle(如:PLSQL developer之类的东东),找到sde用户下面的process_information表;
2, 然后执行查询select t.sde_id,t.owner from process_information t, sde_id是sde的进程ID, owner 是连接的oracle用户
3, 从owner中找到你要解除锁定的用户以及所对应的sde_id;
4, 进入ArcSDE安装的服务器(如:192.9.100.185),进入cmd,执行sdemon如下:(下面这些就是sdemon常用操作,感兴趣的同事可以自己去摸索,当然也可以直接执行第5步,第4步主要是防止出错)
C:/Documents and Settings/Administrator>sdemon
ESRI ArcSDE System Monitor Utility Thu Mar 05 16:15:26 2009
----------------------------------------------------------------------
6, 搞定收工;
方法二:直接在Arcsde空间服务器上面,运行
sdemon -o info -I users -i esri_sde (sde服务名),如下所示:
C:/>sdemon -o info -I users -i esri_sde
ArcSDE Instance esri_sde Registered Server Tasks on hzgt-dbcenter at Sun Dec 13
17:39:46 2009
-------------------------------------------------------------------------
S-ID User Host:OS Started
----- -------- -------------------------------- ------------------------
635 SJZX hzgt-appsrv:Win32 Sun Dec 13 17:36:24 2009
625 CJ_SGYX hzgt-appsrv:Win32:XDR Sun Dec 13 16:14:13 2009
626 SJZX hzgt-appsrv:Win32 Sun Dec 13 16:14:15 2009
633 SJZX hzgt-appsrv:Win32 Sun Dec 13 17:31:26 2009
636 SJZX hzgt-appsrv:Win32 Sun Dec 13 17:37:06 2009
622 CJ_SGYX hzgt-appsrv:Win32:XDR Sun Dec 13 13:45:50 2009
然后kill掉某个连接进程:
C:/>sdemon -o kill -t 622
Please enter ArcSDE DBA password:
ArcSDE Instance esri_sde Process Management on hzgt-dbcenter at Sun Dec 13 17:41
:55 2009
-------------------------------------------------------------------------
Kill Server Task 622? ARE YOU SURE (Y/N)?:y