去除ArcMap连接空间数据库中多余的属性表

 

这个操作目前可能不具有可行性,但是为了完整性还是在下面讲一下吧。如有兴趣的小伙伴,可以按照下面的操作方式去尝试。

一、需求

去除ArcMap连接空间数据库中多余的属性表。

PL/SQL中查询得到的内容

select privilege from dba_sys_privs where grantee = 'SDE'

 

二、解决方案

执行revoke select any table from sde就可以在ArcCatalog中看不到除了SDE以外的表格了。

 

三、由此带来的副作用

但是这样的直接操作可能会引起:打开sde中数据时提示ora-29900运算符连接不存在

SDE.cq:  基础 DBMS 错误 [ORA-29900: 运算符连接不存在

ORA-06540: PL/SQL: 编译错误

ORA-06553: PLS-907: 无法加载库单元 SDE.ST_DOMAIN_OPERATORS (由 SDE.ST_ENVINTERSECTS 引用)

如下图所示:

 

产生原因:

SDE用户在升级数据库后,权限被注销,如:SELECT ANY TABLE权限被取消。

Oracle能够自动标记某些软件包,功能,和触发器无效的基于数据库对象性质的自动验证,但ST_GEOMETRY是基于这些非法对象无法编译因而产生绘制错误。

 

解决办法:

这个问题可以通过重新编译数据包,解决触发,并标记为无效的功能。这可以通过以下SQL命令以SYSDBA用户,重复为每个用户模式数据库执行相同的步骤。

Exec dbms_utility.compile_schema( 'SDE', compile_all => FALSE );

 

 

参考文章

sde执行revoke SELECT ANY TABLE from sde导致报ora-29900 运算符连接不存在错误

修改SDE权限造成无法在ArcMap中绘制图形的解决办法

 

 

posted @ 2018-12-10 22:57  wenglabs  阅读(514)  评论(0编辑  收藏  举报