Oracle下的ArcSDE創建的空間數據庫的備份與恢復


 對Oracle下ArcSDE創建的空間數據庫, 整體備份、恢復或遷移。

一、imp和exp命令方式

1.1 數據庫完整備份

檢查數據庫字符集是否一致

SQL>select userenv(‘language’) from dual;

導出源數據庫的SDE表空間

EXP SYSTEM/PASSWORD@SID FULL=Y FILE=D:/SYSTEM.DMP LOG=D:/SYSTEM.LOG

1.2 數據恢復准備

(1)刪除目標數據庫中的sde用戶、及sde表空間

停止ArcSDE服務器中的sde服務,刪除目標數據庫中的SDE_USER用戶(下面行中的代碼為sde)及SDE表空間。

drop tablespace sde including contents and datafiles;  
drop user sde cascade;

 

(2)創建SDE表空間,及SDE_USER用戶

cmd下sysdba連接進入到plsql。使用sql語句建立新的sde用戶及空的表空間,並授權SDE用戶相同的權限。

i)創建表空間
CREATE TABLESPACE "SDE"
LOGGING
DATAFILE 'C:/ORACLE/ORADATA/ORACLE/SDE.ora' SIZE 200M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

ii)創建用戶
CREATE USER "SDE" PROFILE "DEFAULT"
IDENTIFIED BY "SDE" DEFAULT TABLESPACE "SDE"
TEMPORARY TABLESPACE "TEMP"
ACCOUNT UNLOCK;

iii)創建角色
GRANT "DBA" TO "SDE";
GRANT "CONNECT" TO "SDE";
GRANT "RESOURCE" TO "SDE";

iiii)系統權限
GRANT ALTER ANY INDEX TO "SDE" WITH ADMIN OPTION;
GRANT ALTER ANY TABLE TO "SDE" WITH ADMIN OPTION;
GRANT ANALYZE ANY TO "SDE" WITH ADMIN OPTION;
GRANT CREATE ANY INDEX TO "SDE" WITH ADMIN OPTION;
GRANT CREATE ANY PROCEDURE TO "SDE" WITH ADMIN OPTION;
GRANT CREATE ANY SEQUENCE TO "SDE" WITH ADMIN OPTION;
GRANT CREATE ANY TRIGGER TO "SDE" WITH ADMIN OPTION;
GRANT CREATE ANY VIEW TO "SDE" WITH ADMIN OPTION;
GRANT CREATE SESSION TO "SDE" WITH ADMIN OPTION;
GRANT DROP ANY INDEX TO "SDE" WITH ADMIN OPTION;
GRANT DROP ANY TABLE TO "SDE" WITH ADMIN OPTION;
GRANT DROP ANY VIEW TO "SDE" WITH ADMIN OPTION;
GRANT DROP ANY PROCEDURE TO "SDE" WITH ADMIN OPTION;
GRANT DROP ANY SEQUENCE TO "SDE" WITH ADMIN OPTION;
GRANT EXECUTE ANY PROCEDURE TO "SDE" WITH ADMIN OPTION;
GRANT SELECT ANY SEQUENCE TO "SDE" WITH ADMIN OPTION;
GRANT SELECT ANY TABLE TO "SDE" WITH ADMIN OPTION;
GRANT UNLIMITED TABLESPACE TO "SDE" WITH ADMIN OPTION;

1.3 導入SDE和SDEUSER的數據

cmd下連接數據庫,導入數據。注意數據導入的次序,先SDE,后SDEUSER(sde)。

sqlplus /nolog
connect sys/orcl@192.168.110.51/myorcl as sysdba(conn /as sysdba;)
SQLPLUS SYS/SYS@myorcl AS SYSDBA
IMP SYSTEM/PASSWOR@SID FROMUSER=SDE TOUSER=SDE
IMP SYSTEM/PASSWOR@SID FROMUSER=SDEUSER TOUSER=SDEUSER

以上提到的SDE和SDEUSER是不同的用戶,SDE是ArcSDE安裝時的默認用戶,SDEUSER
是指用戶存儲數據的用戶,如果之間使用SDE默認用戶存儲,則省去所以的SDEUSER操作

 

二、 sdeexport和sdeimport命令方式

  這種方式主要用於備份指定的空間數據對象,比如某個圖層和要素類、其中的某些滿足特定條件的記錄、甚至特定的版本。實現這種備份方式的方法主要是利用ArcSDE提供的管理工具:sdeexport和sdeimport命令。它們的位置在%ArcSDEHOME%\bin\中。其中,sdeexport用於將空間數據從ArcSDE Server上備份為單獨的數據文件,而sdeimport用於將經由sdeexport備份的數據文件恢復到ArcSDE Server中。

  這一方式的缺點在於不能一次備份完整的空間數據庫。但是也有個明顯的優點,在於通過sdeexport和sdeimport工具,可以將空間數據在不同的關系型數據庫管理系統(RDBMS)之間進行移植。

2.1 常用的備份方式

與以上三個步驟不同,本方法的數據備份增加了一個元表備份的內容:備份元表、備份數據表;還原元表;還原數據表。

  做SDE庫的遷移或恢復之前,首先要了解SDE做為空間數據庫引擎,它是怎么組織空間數據的,即要知道元表存放的內容和數據表存放的內容。SDE用戶是SDE數據庫邊默認的一個用戶,所有的元表存放在該用戶下面,元表的作用就是存放數據表之間的關系,約7張數據表才能組成一個要素類,它們之間的關系要靠SDE的元表來維護。因此SDE庫的備份就分二個步驟,備份元表,備份數據表。此方法講的是采用SDE自帶的命令sdeimport和sdeexport備份和導入數據表,即方法的優點是可以在不同的數據庫之間進行庫的遷移或用於某個要素類恢復(sdeimport和sdeexport命令詳見SDE自帶的幫助文檔)。

2.1.1 備份元表

  可以采用sdeexmport命令來備份元表,但本方法采用使用ArcCatalog自帶的export工具來備份元表

  連接需要備份的SDE庫,在需要備份的特征數據集或某個連接上點擊右鍵,再點擊export/xml workspace Document 。
  說明:在SDE數據庫連接export/xml workspace Document后的圖中sdeto sy)上點擊右鍵和在特征數據集(如圖中的upmis.規划歷史庫)上點擊右鍵備份的元表是不一樣的。在數據庫連接上點擊右鍵(當然此時連接數據庫的用戶需要具有操作所有數據的權限,比如SDE用戶)備份的是所有的元表信息,而在特征數據集上點擊右鍵,備份的是該特征數據集對應的元表。選擇只備份元表(schema only),選擇備份元數據(SDE中的數據的來源等信息)的話會把元數據的也備份。

2.1.2 備份數據表

備份數據表采用的命令是sdeexport。在cmd里邊執行該命令即可。假如現在我要備份的是upmissde用戶下面的jmd要素類,命令如下:

sdeexport -t jmd -f d:/jmd -u upmissde –p pwd -V sde.default


-t:表名(要素類名),-f(存儲路徑),-u(用戶名),-p(密碼) ,-V(版本名稱)。
當然,如果不是在SDE主機上備份還需要加上-i (端口) ,-s(主機名)這二個參數。
把所有需要備份的要素類都進行備份。

2.1.3 在目標數據庫上還原元表

也可以采用sdeimport命令來完成,本方法中同樣采用ArcCatalog的import工具來還原元表

以某個用戶名(比如說sde)建立SDE數據庫的連接,雙擊連接后在數據庫連接上點擊右擊,選擇import/ xml workspace Document

需要注意的是,以什么用戶登陸,還原的元表記錄的就是哪個用戶的數據表關系。比如,備份時我是使用upmissde備份的dlg特征數據集,還原元表時我是以sde用戶登錄的,那么,還原后會在sde用戶下面出現一個sde.dlg(本來是upmissde.dlg),這就是此方法的特異之處,可以在不同的用戶和不用的SDE版本及不同的數據庫(Oracle ,SqlServer)之間進行數據遷移。

2.1.4 還原數據表

同樣采用的是使用sdeimport命令進行還原,假如現在我要還原剛才備份出來的jmd到sde用戶下面,命令如下:

sdeimport -o append –t jmd -f d:/jmd -u upmissde –pwd –V sde.default

當然,如果不是在SDE主機上備份還需要加上-i (端口) ,-s(主機名)這二個參數。把所有需要備份的要素類都進行備份。
-o的參數選用append的原因是:用ArcCatalog恢復元表的時候,同時會把元表中相關的數據表也創立了,所以-o后面的參數不能再選create了。
如果要素類多備份和恢復麻煩的話,可以寫一個批處理程序,哈哈。

本方法的缺點是不能處理多版本的數據

試驗如下:

C:/>sdeexport -t pl -f d:/nsyncbin/pl -u vertest -p vertest -V version

ArcSDE 9.1 Oracle9i Build 1269 Thu Mar 3 18:54:58 PST 2005
SDEX File Export Administration Utility
—————————————————–
Exporting ArcSDE object to “d:/nsyncbin/pl” in SDEX 9.0 export format …
Exporting table “pl”.
Spatial column “SHAPE”
2 features converted.
2 features exported.

C:/>sdeimport -o append -t pl -V SDE.DEFAULT -f D:/nsyncbin/pl -u vertest -p ver
test

ArcSDE 9.1 Oracle9i Build 1269 Thu Mar 3 18:54:58 PST 2005
SDEX File Import Administration Utility
—————————————————–
Importing SDEX from D:/nsyncbin/pl …
Importing spatial column “SHAPE”
ROWID colume “OBJECTID” exists in export file’s attribute. Drop
2 records read.
2 records stored.

C:/>sdeimport -o append -t pl -V version -f D:/nsyncbin/pl -u vertest -p vertest

ArcSDE 9.1 Oracle9i Build 1269 Thu Mar 3 18:54:58 PST 2005
SDEX File Import Administration Utility
—————————————————–
Importing SDEX from D:/nsyncbin/pl …
Importing spatial column “SHAPE”
ROWID colume “OBJECTID” exists in export file’s attribute. Drop
2 records read.
2 records stored.

C:/>
View Code

 

在導入之前,VERTEST用戶下面,SDE.DEFAULT版本里,PL圖層中有一個要素,OID為1,以VERTEST的身份,新建一個版本 version,並在version版本中新建一個要素,OID為2。此時Default版本中只有一個OID=1的要素,而在version版本中有 OID=1,2二個要素。
然后使用sdeexport命令導出(如上所示)

接着,使用sdeimport把數據導入到VERTEST用戶的default版本中,此時查看default版本中的數據時,有OID=1,3,4三個要素。
接着,再把數據導入到VERTEST用戶的version版本中,此時version版本中的具有OID=1,2,5,6四個要素。
把version版本里邊的數據提交到default版本后,default具有OID=1,2,3,4,5,6六個要素,並且在做沖突檢查的過程中不會報有沖突。這就是說明在使用該命令備份和恢復多版本的SDE數據庫時,也存在局限性。

2.2 備份全部記錄

使用sdeexport命令的缺省方式即可,比如:
(1) 將指定的圖層備份到備份文件
sdeexport -o create -l dcxq,shape -f d:\dcxq.exp -i jerry_oracle -u sde -p sde
就是將名為jerry_oracle的sde服務(ArcSDE for oracle8i)中的指定圖層“dcxq”按缺省方式備份到文件d:\dcxq.exp中。
(2) 利用操作系統命令,拷貝備份文件到目標服務器上
(3) 將備份文件恢復至目標RDBMS中
sdeimport -o create -l newDcxq,shape -f d:\dcxq.exp -i jerry_sqlsvr -u sde -p sde
此操作將備份文件恢復到名為jerry_sqlsvr的sde服務(ArcSDE for SQLServer)中,圖層名為:newDcxq。

2.3 備份部分記錄

sdeexport命令中添加-w參數和一個條件選擇表達式即可,比如:
1將指定圖層中滿足條件的記錄備份到備份文件
sdeexport -o create -l dcxq,shape -f d:\dcxq.exp -w xzqy = '
徐匯區' -i jerry_oracle -u sde -p sde
就是將名為jerry_oraclesde服務(ArcSDE for oracle8i)內的指定圖層“dcxq”中所有"徐匯區"的人口調查小區備份到文件d:\dcxq.exp中。
2利用操作系統命令,拷貝備份文件到目標服務器上
3將備份文件恢復至目標RDBMS
sdeimport -o create -l XHDcxq,shape -f d:\dcxq.exp -i jerry_sqlsvr -u sde -p sde
此操作將備份文件恢復到名為jerry_sqlsvrsde服務(ArcSDE for SQLServer)中,圖層名為:XHDcxq


2.4 備份特定數據版本

sdeexport命令中添加-v參數和一個版本名稱即可,比如:
1將指定圖層的特定版本備份到備份文件
sdeexport -o create -l dcxq,shape -f d:\dcxq.exp -V verAPR -i jerry_oracle -u sde -p sde
此操作將名為jerry_oraclesde服務(ArcSDE for oracle8i)內的指定圖層“dcxq”verAPR版本備份到文件d:\dcxq.exp中。
2利用操作系統命令,拷貝備份文件到目標服務器上
3將備份文件恢復至目標RDBMS
sdeimport -o create -l APRdcxq,shape -f d:\dcxq.exp -i jerry_sqlsvr -u sde -p sde
此操作將備份文件恢復到名為jerry_sqlsvrsde服務(ArcSDE for SQLServer)中,圖層名為:APRDcxq

三、整體空間數據庫的備份和恢復

ArcSDE空間數據庫的整體備份和恢復,實質上很大程度上是其所在的數據庫或者數據庫對象的備份和恢復問題。當然完整的ArcSDE數據備份應當還包括dbtune.sdegiomgr.defsdbinit.sdeservices.sde等文件。

數據庫的備份和恢復有很多種類。在不同的數據庫管理系統中,更是千差萬別。總體上,大都可以分為靜態轉儲和動態轉儲兩個類型。靜態轉儲是在系統中無事務處理時進行的轉儲操作,因而這種方式得到的一定是一個數據一致性的副本。靜態轉儲的優點是操作簡單,保證數據一致性,但是缺點也很明顯,轉儲操作必須等待用戶事務結束才能進行,而新的事務必須等待轉儲操作結束才能執行,因此會降低數據庫的可用性。動態轉儲是指轉儲操作與用戶事務並發進行,轉儲期間允許數據庫進行存取和修改操作,它不必等待所有運行的事務結束,也不會影響新事務的運行,但是無法保證副本中的數據正確、有效、完整。所以在動態轉儲期間,往往會建立日志文件。后備文件加上日志文件就可以把數據庫恢復到正確的狀態。

 
oracle數據庫
1兩種歸檔模式(archive mode
oracle
有兩中歸檔模式:NO ARCHIVELOGARCHIVELOG。在NO ARCHIVELOG模式(該模式為缺省模式)下的數據庫操作不歸檔在線日志重做文件。當存儲介質損壞時,NO ARCHIVELOG模式的數據庫只能恢復到上一次的備份點上。ARCHIVELOG模式的數據庫可以通過上一次的備份和歸檔日志重做文件相結合的方式,恢復到介質損壞之前的點上。
NO ARCHIVELOG模式創建的Oracle數據庫可以切換至ARCHIVELOG模式。
2多種備份與恢復方式
oracle
中的數據備份和恢復方式包括:脫機備份與恢復、邏輯備份與恢復、熱備份與恢復。
*
脫機備份與恢復:脫機備份是一種靜態轉儲技術,備份在數據庫關閉、不工作的狀態下進行。脫機備份包括兩種實現方式:第一種是使用Oracle提供的工具Backup/Recover;第二種是利用操作系統的復制功能,復制數據文件,即:冷備份
*
邏輯備份與恢復:邏輯備份與恢復是指將數據庫、用戶和表等對象的內容整個轉出到一個二進制文件,然后在需要的時候通過轉入恢復到原來的形式。這種方式可以備份整個數據庫,指定用戶和指定表的內容。
*
熱備份與恢復:脫機備份和邏輯備份通常是用戶不訪問數據庫時的靜態備份操作。這些備份只保證數據備份前的一致性和完整性,不保證備份期間的數據一致性。為了保證數據的即時一致性,在備份數據的同時還需要備份日志文件。數據庫運行在ARCHIVELOG方式下,同時作數據和日志文件的備份稱為熱備份
3實現步驟
選擇使用何種備份方式,由具體的數據備份需求所決定。具體的Oracle數據庫備份實現步驟需要參考Oracle相關文檔,比如《Oracle8 Backup and Recovery Guide》。本實例采用Oracle中的邏輯備份,使用了expimp工具,以sde用戶方式備份和恢復整體空間數據。
*
備份數據庫:使用Oracle中的exp命令,以sde用戶方式備份所有相關數據。
*
恢復數據庫:使用Oracle中的imp命令,以sde用戶方式恢復后備數據文件。
*
恢復ArcSDE系統文件:如果有必要,在恢復oracle數據之后,需要恢復安裝ArcSDE的程序文件;另外還需要從備份機器上恢復dbtunegiomgr.defsdbinit.sde,和services.sde文件。

 

 

 

 

 

 

 

 

 

 

參考文章

Oracle+sde數據備份、恢復

SDE數據庫的恢復與備份,共三種方法

 ArcSDE中空間數據的備份與恢復

 

 

備份部分記錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM