ArcSDE空間資料庫中SDE使用者使用探討

來源:互聯網
上載者:User

轉載自 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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.