ArcGis常见错误及解决⽅法
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;
session数据错误是什么意思
解决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)重新注册。