大家都知道ArcSDE的连接有服务连接和直连,从目前ArcGIS产品的不断升级和进化,直连以其出色的性能往往被Esri所推荐,所以现在大多数用户也经常使用直连。
那么如果在一个生产线中,需要将直连用户给kill掉该怎么办呢?
大家都知道ArcSDE命令有一个sdemon,这个命令就是对服务的管理,启动、暂停、关闭、KILL,但是ArcSDE9.3.1之前,KILL命令只支持清除服务连接,对直连无效,直到ArcSDE10才可以使用该命令KILL直连,那么对这两个不同版本的产品我们应该怎么操作呢?
----------------------------------ArcSDE9.3.1----------------------
因为直连,我们不需要服务来管理,但是他是数据库的一个连接,所以我们可以查找数据库的session信息,进行KILL。
首先查看直连连接信息
C:\Users\Administrator>sdemon -o info -I users -i sde:oracle11g:orcl -p sde -s lish ArcSDE Instance sde:oracle11g:orcl Registered Server Tasks on lish at Thu Feb 09 14:22:37 2012 ------------------------------------------------------------------------------ S-ID S-PID User Conn Client Machine:OS Started ----- ----- -------- ---- -------------------------------- ------------------- 133 8268 SDE DC lish:Win32 Thu Feb 09 14:22:37 131 2928 TEST DC lish:Win32 Thu Feb 09 14:22:23
我们也可以查看SDE用户下的Process_information表
SQL> select SDE_ID,SERVER_ID from process_information where DIRECT_CONNECT='Y'; SDE_ID SERVER_ID ---------- ---------- 131 2928
从上面信息可以看出S-ID就是SDE_ID,S-PID就是SERVER_ID
SQL> select SID,SERIAL#,PROCESS from v$session where USERNAME='TEST'; SID SERIAL# PROCESS ---------- ---------- ------------------------ 96 765 2928:1564
这里面还可使用因为Process的形式为XXXX:YYYY,对“:”前面的XXXX就等于S-PID(Server_ID)获得了这两个信息,我们就可以将对应的Session给KILL掉了
SQL> alter system kill session'96,765' immediate;
系统已更改。
使用这种方法就可以将直连给KILL掉了。----------------------------------ArcSDE10-------------------------
一下为处理过程,在ArcSDE10中,首先我们需要查看一下连接信息
C:\Users\Administrator>sdemon -o info -I users -i sde:oracle11g:orcl -p sde -s lish
ArcSDE Instance sde:oracle11g:orcl Registered Server Tasks on lish at Thu Feb 09 14:08:27 2012
------------------------------------------------------------------------------
S-ID S-PID User Conn Client Machine:OS Started
----- ----- -------- ---- -------------------------------- -------------------
116 2928 TEST DC lish:Win32 Thu Feb 09 11:53:25
128 7488 SDE DC lish:Win32 Thu Feb 09 14:08:28
因为使用命令本身就是一个直连,所以我们只对S-ID=116进行处理。
直接使用命令进行KILL
C:\Users\Administrator>sdemon -o kill -t 116 -i sde:oracle11g:orcl -u sde -p sde
ArcSDE Instance sde:oracle11g:orcl Process Management on lish at Thu Feb 09 14:08:38 2012
-------------------------------------------------------------------------
Kill Server Task 116? ARE YOU SURE (Y/N)?: y
Insufficient permissions, Unable to kill server 116
提示没有足够的权限。
C:\Users\Administrator>sqlplus sys/oracle@orcl as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期四 2月 9 14:08:52 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> grant alter system to sde;
授权成功。
SQL> grant select_catalog_role to sde;
授权成功。
直连需要对sde额外赋予ALTER SYSTEM和SELECT_CATALOG_ROLE的权限
C:\Users\Administrator>sdemon -o kill -t 116 -i sde:oracle11g:orcl -u sde -p sde
ArcSDE Instance sde:oracle11g:orcl Process Management on lish at Thu Feb 09 14:09:41 2012
-------------------------------------------------------------------------
Kill Server Task 116? ARE YOU SURE (Y/N)?: y
C:\Users\Administrator>
赋完权限即可