在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;
GRANT EXECUTE ON dbms_lock TO public;
GRANT EXECUTE ON dbms_lob TO public;
GRANT EXECUTE ON dbms_utility TO public;
GRANT EXECUTE ON dbms_sql TO public;
GRANT EXECUTE ON utl_raw TO public;
另外,還需要下表中羅列的權限:

那在建立完SDE庫之後,不同角色的資料庫使用者所需要的權限也不同,具體看下面這個表: