1、ArcSDE数据被锁定后的解锁方法
描述:(1)删除所选对象失败 锁定请求与已有锁定冲突。
(2)在sde数据被锁定的情况下,编辑、创建featureclass或者注册版本的时候会报告:
Lock request conflicts with an established lock。
多半情况下关闭数据库连接可以解决这个问题,但有时候问题依然存在。
原因:ArcSDE数据被锁定
解决:sqlplus下查询lock表,如果有记录返回,那么手工删除这些表中的记录。
select t.*,t.rowid from sde.state_locks t;
select t.*,t.rowid from sde.object_locks t;
select t.*,t.rowid from sde.layer_locks t;
select t.*,t.rowid from sde.table_locks t;
查询谁锁定:
select t.*,t.rowid from sde.process_information t;
解决2:
1.关闭所有的ArcMap和ArcCatalog session。
2.开始——运行——cmd
3. 在dos下运行命令'sdemon -o kill -t all -p sde'
. 在dos下运行命令'sdemon -o info -I locks'
以上命令均不带 ' 符号
dos窗口报告'no arcsde layer/State/Tabel/Ojbects Locks registered.
一般这种情况下就可以解锁了
2、基础 DBMS 错误 ORA-01950: 对表空间 'SYSTEM' 无权限
描述:新建用户(默认表空间SYSTEM)后用于上传shp,提示该错误
原因:对表空间权限不足,无法提交数据到该表空间
解决:对用于存储矢量数据的用户授权
-- Grant/Revoke role privileges
grant connect to user_name;
grant resource to user_name;
grant select_catalog_role to user_name;
-- Grant/Revoke system privileges
grant unlimited tablespace to user_name;
3、任何ArcGIS连接Oracle问题
描述:ArcMap、ArcCatalog连接Oracle失败问题
原因:一般会直接弹出错误信息,若信息不全,请参考%TEMP% 目录中的 sdedc_Oracle.log 文件以获得更多的错误消息。
4、创建要素类时报错:表已存在[ORA-00955:名称已由现有对象使用]
方案1:
使用sde自带的取消表注册的命令
sdetable -o unregister -t tablename
方案2:
查询注册的表、列信息,删除对应数据
SELECT * FROM sde.LAYERS WHERE "OWNER" = 'username' AND TABLE_NAME = 'classname';
SELECT * FROM sde.TABLE_REGISTRY WHERE "OWNER" = 'username' AND TABLE_NAME = 'classname';
SELECT * FROM sde.COLUMN_REGISTRY WHERE "OWNER" = 'username' AND TABLE_NAME = 'classname';
SELECT * FROM sde.GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'username' AND F_TABLE_NAME = 'classname';
SELECT * FROM sde.GDB_ITEMS WHERE "NAME" = 'username.classname';
5、ArcGIS 注册版本长时间无响应处理案例
注册版本的内部原理以及解决方法:
注册版本实际上就是为要注册的要素类创建增量表(A,D表),如果对数据集注册版本,实际上就是对数据集下的所有要素类都创建
增量表(是一个要素一个A表一个D表),如果创建到一半无响应后直接杀进程就会出现有些要素类创建了增量表而有些没有创建
增量表这种不一致的状态,因此解决的方法就是手动清除这部分创建好的增量表,让数据集处于一致的状态。
解决步骤:
(1)清除可能存在锁信息。
(2)清除增量表
增量表的定义方式为A_REGISTRATION_ID和D_REGISTRATION_ID. 其中REGISTRATION_ID为SDE.TABLE_REGISTRAY表中的
REGISTRATION_ID字段的值,每张要素类一个值。根据数据集下的图层名称一个一个查找,知道后使用Drop table 删除。
select registration_id from sde.table_registry where table_name=’table_name’
(3)重新注册。