天天看點

ArcSDE工作機制

SDE工作機制

2007-09-25 18:03:01

ArcSDE屬于中間件技術,其本身并不能夠存儲空間資料,它的作用可以了解為資料庫的“空間擴充”。在基于Oracle的ArcSDE空間資料庫中, ArcSDE儲存了一系列Oracle對象,用于管理空間資訊。這些對象統稱為資料檔案庫(Repository),包含空間資料字典和ArcSDE軟體程式包。ArcSDE需要SDE使用者管理空間資料檔案庫,這類似于Oracle中需要SYS使用者管理資料字典。Oracle的資料字典存儲在SYSTEM 表空間中;相應地,在存儲ArcSDE空間資料檔案庫的時候,也需要使用特定的表空間。通常,為了友善起見,預設使用名稱也是SDE的表空間管理空間資料字典。

ArcSDE 的工作機制中,SDE使用者負責ArcSDE與Oracle的互動,通過維護SDE模式下的空間資料字典以及運作其模式中的程式包,來保證空間資料庫的讀/ 寫一緻性。在ArcSDE服務啟動的過程中,SDE使用者通過Oracle驗證,并且建立和維護一個Oracle會話連接配接,連接配接的程式便是giomgr,即 ArcSDE伺服器管理程序,該程序一直存在,負責監聽使用者連接配接請求,配置設定相應的gsrvr管理程序(見注1),進行空間資料字典的維護。

ArcSDE的安全性

ArcSDE的安全機制完全依賴于Oracle,空間資料庫使用者(包括SDE),需要Oracle的使用者密碼才能夠通路空間資料,ArcSDE本身并不儲存任何認證資訊。

在Oracle中,SDE使用者的最小系統權限設定要求是:

Create procedure / Create table / Create sequence / Create trigger / Create session

由此可見,SDE亦屬于Oracle資料庫中的普通權限使用者。

對于Oracle來說,雖然SDE屬于非DBA使用者,但是在ArcSDE架構中,SDE的地位比較特殊,是ArcSDE管理者。隻有SDE可以完成一些特定的工作:比如啟動/停止ArcSDE服務;終止某些使用者連接配接;壓縮多版本資料庫等。SDE使用者雖然不是一個真正的Oracle DBA使用者,但是在ArcSDE工作過程中,軟體會進行一些特定的對象權限操作。是以,應該将SDE使用者等同于Oracle DBA使用者處理,就像SYS或者SYSTEM一樣,必須嚴格保護其密碼。

在ArcSDE空間資料庫中,從權限管理級别上,可以把使用者分成兩大類:

1、 空間資料庫管理者,隻有并且隻能是SDE

2、 空間資料庫一般使用者,包括建立、浏覽空間資料的除SDE外的其它oracle使用者 使用SDE使用者,強烈推薦遵循兩個原則:

  • SDE使用者不用于加載空間資料
  • SDE存儲資料檔案庫的表空間不用于存放空間資料

SDE使用者的特殊對象權限

SDE 使用者作為Oracle資料庫的一般使用者,可以建立自己的表或者存儲過程;作為ArcSDE空間資料庫管理者,在對象權限設定中,ArcSDE會自動授予 SDE一些對象權限。SDE使用者需要這些對象權限,以保證ArcSDE Geodatabase的完整性。空間資料庫的一般使用者在建立新的Geodatabase對象的時候,ArcSDE将這些建立對象的權限授予SDE使用者。比如ACTC使用者建立一個名稱為Country的Geodatabase的要素類,此時資料庫中同時生成Country(即B表,Business Table)的相應支撐表,即F表(Feature Table)和S表(Spatial Index Table)。這時候,SDE使用者将自動擷取得到Country、F表和S表這幾個表的Select權限。當使用者将Country注冊為版本,此時 ACTC模式下生成記錄編輯資訊的A表(Additions Table)和D表(Deletions Table)。這時候,SDE使用者獲得該A表和D表的Select / Insert / Update / Delete權限。在這些對象權限授予過程中,ACTC使用者并未擷取任何通知資訊。

在ArcGIS Desktop的空間資料庫連接配接中,并沒有展現出來SDE使用者的這些對象權限,如果使用SDE使用者進行空間資料庫連接配接,隻能夠觀察到上例中的 Country表,其它的支撐表都被過濾掉了。如果需要完整檢視SDE使用者被授予的對象權限,可以通過Oracle的 USER_TAB_PRIVS_RECD視圖擷取。

SDE使用者完成哪些特定工作

在空間資料庫中,作為管理者的SDE完成一般使用者不能完成的操作,以下舉例說明:

1、 啟動/停止ArcSDE服務

隻有SDE能夠與Oracle完成互動,啟動或停止ArcSDE的服務。操作為:

sdemon –o start / shutdown (啟動/停止)

這時候需要送出SDE使用者密碼。

2、 終止某個空間使用者連接配接

在空間資料庫連接配接中,有時候出連接配接程序挂起或者非法連接配接的時候,可以使用SDE終止其連接配接。操作為:

首先,從連接配接清單中擷取該連接配接的資訊

sdemon –o info –I users

在擷取到需要終止的連接配接ID後,使用kill指令

sdemon –o kill –t < 連接配接 ID>

<連接配接ID> 完成此項操作需要送出SDE使用者密碼。

3、 壓縮多版本資料庫(Multi-versioned Geodatabase)

在ArcSDE Geodatabase中,随着資料編輯工作的進行,SDE空間資料檔案庫中相應中繼資料表、以及使用者模式中的A表和D表的記錄逐漸增加,會影響空間資料的通路效率,是以經常需要進行資料庫版本的壓縮工作。在确定資料庫不存在任何鎖定後,便可以進行壓縮工作,操作為:

sdeversion –o compress –u sde

完成此項操作需要送出SDE使用者密碼。

作為ArcSDE管理者,SDE還要完成其它一些工作。比如,在控制空間資料的資料段、索引段存儲的時候,SDE使用者可以使用sdedbtune指令來提高資料庫效率。

ArcSDE工作機制

一葉知秋

http://www.3snews.net/?uid-7693-action-spacelist-type-blog-itemtypeid-691