题外话
以下论述涉及到数据库都以Oracle为例。
一般在使用ArcSDE管理空间数据时,系统会默认的建立一个可扩展的400M的sde.dbf数据库,该数据库存储关于SDE的相关库数据信息。该数据包括了GDB的相关结构表,版本信息、空间数据表、列、投影、SDE参数设置等等。
用户在使用ArcSDE时存放空间数据,建议用户新建一个表空间来存储空间数据,不建议用户把数据都放在SDE表空间中。
1:SDE表空间虽然是可扩展的400M数据库,但是一般空间数据随着日积月累的编辑,都有可能多于400M以上,这样利用oracle自动扩展表空间的功能,必定会消耗资源付出性能不高的代价。(但高级用户可能会修改相关参数)
2:把空间数据和SDE表空间分开存储(最好是分开不同的磁盘),可以防止用户因为误操作损坏SDE库文件数据进而出现一些莫名的未知错误。而且分开存储可以很好的分清楚SDE数据与空间数据。
数据分析
ArcSDE数据包含SDE库数据信息和空间数据信息。所以说在进行ArcSDE备份时就需要备份SDE库数据信息和空间数据信息。其实在用户使用过程中SDE数据库信息用户可以不予理会,只关注自己的空间数据信息。
完全备份恢复方式
预先知识
在备份数据之前,用户如果使用ArcGIS版本机制来管理数据,请首先根据用户自身的情况把子版本的数据协调提交到Default版本中,然后进行Compress功能操作即可。
利用ArcGIS Desktop工具进行备份恢复
利用ArcToolbox工具
利用Copy/Paste方法
以上方法只是对空间数据导出,可以将数据导出成PGDB(数据量2GB内)或者FGDB格式。
利用ArcSDE命令工具进行备份恢复
利用sdeimport/sdeexport方式将要素类、普通表、栅格数据导出成二进制文件
缺点:不能备份完整的空间数据库,只能一次性备份单独制定的图层。
优点:可以将空间数据在不同关系型的数据库进行移植。
--------------------------------命令模板介绍----------------------------------------------------
sdeexport [-o create] -t <table> [-V <version_name>] [-O] [-q]
[-a {all | file=<file_name>}]
-f {<export_file> | -} [-X <volume_size>]
[-r <target_ArcSDE_version_number>]
[-w <"where_clause">] [-i <service>] [-s <server_name>]
[-D <database>] -u <DB_User_name> [-p <DB_User_password>]
sdeexport [-o create] -l <table,column> [-V <version_name>] [-O] [-q]
[-a {all | file=<file_name>}]
-f {<export_file> | -} [-X <volume_size>]
[-r <target_ArcSDE_version_number>]
[-w <"where_clause">] [-i <service>] [-s <server_name>]
[-D <database>] -u <DB_User_name> [-p <DB_User_password>]
-------------------------------完全备份命令举例介绍--------------------------------------------------
Sdeexport –o create –l xzq,shape –f D:/xzq.exp –i esri_sde –s lish –u test –p test
-l xzq,shape :表名的shape字段
-f D:/xzq.exp:导出备份文件的路径设置,后缀名为.exp
后面的很简单分别为:sde服务名(esri_sde),主机名(lish),用户名称(test),用户密码(test)
-------------------------------完全恢复命令举例介绍--------------------------------------------------
Sdeimport –o create –l newTable,shape –f D:/xzq.exp –i esri_sde –s lish –u test –p test
命令解释与完全备份大致一致,用户可以自定义导入的新图层的图层名(newTable)
-------------------------------完全备份命令举例介绍--------------------------------------------------
Sdeexport –o create –l xzq,shape –f D:/xzq.exp –w xzqdm like ‘4111%’-i esri_sde –s lish –u test –p test
-w相当于SQL语句的where条件,将xzq图层中xzqdm字段开头包含4111的数据导出
-------------------------------备份特定数据版本举例介绍-----------------------------------------------
Sdeexport –o create –l xzq,shape –f D:/xzq.exp –V versionname –i esri_sde –u test –p test
-V 添加一个版本名称
特定版本恢复都不再做解释说明了
利用数据库的逻辑备份恢复机制进行(推荐)
数据泵的概述
http://junmail.javaeye.com/blog/215780
在Oracle 10g中,数据泵(Data Pump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。
通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。
数据泵通过新的API来建立和管理,这些新的工作主要由DBMS_DATAPUMP来完成。新的导入/导出工具完全成为了一个客户端应用,通过IMPDP /EXPDP执行的命令实际上都是在调用Server端的API在执行操作,所以一旦一个任务被调度或执行,客户端就可以推出连接,任务会在server 端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改
数据泵的应用
-------------------------------备份------------------------------------------
sql>create directory dbbackup as 'D:/backup';
expdp sys/密码@orcl directory=dbbackup dumpfile=sde.dmp schemas=sde
-------------------------------恢复------------------------------------------
impdp sys/密码@orcl directory=dbbackup dumpfile=sde.dmp schemas=sde
与EXP不同,EXPDP增加了一个主要的参数:DIRECTORY
这个参数是用来定义一个路径,前面已经提到,数据泵主要在Server端工作,导出文件需要写出到Server端本地目录,这个DIRECTORY就是对应的Server端的路径
利用数据库的物理备份恢复机制进行
脱机备份(冷备份)
当数据库已经正常关闭时备份下列文件
Ø 所有的数据文件
E:/app/esri/oradata/orcl/...dbf
Ø 所有的控制文件
SQL>Show Parameter Control 可以查看控制文件路径
E:/app/esri/oradata/orcl/ CONTROL01.CTL
Ø 所有联机重做日志
Ø Init.ora文件(可选)
联机备份
当数据库运行时备份下列文件
Ø 所有的数据文件
Ø 所有归档的重做日志文件
E:/app/esri/oradata/orcl/ REDO01.LOG 三组归档日志
Ø 一个控制文件
以上已经属于纯Oracle备份的机制,不再赘述了!