在Oracle中创建了空间数据库之后,默认会创建一个SDE用户,如果是直接使用ArcGIS桌面软件中的【CreateEnterpriseGeodatabase】工具创建,那么默认会赋予SDE一个select any table权限,SDE用户有了这个权限,就可以访问其他用户的表,这对于数据管理来说是不安全的。另外,在ArcGIS桌面软件中连接SDE空间库时,由于这个权限的存在,会直接看到其他用户的表,如果表很多,那么需要下来很长才能找到SDE的要素,这对于日常的GIS数据管理来说是非常不方便的,怎么办?一个简单的办法是执行以下两个步骤:
1.用DBA用户登录执行撤销SDE用户的select any table权限:
revoke select any table from sde;
2.在命令窗口执行以下语句:
Exec dbms_utility.compile_schema( 'SDE', compile_all => FALSE );
执行完上述两个步骤就可以了。
可是话有说回来,一般如果是数据库管理规范的话,是数据库管理员先在数据库中创建账号、表空间并赋予所需要的权限,再给使用者去使用数据库。那SDE要在Oracle中创建一个空间库,需要哪些权限?首先需要以下包的权限:
GRANT EXECUTE ON dbms_pipe TO public;