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

一、指定空间数据对象的备份和恢复

  这种方式主要用于备份指定的空间数据对象,比如某个图层和要素类、其中的某些满足特定条件的记录、甚至特定的版本。实现这种备份方式的方法主要是利用ArcSDE提供的管理工具:sdeexportsdeimport命令。它们的位置在%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中空间数据的备份与恢复的更多相关文章

  1. ArcSDE中Compress与Compact的区别

    原文 ArcSDE中Compress与Compact的区别 附件一”为两种数据库需要的管理工作.      与所表示的含义与操作是不同的.     对于来说,Compressing与Smart Dat ...

  2. WebGIS开源方案中空间数据的入库、编辑、发布的操作流程

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 本开源方案的构架是:geoserver(服务器)+tomca ...

  3. Oracle function real_st_astext,解决ArcSDE中st_astext函数返回字符串结构异常问题

    项目过程中发现在Oracle中调用ArcSDE的st_astext函数返回ST_Geometry类型字段的WKT文本有时空间类型前缀没有返回,例如一个点的经度为113.4,纬度为30.6,调用st_a ...

  4. MongoDB中空间数据的存储和操作

    本文使用官方C# Driver,实现在MongoDB中存储,查询空间数据(矢量) 空间数据的存储 本例中,从一个矢量文件(shapefile格式)中读取矢量要素空间信息以及属性表,并写入到MongoD ...

  5. Linux中SVN的备份与恢复

    linux中SVN备份有三种方式 1.svnadmin dump 是官方推荐的备份方式,优点是比较灵活,可以全量备份也可以增量备份,并提供版本恢复机制. 缺点是版本数过大,增长到数万以上,那么dump ...

  6. GIS中空间数据和非空间数据

  7. Oracle下的ArcSDE创建的空间数据库的备份与恢复

    对Oracle下ArcSDE创建的空间数据库, 整体备份.恢复或迁移. 一.imp和exp命令方式 1.1 数据库完整备份 检查数据库字符集是否一致 SQL>select userenv(‘la ...

  8. ArcSDE for Microsoft SQL Server Post Installation图解(转)

    ArcSDE for Microsoft SQL Server Post Installation图解 使用ArcSDE作为空间数据引擎时,经常遇到服务无法启动的情况(启动服务时提示:本地计算机上的a ...

  9. ArcServer,ArcSDE,ArcIMS,ArcEngine

    ArcServer,ArcSDE,ArcIMS,ArcEngine是ESRI的四种产品ArcGIS Server 与 ArcIMS功能相似,是将地图发布成服务供调用的ArcSDE 是空间数据引擎,是将 ...

随机推荐

  1. JS --- 延迟加载的几种方式

    标题:JS延迟加载,也就是等页面加载完成之后再加载 JavaScript 文件.  JS延迟加载有助于提高页面加载速度. 1. defer 属性 HTML 4.01 为 <script>标 ...

  2. 具有可视化的功能的一款开源软件Gource

    今天为大家介绍一个非常有趣儿的开源软件,Gource可以将代码版本控制系统里面的日志全部可视化,也就是说可以看见每个成员在系统里面提交代码的行为,Gource目前支持git,hg,svn. 650) ...

  3. 针对CDP协议攻击分析及安全防护

    针对CDP协议攻击分析及安全防护 熟悉Cisco的朋友都知道CDP协议是思科公司独特的发现协议,在思科公司出产的所有路由器和交换机里面都能运行此协议,一台运行C D P的路由器或交换机能够得知与它直接 ...

  4. 网管软件 LANDesk的配置(视频配截图)

    网管软件 LANDesk Server Manager 8.5的配置截图         LANDesk桌面管理套件是应用于大中型企业环境下的计算机管理的最佳解决方案.它提供了从计算机资产管理.软件分 ...

  5. Android RecyclerView滑动监听,判断是否滑动到了最后一个item

    项目中的需求,RecyclerView横向滑动列表,要有加载更多的功能,给RecyclerView设置一个滑动监听,在onScrolled方法中判断一下滑动方向,然后在onScrollStateCha ...

  6. 微信小程序,前端大梦想(二)

    微信小程序之数据缓存实例-备忘录     数据缓存在移动端的使用是非常重要的,既可以减少用户的流量支出又可以提高程序的访问速度和用户体验.每个微信小程序都可以有自己的本地缓存,可以通过 wx.setS ...

  7. 【习题 8-12 UVA - 1153】Keep the Customer Satisfied

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 结束时间比较早的,就早点开始做. 所以,将n件事情,按照结束时间升序排. 然后对于第i件事情. 尽量把它往左排. 即t+1..t+a ...

  8. 【JEECG技术博文】JEECG 简单实例解说权限控制

    JEECG简单实例解说权限控制 请大家点击这里为我们投票.2015博客之星.很多其他分享敬请期待 博文地址:http://blog.itpub.net/30066956/viewspace-18687 ...

  9. softInputMode- 软件盘的设置

    今天遇到一个问题,就是软件盘弹出来以后,会把之前的布局界面整个的挤到屏幕的外面,而且按下返回建以后,这个软件盘占据的空间会留下一个黑色的背景.在网上查找了很多的方法,刚开始都是说,如下方法 <a ...

  10. jQuery UI:邮箱自动补全函数

    $('#email').autocomplete({ delay:0, autoFocus:true, source:function(request,response){ var hosts = [ ...