去除ArcMap連線空間資料庫中多餘的屬性表
阿新 • • 發佈:2018-12-10
這個操作目前可能不具有可行性,但是為了完整性還是在下面講一下吧。如有興趣的小夥伴,可以按照下面的操作方式去嘗試。
一、需求
去除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 運算子連線不存在錯誤