轉載自 http://blog.csdn.net/sosdsh/archive/2007/03/30/1547231.aspx
ArcSDE空間資料庫中SDE使用者使用探討
ArcSDE作為空白間資料庫解決方案,應用非常廣泛,本短文將嘗試描述SDE的工作機制,簡要說明空間資料
庫中SDE使用者的使用方法。
ArcSDE如何工作
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命令來提高資料庫效率。
注1:這是傳統的ArcSDE應用伺服器串連(Application-server connection)的工作方式,在這種方式中
,ArcSDE伺服器處理序(giomgr)分配名為gsrvr的進程來全面負責客戶機與伺服器的中繼資料通訊。ArcSDE
8.1版本之後,出現新的串連方式,即直接連接方式(Direction-connection),在這種串連方式中,
gsrvr進程功能嵌入到客戶機串連應用程式中,如ArcCatalog或其它ESRI軟體產品。此種方式下,Gsrvr的
功能由用戶端串連應用程式完成。
測試環境:ArcSDE 9.0,Oracle 9.2.0.4.0,Windows NT
參考:
1、 Config_tuning_GD_oracle
2、 Understanding ArcSDE
3、 網站:Support.esri.com
SDE命令使用舉例
1、sdeservice命令
sdeservice命令是ArcSDE眾多命令列中的一個,只能使用於Windows作業系統中。這個命令可以改變SDE用
戶的密碼。ArcSDE是作為背景程式啟動並執行,在Windows作業系統中,所有後台啟動並執行程式都是作為相應的
Windows服務(windows services)而存在的。這些Windows服務的資訊是儲存在Windows作業系統的註冊
表中的。
ArcSDE服務資訊同樣也儲存在Windows註冊表中。必須使用sdeservice命令才能建立支援ArcSDE的註冊表
資訊。這個命令裡提供了ArcSDE服務啟動所需要的資訊(比如說license)以及Windows系統中需要啟動並執行
命令(當ArcSDE服務啟動時,需要啟動並執行程式)。
建立ArcSDE服務的時候,必須指定SDE使用者的密碼。這個密碼是加密儲存在註冊表裡的。有了這個密碼,
系統註冊表中的其它ArcSDE服務資訊可以自動啟動。Giomgr進程以SDE使用者登陸到資料庫中,使用的密碼
便是上面我們提到的儲存在註冊表中的SDE使用者密碼。
有時候,我們可能需要更改ArcSDE服務的某些配置資訊。雖然這些修改可以通過登錄編輯程式來實現,但
使用sdeservice命令來進行註冊表修改是最安全的方法。當然,需要提醒的是,有一些記錄(例如ArcSDE
管理員密碼是加密儲存的)只能通過sdeservice命令來修改。
通常,資料庫管理員要定期修改SDE使用者的密碼。這時僅僅在資料庫中或者Windows作業系統中修改SDE用
戶密碼是無法啟動ArcSDE服務的,還必須在註冊表中修改這個密碼。如果沒有這一步操作,ArcSDE服務肯
定是無法啟動的。要想改變註冊表中的這個密碼,可以使用中給出的sdeservice –o modify命令來
修改。這個命令可以用於修改SDEHOME目錄、SDE使用者、License伺服器和NLS 語言。一旦SDE使用者密碼在數
據庫和註冊表中都經過修改,這時我們便可以啟動ArcSDE服務了。
(圖1)
sdeservice –o modify –r <SDEHOME|SDE_DBA_PASSWORD|LICENSE_SERVER|NLS_LANG>
-p <old_DB_ASMIN_password> -v <new_value> [-i <service>] [-q]
2、sdemon命令
sdemon命令是ArcSDE命令列工具中尤為常用的一個。Sdemon命令通常是在管理ArcSDE服務的時候使用。打
開命令列視窗後,鍵入sdemon命令,然後按斷行符號。這時便可見以下畫面: 圖片 1
與其它的命令列操作相比,sdemon命令列的參數是比較少的。下面分別描述以上幾個sdemon操作的功能:
sdemon –o status 顯示ArcSDE服務的狀態
sdemon –o start 啟動ArcSDE服務
sdemon –o shutdown 關閉ArcSDE服務
sdemon –o pause 暫停ArcSDE服務,禁止新的串連
sdemon –o resume 在暫停後重新允許與ArcSDE服務串連
sdemon –o info 提供ArcSDE服務和當前串連的資訊,其中,users提供了所有使用應用伺服器串連的用
戶的串連資訊;config提供了ArcSDE服務配置的所有資訊;stats顯示當時ArcSDE服務的串連情況;locks
顯示當前所有鎖定的layers、state、table、objects資訊;vars顯示ArcSDE服務所在主機上所有相應的
環境變數的設定
sdemon –o kill -t <{all | pid}> 將與ArcSDE服務的串連斷開,其中,all表示斷開所有的串連;pid
表示將進程號為該ID號的串連斷開
需要指出的是,sdemon命令列只能對應用伺服器串連(三級串連)有監聽作用,因為只有這些串連是由
giomgr進程(ArcSDE伺服器的專用進程)為它們分配指定的gsrvr進程監控的。二級串連(或稱為直接連
接)中,gsrvr進程的功能已經嵌入到用戶端軟體中,ArcSDE服務和這樣的串連沒有直接的互動。這樣的
二級串連可以通過後台資料庫直接管理。
其它常用的sde命令列還有,sdelayer、sdetable、sdeimport等等,具體資訊可以查看ArcSDE協助中的
Administrator Command Reference
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/sosdsh/archive/2007/03/30/1547231.aspx