无法创建图层问题解决简记
分享
软件为 :
软件:arcsde 9.2 数据库:oracle10.2.0.1
现象:
数据库恢复后,使用ArcCatalog创建任何一个FeatureClass都会报ORA-00955,对象已经被使用的错误,但是实际上ArcCatalog目录树中并没有该FeatureClass 现场:用户使用的是SDELOB进行的存储,并且只要使用SDELOB进行存储都会报错,但是使用ST_GEOMETRY进行存储是没有问题。
解决过程:
使用oracle的后台跟踪对操作进行跟踪 在跟踪文件中发现该错误的所执行的sql语句如下:
PARSING IN CURSOR #66 len=387 dep=0 uid=56 oct=1 lid=56 tim=566762959823 hv=3561322370 ad='2de49354' CREATE TABLE SDE.F415 (fid INTEGER NOT NULL, numofpts INTEGER NOT NULL, entity SMALLINT NOT NULL, eminx FLOAT(64) NOT NULL, eminy FLOAT(64) NOT NULL, emaxx FLOAT(64) NOT NULL, emaxy FLOAT(64) NOT NULL, eminz FLOAT(64) NULL, emaxz FLOAT(64) NULL, min_measure FLOAT(64) NULL, max_measure FLOAT(64) NULL, area FLOAT(64) NOT NULL, len FLOAT(64) NOT NULL, points LONG RAW)PCTFREE 0 INITRANS 4 END OF STMT PARSE #66:c=0,e=635,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=566762959816 BINDS #66: ===================== PARSING IN CURSOR #69 len=493 dep=1 uid=0 oct=3 lid=0 tim=566762960100 hv=2584065658 ad='342d4f64' select t.ts#,t.file#,t.block#,nvl(t.bobj#,0),nvl(t.tab#,0),t.intcols,nvl(t.clucols,0),t.audit$,t.flags,t.pctfree$,t.pctused$,t.initrans,t.maxtrans,t.rowcnt,t.blkcnt,t.empcnt,t.avgspc,t.chncnt,t.avgrln,t.analyzetime,t.samplesize,t.cols,t.property,nvl(t.degree,1),nvl(t.instances,1),t.avgspc_flb,t.flbcnt,t.kernelcols,nvl(t.trigflag, 0),nvl(t.spare1,0),nvl(t.spare2,0),t.spare4,t.spare6,ts.cachedblk,ts.cachehit,ts.logicalread from tab$ t, tab_stats$ ts where t.obj#= :1 and t.obj# = ts.obj# (+) END OF STMT PARSE #69:c=0,e=40,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=566762960091 BINDS #69: kkscoacd Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=0a8e607c bln=22 avl=04 flg=05 value=52209 EXEC #69:c=0,e=148,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=566762960494 FETCH #69:c=0,e=175,p=0,cr=5,cu=0,mis=0,r=1,dep=1,og=4,tim=566762960699 STAT #69 id=1 cnt=1 pid=0 pos=1 obj=0 op='NESTED LOOPS OUTER (cr=5 pr=0 pw=0 time=184 us)' STAT #69 id=2 cnt=1 pid=1 pos=1 obj=4 op='TABLE ACCESS CLUSTER TAB$ (cr=4 pr=0 pw=0 time=85 us)' STAT #69 id=3 cnt=1 pid=2 pos=1 obj=3 op='INDEX UNIQUE SCAN I_OBJ# (cr=2 pr=0 pw=0 time=32 us)' STAT #69 id=4 cnt=0 pid=1 pos=2 obj=708 op='TABLE ACCESS BY INDEX ROWID TAB_STATS$ (cr=1 pr=0 pw=0 time=50 us)' STAT #69 id=5 cnt=0 pid=4 pos=1 obj=709 op='INDEX UNIQUE SCAN I_TAB_STATS$_OBJ# (cr=1 pr=0 pw=0 time=22 us)' EXEC #66:c=0,e=1401,p=0,cr=5,cu=0,mis=0,r=0,dep=0,og=1,tim=566762961286 ERROR #66 :err=955 tim=56624315
从最后一行可以看出是执行第66个游标的sql语句所出的错,也就是 CREATE TABLE SDE.F415 (fid INTEGER NOT NULL, numofpts INTEGER NOT NULL, entity SMALLINT NOT NULL, eminx FLOAT(64) NOT NULL, eminy FLOAT(64) NOT NULL, emaxx FLOAT(64) NOT NULL, emaxy FLOAT(64) NOT NULL, eminz FLOAT(64) NULL, emaxz FLOAT(64) NULL, min_measure FLOAT(64) NULL, max_measure FLOAT(64) NULL, area FLOAT(64) NOT NULL, len FLOAT(64) NOT NULL, points LONG RAW)PCTFREE 0 INITRANS 4 这条sql语句,在创建表F415的时候因为该表已经存在,实际上这个表的确是存在,是一个现有FeatureClass的Feature Table表,所以报错. F415表为FeatureClass的Feature Table其中415为该图层的ID号,这个ID号是用sde.layer_id_generator序列生成的,在用户的数据库中这个序列的LAST_NUMBER属性为414,INCREMENT_BY的属性为1, 如果再创建一个新的FeatureClass,它就会创建F(414+1)也就是F415表,但是这个表已经存在,所以出错.
最终使用select sde.layer_id_generator.nextval from dual;将ID手动的增加到指定大小解决问题。
另外:
用ST_GEOMETRY存储没有问题的原因为: ST_GEOMETRY存储是将Business Table和Feature Table放在一个表中,Feature Table原有的记录作为SHAPE字段存储在Business Table中,所以不存在分配LayerID的问题.
最终导致出现这个问题的原因 : 是用户备份或者恢复所导致,用户备份或者恢复的时候只备份了或者只恢复了表,包等对象,没有备份或者恢复sequence对象.
文章来源:http://blog.csdn.net/liufeng1980423/article/details/6067419
软件:arcsde 9.2 数据库:oracle10.2.0.1
现象:
数据库恢复后,使用ArcCatalog创建任何一个FeatureClass都会报ORA-00955,对象已经被使用的错误,但是实际上ArcCatalog目录树中并没有该FeatureClass 现场:用户使用的是SDELOB进行的存储,并且只要使用SDELOB进行存储都会报错,但是使用ST_GEOMETRY进行存储是没有问题。
解决过程:
使用oracle的后台跟踪对操作进行跟踪 在跟踪文件中发现该错误的所执行的sql语句如下:
PARSING IN CURSOR #66 len=387 dep=0 uid=56 oct=1 lid=56 tim=566762959823 hv=3561322370 ad='2de49354' CREATE TABLE SDE.F415 (fid INTEGER NOT NULL, numofpts INTEGER NOT NULL, entity SMALLINT NOT NULL, eminx FLOAT(64) NOT NULL, eminy FLOAT(64) NOT NULL, emaxx FLOAT(64) NOT NULL, emaxy FLOAT(64) NOT NULL, eminz FLOAT(64) NULL, emaxz FLOAT(64) NULL, min_measure FLOAT(64) NULL, max_measure FLOAT(64) NULL, area FLOAT(64) NOT NULL, len FLOAT(64) NOT NULL, points LONG RAW)PCTFREE 0 INITRANS 4 END OF STMT PARSE #66:c=0,e=635,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,tim=566762959816 BINDS #66: ===================== PARSING IN CURSOR #69 len=493 dep=1 uid=0 oct=3 lid=0 tim=566762960100 hv=2584065658 ad='342d4f64' select t.ts#,t.file#,t.block#,nvl(t.bobj#,0),nvl(t.tab#,0),t.intcols,nvl(t.clucols,0),t.audit$,t.flags,t.pctfree$,t.pctused$,t.initrans,t.maxtrans,t.rowcnt,t.blkcnt,t.empcnt,t.avgspc,t.chncnt,t.avgrln,t.analyzetime,t.samplesize,t.cols,t.property,nvl(t.degree,1),nvl(t.instances,1),t.avgspc_flb,t.flbcnt,t.kernelcols,nvl(t.trigflag, 0),nvl(t.spare1,0),nvl(t.spare2,0),t.spare4,t.spare6,ts.cachedblk,ts.cachehit,ts.logicalread from tab$ t, tab_stats$ ts where t.obj#= :1 and t.obj# = ts.obj# (+) END OF STMT PARSE #69:c=0,e=40,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=566762960091 BINDS #69: kkscoacd Bind#0 oacdty=02 mxl=22(22) mxlc=00 mal=00 scl=00 pre=00 oacflg=08 fl2=0001 frm=00 csi=00 siz=24 off=0 kxsbbbfp=0a8e607c bln=22 avl=04 flg=05 value=52209 EXEC #69:c=0,e=148,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,tim=566762960494 FETCH #69:c=0,e=175,p=0,cr=5,cu=0,mis=0,r=1,dep=1,og=4,tim=566762960699 STAT #69 id=1 cnt=1 pid=0 pos=1 obj=0 op='NESTED LOOPS OUTER (cr=5 pr=0 pw=0 time=184 us)' STAT #69 id=2 cnt=1 pid=1 pos=1 obj=4 op='TABLE ACCESS CLUSTER TAB$ (cr=4 pr=0 pw=0 time=85 us)' STAT #69 id=3 cnt=1 pid=2 pos=1 obj=3 op='INDEX UNIQUE SCAN I_OBJ# (cr=2 pr=0 pw=0 time=32 us)' STAT #69 id=4 cnt=0 pid=1 pos=2 obj=708 op='TABLE ACCESS BY INDEX ROWID TAB_STATS$ (cr=1 pr=0 pw=0 time=50 us)' STAT #69 id=5 cnt=0 pid=4 pos=1 obj=709 op='INDEX UNIQUE SCAN I_TAB_STATS$_OBJ# (cr=1 pr=0 pw=0 time=22 us)' EXEC #66:c=0,e=1401,p=0,cr=5,cu=0,mis=0,r=0,dep=0,og=1,tim=566762961286 ERROR #66 :err=955 tim=56624315
从最后一行可以看出是执行第66个游标的sql语句所出的错,也就是 CREATE TABLE SDE.F415 (fid INTEGER NOT NULL, numofpts INTEGER NOT NULL, entity SMALLINT NOT NULL, eminx FLOAT(64) NOT NULL, eminy FLOAT(64) NOT NULL, emaxx FLOAT(64) NOT NULL, emaxy FLOAT(64) NOT NULL, eminz FLOAT(64) NULL, emaxz FLOAT(64) NULL, min_measure FLOAT(64) NULL, max_measure FLOAT(64) NULL, area FLOAT(64) NOT NULL, len FLOAT(64) NOT NULL, points LONG RAW)PCTFREE 0 INITRANS 4 这条sql语句,在创建表F415的时候因为该表已经存在,实际上这个表的确是存在,是一个现有FeatureClass的Feature Table表,所以报错. F415表为FeatureClass的Feature Table其中415为该图层的ID号,这个ID号是用sde.layer_id_generator序列生成的,在用户的数据库中这个序列的LAST_NUMBER属性为414,INCREMENT_BY的属性为1, 如果再创建一个新的FeatureClass,它就会创建F(414+1)也就是F415表,但是这个表已经存在,所以出错.
最终使用select sde.layer_id_generator.nextval from dual;将ID手动的增加到指定大小解决问题。
另外:
用ST_GEOMETRY存储没有问题的原因为: ST_GEOMETRY存储是将Business Table和Feature Table放在一个表中,Feature Table原有的记录作为SHAPE字段存储在Business Table中,所以不存在分配LayerID的问题.
最终导致出现这个问题的原因 : 是用户备份或者恢复所导致,用户备份或者恢复的时候只备份了或者只恢复了表,包等对象,没有备份或者恢复sequence对象.
文章来源:http://blog.csdn.net/liufeng1980423/article/details/6067419
0 个评论
相关问题
- 盗版(破解)软件出问题了怎么解决?
- arcgis10.2有时候无法复制粘贴要素
- sketchup模型导入cityengine中部分纹理丢失,怎么解决?
- arcgis10.4 离线部署js api 4.3 版本 无法显示
- 如何使用脚本或其他方法,将图层属性中属性域原值内容替换为属性域描述?
- ArcGIS图例问题
- 网站用arcgis API for JavaScript写好,发布网站之后,别人访问无法加载地图?
- arcgis datastore安装后无法访问配置页面
- 网络分析中用路构建网络数据集的问题
- 地图服务发布成功,但无法启动服务
- 刚部署好的arcgis api4.3,测试时出现左上角的放大缩小样式出现问题?