`
flyingis
  • 浏览: 297663 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ArcSDE 中空间数据的备份与恢复 [转载]

阅读更多

原文链接:http://www.gis8.net/Article/arcgis/200611/362.htm

随着GIS应用系统在复杂性、集成性、并发性等方面的要求不断增加,系统所需的空间数据量在急剧地增长,同时用户对空间数据并发访问的需求也越来越突出。以传统的文件形式存储和表示空间数据的方法显然已经无法满足这些需求。由于ArcSDE本身所具有的海量数据存储、多用户并发访问、版本管理、长事务处理等强大优势,在GIS应用系统中引入ArcSDE作为空间数据存储和管理引擎,变得越来越普遍。ArcSDE作为空间数据库引擎,在ArcGIS 8.1系列软件中属于服务器端的产品,在整个产品框架中,处于数据中心的重要地位,它利用Oracle、DB2、SQL Server、Informix等关系型数据库在数据存储、数据完整性等方面的先进技术手段,将海量空间数据(包括矢量数据和栅格数据)有机地组织和管理起来,通过其内部异步缓冲、空间索引等先进的机制,提供对空间数据的多用户高效并发访问。

除了存储空间数据并提供访问,对于空间数据的备份和恢复,是空间数据管理中最重要的工作环节之一,也是保障空间数据安全的重要方式。首先,空间数据本身在应用过程中不断地被更新变动,所以经常会需要备份不同时期,不同的空间数据版本;第二,存储介质的意外损坏会导致严重的空间数据丢失,因此需要定期对空间数据对象的整体进行完全备份;第三,有时出于调整的必要,需要在不同服务器、甚至不同数据库管理系统之间进行空间数据的移植和转换。

在采用文件形式空间数据的时代,空间数据的备份仅仅是操作系统中的文件拷贝、备份和归档的过程;而空间数据的恢复也不过是复制、覆盖的操作;在基于ArcSDE和关系型数据库的空间数据库时代,空间数据的备份更多的依赖于关系型数据库的备份和恢复技术,当然也不能缺少ArcSDE所提供的备份工具。按照备份的方式和对象,ArcSDE中空间数据的备份和恢复可以分为如下两类:指定空间数据对象的备份恢复,和整体空间数据库的备份恢复。

一、 指定空间数据对象的备份和恢复
这种方式主要用于备份指定的空间数据对象,比如某个图层和要素类、其中的某些满足特定条件的记录、甚至特定的版本。实现这种备份方式的方法主要是利用ArcSDE提供的管理工具:sdeexport和sdeimport命令。它们的位置在%ArcSDEHOME%\bin\中。其中,sdeexport用于将空间数据从ArcSDE Server上备份为单独的数据文件,而sdeimport用于将经由sdeexport备份的数据文件恢复到ArcSDE Server中。

这一方式的缺点在于不能一次备份完整的空间数据库。但是也有个明显的优点,在于通过sdeexport和sdeimport工具,可以将空间数据在不同的关系型数据库管理系统(RDBMS)之间进行移植。

1. 备份全部记录
使用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. 备份部分记录
sdeexport命令中添加-w参数和一个条件选择表达式即可,比如:
(1) 将指定图层中满足条件的记录备份到备份文件
sdeexport -o create -l dcxq,shape -f d:\dcxq.exp -w xzqy = '徐汇区' -i jerry_oracle -u sde -p sde
就是将名为jerry_oracle的sde服务(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_sqlsvr的sde服务(ArcSDE for SQLServer)中,图层名为:XHDcxq。

3. 备份特定数据版本
sdeexport命令中添加-v参数和一个版本名称即可,比如:
(1) 将指定图层的特定版本备份到备份文件
sdeexport -o create -l dcxq,shape -f d:\dcxq.exp -V verAPR -i jerry_oracle -u sde -p sde
此操作将名为jerry_oracle的sde服务(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_sqlsvr的sde服务(ArcSDE for SQLServer)中,图层名为:APRDcxq。

二、 整体空间数据库的备份和恢复
ArcSDE空间数据库的整体备份和恢复,实质上很大程度上是其所在的数据库或者数据库对象的备份和恢复问题。当然完整的ArcSDE数据备份应当还包括dbtune.sde,giomgr.defs,dbinit.sde和services.sde等文件。

数据库的备份和恢复有很多种类。在不同的数据库管理系统中,更是千差万别。总体上,大都可以分为静态转储和动态转储两个类型。静态转储是在系统中无事务处理时进行的转储操作,因而这种方式得到的一定是一个数据一致性的副本。静态转储的优点是操作简单,保证数据一致性,但是缺点也很明显,转储操作必须等待用户事务结束才能进行,而新的事务必须等待转储操作结束才能执行,因此会降低数据库的可用性。动态转储是指转储操作与用户事务并发进行,转储期间允许数据库进行存取和修改操作,它不必等待所有运行的事务结束,也不会影响新事务的运行,但是无法保证副本中的数据正确、有效、完整。所以在动态转储期间,往往会建立日志文件。后备文件加上日志文件就可以把数据库恢复到正确的状态。

1. Oracle数据库
(1) 两种归档模式(archive mode)
Oracle有两中归档模式:NO ARCHIVELOG和ARCHIVELOG。在NO ARCHIVELOG模式(该模式为缺省模式)下的数据库操作不归档在线日志重做文件。当存储介质损坏时,NO ARCHIVELOG模式的数据库只能恢复到上一次的备份点上。ARCHIVELOG模式的数据库可以通过上一次的备份和归档日志重做文件相结合的方式,恢复到介质损坏之前的点上。
以NO ARCHIVELOG模式创建的Oracle数据库可以切换至ARCHIVELOG模式。
(2) 多种备份与恢复方式
Oracle中的数据备份和恢复方式包括:脱机备份与恢复、逻辑备份与恢复、热备份与恢复。
* 脱机备份与恢复:脱机备份是一种静态转储技术,备份在数据库关闭、不工作的状态下进行。脱机备份包括两种实现方式:第一种是使用Oracle提供的工具Backup/Recover;第二种是利用操作系统的复制功能,复制数据文件,即:冷备份。
* 逻辑备份与恢复:逻辑备份与恢复是指将数据库、用户和表等对象的内容整个转出到一个二进制文件,然后在需要的时候通过转入恢复到原来的形式。这种方式可以备份整个数据库,指定用户和指定表的内容。
* 热备份与恢复:脱机备份和逻辑备份通常是用户不访问数据库时的静态备份操作。这些备份只保证数据备份前的一致性和完整性,不保证备份期间的数据一致性。为了保证数据的即时一致性,在备份数据的同时还需要备份日志文件。数据库运行在ARCHIVELOG方式下,同时作数据和日志文件的备份称为热备份。
(3) 实现步骤
选择使用何种备份方式,由具体的数据备份需求所决定。具体的Oracle数据库备份实现步骤需要参考Oracle相关文档,比如《Oracle8 Backup and Recovery Guide》。本实例采用Oracle中的逻辑备份,使用了exp和imp工具,以sde用户方式备份和恢复整体空间数据。
* 备份数据库:使用Oracle中的exp命令,以sde用户方式备份所有相关数据。
* 恢复数据库:使用Oracle中的imp命令,以sde用户方式恢复后备数据文件。
* 恢复ArcSDE系统文件:如果有必要,在恢复oracle数据之后,需要恢复安装ArcSDE的程序文件;另外还需要从备份机器上恢复dbtune,giomgr.defs,dbinit.sde,和services.sde文件。

2. SQLServer数据库
(1)备份和恢复方式
在MS SQL Server中,ArcSDE利用单独的用户数据库SDE(缺省名)来管理和组织空间数据。
SQLServer不仅可以在同一台服务器上备份和恢复数据库,还允许通过备份和恢复的方式在不同服务器之间很轻松地移动数据库。MS SQL Server也允许将一个服务器上的数据库备份恢复到另外一台服务器上。
如果要将数据库备份恢复到另外一台服务器上,两台服务器上的code page和排序方式必须相同。比如,不能把用二进制排序方式(Binary Sort Order,BSO)建立的数据库恢复到一个配置为缺省排序方式(字典顺序,dictionary)的服务器上。当然,可以通过在master数据库中运行'sp_helpsort'存储过程设定服务器的排序方式。
数据库的备份操作同时备份了数据库的系统表,包括sysusers。当在不同的服务器上执行备份和恢复操作时,备份数据库中所包含的用户可能会和新的服务器上master数据库中sysxlogins表中包含的用户不同。这样的话,就无法登录到恢复后的数据库,知道更正并统一master数据库中sysxlogins表和恢复数据库中sysusers表的登录映射。要使上述两个表同步,需要运行"sp_change_users_login"存储过程。
(2)实现步骤
* 备份SDE数据库到备份文件:既可以使用T-SQL中的BACKUP语句,也可以使用企业管理器中的备份工具向导来完成SDE和其他空间数据库的备份。
* 将备份文件复制到目标服务器
* 将备份文件恢复到目标服务器:可以使用企业管理器中的恢复还原工具向导来完成SDE和其他空间数据库的恢复。
* 统一SDE用户登录映射
A. 两个服务器上都有SDE用户,但是两者的SDE用户具有不同的标识
当恢复SDE数据库至新的服务器后,sde数据库中的sde用户的SID与master数据库中dbo.sysxlogins表中的sde登录名的SID不同,比如:
Use sde
go
Select SID from sysusers where name = 'sde'
Use master
go
select SID from sysxlogins where name = 'sde'

SID
-----------------------------------------------------------
0x76695419BFAED41184FD00C04F8D0451
(1 row(s) affected)

SID
-----------------------------------------------------------
0xEDDFCA8E56B0D411850000C04F8D0451
(1 row(s) affected)
此时必须统一两个表中sde用户的SID标识,运行"sp_change_users_login" 存储过程,示例如下:
    Use sde
go
sp_change_users_login 'update_one','sde','sde'
运行上述的SID查询来验证修改结果:
0xEDDFCA8E56B0D411850000C04F8D0451
0xEDDFCA8E56B0D411850000C04F8D0451
可以看出修改后两个表中sde用户的SID标识完全一致,此时就可以启动ArcSDE for SQLServer的服务来使用了。
B. 目标服务器上还没有SDE用户
这种情形是指目标服务器上还没有sde登录用户,此时执行上述的SID查询,结果如下:
Use sde
go
Select SID from sysusers where name = 'sde'
Use master
go
select SID from sysxlogins where name = 'sde'
SID
-----------------------------------------------------------
0x76695419BFAED41184FD00C04F8D0451
(1 row(s) affected)
SID
-----------------------------------------------------------
(0 row(s) affected)
要矫正这种情况,需要首先到目标服务器中添加sde登录用户,但是不要将sde数据库的权限授予sde用户。添加登录用户,使用"sp_addlogin"存储过程和在企业管理器中使用登录管理工具。比如:
sp_addlogin 'sde','go','sde'
然后需要运行 "sp_change_users_login" 存储过程来统一master内dbo.sysxlogins表和恢复后用户数据库内sysusers表中的sde用户SID标识。
use sde
go
sp_change_users_login 'update_one','sde','sde'
最后,可以执行SID查询来验证SID的一致性:
Use sde
Go
Select SID from sysusers where name = 'sde'
Use master
Go
select SID from sysxlogins where name = 'sde'
SID
-----------------------------------------------------------
0xF6DFCA8E56B0D411850000C04F8D0451
(1 row(s) affected)
SID
-----------------------------------------------------------
0xF6DFCA8E56B0D411850000C04F8D0451
(1 row(s) affected)
经过SDE用户的SID的统一之后,就可以启动ArcSDE服务或者使用直接连接(direct connection)方式使用恢复后的空间数据了。

分享到:
评论

相关推荐

    ArcSDE空间数据备份和恢复工具.rar

    《ArcSDE空间数据备份与恢复工具详解》 在GIS(地理信息系统)领域,数据的安全性和完整性至关重要。ArcSDE是Esri公司提供的一种用于管理大型分布式地理数据库的强大工具,它支持多用户环境下对空间数据的高效访问...

    基于Oracle的ArcSDE数据备份与恢复

    ArcSDE与Oracle等关系数据库协同工作,提供了空间数据的存储、查询与管理等功能。鉴于空间数据的重要性以及可能面临的风险(如意外损坏、误操作等),确保数据的安全性和完整性至关重要。 #### ArcSDE与Oracle的...

    基于bat和vbs的Oracle属性数据和ArcSDE空间数据自动备份技术.pdf

    在ArcSDE中,空间数据是与属性数据结合存储的,因此,对ArcSDE空间数据的备份需要考虑其特殊性。 文章提出的备份策略是通过批处理(bat)文件和VBScript(vbs)脚本来实现。批处理文件是Windows操作系统中用来自动...

    基于Oracle的ArcSDE数据备份与恢复.pdf

    【备份与恢复】在ArcSDE管理中,对空间数据进行备份与恢复是至关重要的,这可以防止意外的数据丢失,如用户误操作、硬件故障或存储媒介损坏。备份的目标是确保最小的数据损失,而恢复的目标则是尽快恢复服务。有多种...

    空间数据库的备份与恢复

    SdeExport用于将空间数据备份为二进制文件,而SdeImport则用于将备份的数据恢复到空间数据库中。这些命令的灵活性较高,可以用于备份各种类型的空间对象。 - **Copy和Paste操作**:通过这些基本操作,可以在不同...

    基于Oracle的ArcSDE数据备份与恢复.zip

    基于Oracle的ArcSDE数据备份与恢复

    Sed数据的备份与恢复

    空间数据的备份与恢复可以分为两类:指定空间数据对象的备份恢复,和整体空间数据库的备份恢复。指定空间数据对象的备份恢复主要用于备份指定的空间数据对象,例如某个图层和要素类、其中的某些满足特定条件的记录、...

    Oracle+sde数据备份、恢复

    Oracle+SDE 数据备份和恢复是一个重要的数据库管理任务,从数据库中删除SDE和SDE USER用户、创建新的SDE用户和SDEUSER、系统权限设置、数据备份和恢复都是其中的重要组成部分。 首先,删除SDE和SDE USER用户是必要...

    使用Oracle Spatial对ArcSDE中的SDO_GEOMETRY类型数据进行空间操作

    "使用Oracle Spatial对ArcSDE中的SDO_GEOMETRY类型数据进行空间操作" Oracle Spatial 是 Oracle 数据库中的一个空间数据处理组件,用于存储、管理和操作空间数据。ArcSDE 是一个空间数据引擎,用于存储和管理大规模...

    基于ArcSDE与Oracle9i Spatial的空间数据转换及备份.pdf

    【ArcSDE与Oracle9i Spatial简介】 ArcSDE是一种用于访问和管理存储在关系数据库管理系统(RDBMS)中的大型多用户地理数据库的服务器软件。它是Esri的ArcGIS平台的一部分,也是企业级解决方案的核心组件。ArcSDE的...

    基于ArcSDE的GIS空间数据存储分析

    基于ArcSDE的GIS空间数据存储分析

    空间数据库备份恢复arcgisdb

    #### 空间数据备份恢复的重要性和背景 在地理信息系统(GIS)领域,空间数据是核心资产,其安全性和完整性直接关系到GIS应用的有效性。由于空间数据往往包含大量复杂的空间属性和关联信息,一旦发生数据丢失或损坏...

    Oracle+Spatial与ArcSDE空间数据上载及应用比较.

    ### Oracle Spatial与ArcSDE空间数据上载及应用比较 #### 引言 在地理信息系统(GIS)领域,Oracle Spatial与ArcSDE是目前较为流行的两种利用关系型数据库存储和管理空间数据的商用软件。随着GIS技术的发展,空间...

    基于Oracle和ArcSDE的空间数据访问优化

    在当前的信息时代,空间信息扮演着至关重要的角色,而Oracle数据库和ArcSDE作为地理信息系统(GIS)的核心组件,为管理和优化空间数据提供了强大支持。本文将深入探讨基于Oracle和ArcSDE的空间数据访问优化策略,以...

    oracle数据更新及arcsde空间数据更新.pdf

    在本文档中,我们将介绍如何使用 PL/SQL 语言来更新 Oracle 数据库中的数据,并介绍 ArcSDE 空间数据的更新。 删除用户与表空间 在 Oracle 数据库中,删除用户与表空间是非常重要的操作。删除用户与表空间可以释放...

    基于Oracle数据库与ArcSDE的空间数据存取优化.pdf

    【基于Oracle数据库与ArcSDE的空间数据存取优化】 随着空间信息技术的快速发展,Oracle数据库作为关系型数据库的重要代表,其规模不断扩大,存储空间数据的需求日益增长。为了应对海量空间数据的管理和高效存取,...

    基于ArcSDE的空间数据访问和优化技术.pdf

    在GIS(地理信息系统)应用中,ArcSDE扮演着关键角色,提供海量空间数据的存储、多用户并发访问、版本管理和长事务处理等功能。随着ArcSDE的广泛应用,其性能优化成为了至关重要的课题。本文主要围绕Oracle数据库...

    基于ArcObjects和ArcSDE的地理数据分发的实现

    #### 三、ArcSDE与空间数据管理 ArcSDE是ESRI为解决空间数据的存储和管理问题而设计的空间数据库引擎。它能够在现有的RDBMS上无缝地存储和管理空间数据,如Oracle、SQL Server等,从而实现了空间数据与属性数据在...

Global site tag (gtag.js) - Google Analytics