去除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 运算符连接不存在错误
你们的评论、反馈,及对你们有所用,是我整理材料和博文写作的最大的鼓励和唯一动力。欢迎讨论和关注!
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。