齊志飛,陸培
(南通市測繪院有限公司,江蘇南通 226006)
基于Oracle數據泵的多版本Geodatabase備份遷移
齊志飛?,陸培
(南通市測繪院有限公司,江蘇南通 226006)
討論了一種Oracle環境下空間數據庫的邏輯備份方式。對于已注冊版本和啟用歸檔機制的多用戶Geodatabase,利用Oracle的數據泵實現了包括歷史數據的完整備份與遷移,并給出了較為詳細的步驟和注意要點。
Oracle數據泵;備份遷移;Geodatabase;多版本
空間數據庫的備份與遷移是建設地理信息系統的現實需求。備份增強了空間數據庫的存儲安全性;而遷移則可以理解為數據庫備份集的異地恢復,既是存儲安全的一個環節,同時也了體現了空間數據庫的可移植性。以Oracle等數據庫為存儲載體的ArcGIS Enterprise Geodatabase支持多用戶特性,還支持版本、歸檔等歷史數據的存儲[1]。對于多用戶、多版本的空間數據庫,完整備份遷移的需求顯得更為迫切。
數據庫備份有物理備份和邏輯備份方式。Oracle物理備份操作復雜,并且對原數據庫主機和目標數據庫主機的存儲一致性要求極高。邏輯備份的抽象層次高于物理備份,屏蔽了原數據庫和目標數據庫之間的物理存儲的差異性。
對于Geodatabase來說,還支持從更高層次的GIS邏輯模型的導出備份[2]。但是導出Geodatabase只能備份和遷移要素類在某一時刻的狀況,多版本數據不能原封不動地完整遷移,只能每個版本導出一份物理副本。版本之間的繼承、分支關系將丟失,記錄每個要素的創建、修改、刪除的完整生命周期的歸檔信息也將流失。如果采用異構方式導出(如導出為File Geodatabase),則幾何對象的存儲選項也將丟失。
Oracle數據庫支持數據泵(Oracle Data Dump)、RMAN等方式備份。Oracle數據泵是由EXPDP和IMPDP組成的導入導出命令組合。由EXPDP進行導出備份,由IMPDP進行導入遷移。IMPDP/EXPDP是用來取代早期IMP/EXP的備份工具,IMPDP/EXPDP較后者速度更快[3]。
相對于RMAN方式的遷移備份,EXPDP邏輯備份不需要在物理上關注數據庫實例、控制文件、日志模式等。使用Oracle數據泵,可以在Linux和Windows之間跨操作系統進行數據庫備份遷移。
基于Oracle數據泵進行備份遷移,能夠完整保留版本之間的繼承關系;Enterprise Geodatabase的A表、D表以及啟用歸檔后的H表被完整遷移;空間幾何字段的存儲選項(如SDO_Geometry)得以延續。
4.1 導出前的準備工作
Oracle 11g R2默認對空表將不建立存儲段,EXP命令對未建立存儲段的表默認不導出,EXPDP命令可以導出未建立存儲段的表,但在IMPDP命令導入時報錯中斷。為解決空表的存儲段問題,可以先查詢行數為0的表,然后依次為空表分配存儲段。
但此后若再建立新表,Oracle根據默認選項仍不建立存儲段。為使空表默認建立存儲段,需要修改Oracle例程的deferred_segment_creation參數。將其初始值true改為false并保存到配置文件中,重啟數據庫實例生效。
無存儲段的空表處理過程如圖1所示。

圖1 處理未建立存儲段的空表
4.2SDE表空間必須導出
ArcGIS Enterprise Geodatabase支持將不同專題的要素類存儲在不同的表空間(如本文的示例中,地形圖存儲在SDE表空間,管線存儲在GX表空間),這是滿足空間數據管理需求的必要機制。但要素類無論存儲在那個表空間,都依賴于建立Enterprise Geodatabase時的初始SDE表空間。
由于要素類、表、幾何字段等都在SDE用戶的默認創建的SDE系統表(如GDB_ITEMS、GEOMETRY_ COLUMNS、TABLE_REGISTRY表)中進行了注冊[4],并且存儲在SDE表空間(如SDE_ARCHIVE等表)中還存儲了要素歸檔等注冊信息,因此SDE表空間必須導出一同遷移。
4.3數據泵導出
(1)創建目錄,這是IMPDP/EXPDP命令參數的要求,用于指定存放備份集文件的目錄。
(2)IMPDP導出,需要給出用戶名與口令等連接信息、用戶模式、導出的備份集文件名等。
多用戶模式導出的過程如圖2所示。

圖2 數據泵多用戶模式導出
4.4基于Windows腳本的自動導出備份
用BAT文件將命令行進行批處理化,將會簡化備份操作。而利用Windows操作系統設置為計劃任務,則可以減輕數據庫管理員的周期性手工操作。為了對備份集進行管理,可以在批處理腳本中對備份文件進行按日期命名編號。BAT文件內容如圖3所示。

圖3 批處理導出備份集并格式化文件名
5.1創建Enterprise Geodatabase
ArcToolbox中的“創建企業級地理數據庫”工具支持采用ArcSDE直連方式來進行目標空間數據庫的初始化,該過程中創建了SDE用戶和表空間。為此Arc-GIS Desktop客戶端需要安裝Oracle Client的32位版本,需要具有Oracle的sysdba權限的用戶連接,需要給出ArcGIS Server的許可文件;這一步是必要的,而直接在目標數據庫上手工創建SDE用戶和表空間,在后續的數據庫對象重編譯步驟中將被阻止。
5.2表空間準備工作
(1)清理SDE表空間
使用SQL語句將SDE用戶的所有數據庫對象清除(DROP),以便完整導入原數據庫的SDE系統表和GIS用戶創建的要素類等內容。
(2)SDE表空間擴容
由于默認創建的SDE表空間的數據文件只有400M,可能遠遠小于空間數據庫的實際存儲需求。因此需要為SDE表空間擴大存儲容量并按需自增。需要注意的是ArcCatalog默認創建的SDE表空間和Oracle的系統數據文件并不在同一目錄下,具體可以通過查詢Oracle的V$DATAFILE視圖來確定。
(3)創建GX表空間及SDE、GX臨時表空間
Oracle在建立索引、查詢排序等過程中需要使用臨時表空間。對于空間數據而言,為用戶建立單獨的臨時表空間是有意義的。
表空間的準備過程如圖4、圖5所示。

圖4 清空SDE表空間并設為自動擴容

圖5 創建GX表空間及SDE、GX臨時表空間
5.3用戶授權
創建SDE、GX用戶,并為之指定表空間和專門建立的臨時表空間,然后授予必要的數據庫權限。5.4 數據泵導入
(1)準備導入目錄和備份文件
與EXPDP命令類似,也需要在目標數據庫上建立目錄,對應存放備份集文件的目錄。
(2)IMPDP導入
需要為不同的用戶分別導入,先導入SDE用戶。IMPDP支持一條命令導入多個用戶模式(即SCHEMAS=SDE,GX)。但是根據實驗結果,如果采用了Oracle Spatial的SDO_GEOMETRY作為存儲選項,同時導入多個用戶模式會導致在Oracle Spatial的空間元數據表SDO_GEOM_METADATA_TABLE[5]中無法登記要素類。
數據泵多用戶模式導入過程如圖6所示。

圖6 數據泵多用戶模式依次導入
5.5數據庫對象重編譯
導入完成后,部分數據庫對象的可能處于不可用的狀態,應對SDE和GX用戶的各類對象重編譯。具體應重編譯:數據類型(TYPE)、包(PACKAGE)、函數(FUNCTION)、觸發器(TRIGGER)、存儲過程(PROCEDURE)、視圖(VIEW)等。由于數據庫對象可能數量眾多,推薦使用PL/SQL Developer環境,以利用其Shift鍵多選功能實現批量重編譯。
本文所述的方法已在實際項目中得到應用。應用環境中的數據情況為,原數據庫包含1個SDE用戶和1個非SDE用戶(GREEN)。原數據庫和目標數據庫環境均為Oracle 11g R2及Client工具,ArcGIS版本為10.2,ArcSDE連接類型為無服務的直連方式。原數據庫的操作系統為Windows 7 Ultimate SP1(64位),目標數據庫的操作系統為Windows Server 2008 R2 Enterprise SP1(64位)。
6.1要素類及版本遷移情況
在遷移后的目標主機上用ArcCatalog建立并展開Oracle數據庫連接,顯示出目標數據庫完整遷移了原數據庫的各數據集、要素類等邏輯對象。在數據庫連接上鼠標右擊并選擇“管理”菜單項下的“管理地理數據庫”,能夠查看到被遷移的Geodatabase的各版本及其繼承關系,并可列出歸檔機制下在原數據庫中已創建的歷史標記點,如圖7、圖8所示。

圖7 原數據庫的數據集及其歷史版本標記

圖8 遷移后數據庫的數據集及其歷史版本標記
6.2多用戶遷移的數據可用性
以ArcMap可加載展示遷移后的SDE用戶和非SDE用戶的點、線、面、注記要素類,如圖9、圖10所示。
6.3要素類的歷史回溯可用性
在ArcMap圖層內容列表中右擊數據集,選擇“切換版本”則可對版本、歸檔等歷史數據進行圖形化瀏覽,圖11、圖12給出了遷移后的數據庫與原數據庫在要素類回溯到同一歷史時刻的相同效果。

圖9 遷移后SDE用戶的要素類加載

圖10 遷移后非SDE用戶的要素類加載

圖11 原數據庫的要素類歷史回溯

圖12 遷移后數據庫的要素類歷史回溯
本文基于Oracle數據泵對Geodatabase的進行了邏輯備份并遷移成功,對于多用戶數據庫和啟用了注冊版本以及歸檔機制的Geodatabase,也能完整保留其歷史數據及編輯更新過程。實踐表明遷移后的空間數據庫在邏輯結構上與原數據庫相同,對要素類訪問、版本標記、回溯到歷史的功能應用與原數據庫完全一致。
[1] 李娜,魏瑞娟,崔洪濤等.基于ArcGIS Engine的SDE數據庫版本管理及歷史歸檔的研究與實現[J].測繪與空間地理信息,2012,35(3):163~167.
[2] 李少華.企業級GIS設計管理優化策略[M].北京:電子工業出版社,2014:217~218.
[3] 王東明,李星海,王海鳳等.Oracle 11g管理備份恢復從入門到精通[M].北京:中國水利水電出版社,2008:489~490.
[4] 劉仁義,劉南.ArcGIS開發寶典——從入門到精通[M].北京:科學出版社,2006:265~266.
[5] Ravi Kothuri,Albert Godfrind,Euro Beinat.Pro Oracle Spatial for Oracle Database 11g[M].New York:Apress,2007: 45~50.
Backup and Migration for Versioned Geodatabase Based on Oracle Data Dump
Qi Zhifei,Lu Pei
(Nantong Surveying&Mapping Institute Co.,Ltd,Nantong 226006,China)
This paper discusses a logical backup method of spatial database on oracle.For the multi-user versioned and archiving Geodatabase,the oracle data pump is used to realize fully backup and migration with historical data.The Paper details the steps and attention points for operation.
oracle data pump;backup and migration;geodatabase;versioned
1672-8262(2016)01-117-05
P208.1
B
?2015—09—23
齊志飛(1983—),男,系統分析師,主要從事GIS應用和系統開發。