catalog连接数据库与sde权限问题
1、在catalog中sde连接上空间数据库后,能看到很多其他用户的数据
问题在于建立SDE用户的时候赋予了DBA角色和GRANT SELECT ANY TABLE TO "SDE" WITH ADMIN OPTION;,如果把这两项权限撤销,则不会出现以上的问题.
revoke SELECT ANY TABLE from sde;
revoke dba from sde;
查看SDE用户的权限:
select privilege from dba_sys_privs where grantee='SDE'
union
select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='SDE' );
ESRI的工程师安装以后,只有如下15个权限:
1 ADMINISTER DATABASE TRIGGER
2 CREATE CLUSTER
3 CREATE INDEXTYPE
4 CREATE LIBRARY
5 CREATE OPERATOR
6 CREATE PROCEDURE
7 CREATE PUBLIC SYNONYM
8 CREATE SEQUENCE
9 CREATE SESSION
10 CREATE TABLE
11 CREATE TRIGGER
12 CREATE TYPE
13 CREATE VIEW
14 DROP PUBLIC SYNONYM
15 UNLIMITED TABLESPACE
而一般我们自己安装的时候,则权限多了不少。执行一下revoke SELECT ANY TABLE from sde就OK了。
2、修改SDE权限造成无法在ArcMap中绘制图形的解决办法
默认情况下,SDE管理用户的权限是非常大的,所以经常我们会修改SDE用户权限,但因此也会造成一些图形绘制问题,在些进行介绍。
出错类型:
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 );