大型GIS系统,存储、管理海量(TB级)空间数据时,数据库备份变的尤其重要。这里随笔说说冷备份的一种方法。

基于ArcSDE、Oracle空间库的冷备份:

(1) 在数据入库工作后或者更新变动较大时,全库备份方式比较合适,以应付各种意外情况导致数据库崩溃。

(2) 数据库整库(业务数据和空间数据)需要迁移至其他机器。

一、冷备份与恢复

1.1 冷备份的操作流程

这种冷备份的方式的具体流程如下,在cmd中进行:

备注,测试是在Oracle11gR2下进行的。

1.1.1 以sysdba的方式连接Oracle

输入:

1>C:\Documents and Settings\Administrator>sqlplus    -回车

2>请输入用户名:sys  as dba                    -回车

3>输入口令: *****  输入完回车

此外,2,3>两步也可以按照如下方式进行:

2>请输入用户名:sys                        -回车

3>输入口令: ***** as sysdba                 -密码输入过程中看不到字母,输入完回车

1.1.2 shutdown数据库

SQL>shutdown immediate

1.1.3 开始拷贝备份数据库

注意拷贝的文件:

实例文件:我的存储在安装路径:E:\Files\Oracle\oradata下的orclweng文件夹下,orclweng同时为我的数据库名

确保直接拷贝Oracle目录下的admin、oradata(datafile, controlfile,redo)、flash_recovery_area三个文件夹,product\11.2.0\dbhome_1\database 目录下database(PWDfile、pfile)、dbs(spfile)、NETWORK/ADMIN(listener.ora、tnsnames.ora),到其他存储实现备份。

1.1.4 完成备份

完成后,startup数据库即可进行下面工作。

上述1.3所拷贝备份的数据,即可对数据库进行还原,也可在其他机器上对其他数据库进行恢复,完成数据库的迁移工作,而不必用Catalog去从A库导入B库的方式迁移,适合整库数据迁移。

注:

1)移至其他机器的时需要注意,另一台机器需要预先在相同路径下安装好同版本Oracle和ArcSDE。

2)首先目标机器的相应数据库需要shutdown后,将备份文件拷贝至其相应路径下,再startup启动数据库即可恢复。

3)保证各个文件是同一时态的文件,shutdown后必须一次性拷贝,不可拷贝部分,启动使用后又拷贝其他部分。

1.2 冷备份的恢复

总体来说包括以下几个方面:

(1).连接数据库  参考上述

(2).shutdown  数据库

(3).拷贝文件

(4).satartup数据库

方法一:最简单的方法(需建库)

1.创建一个和原来一样的数据库。(安装路径和数据库名必须和原来一致)

2.停止数据库 shutdown immediate;

3. 复制安装目录下的admin、oradata、flash_recovery_area覆盖,复制database(PWDfile、pfile) 覆盖

4. 启动数据库 startup;

方法二:(不需建库,稍麻烦点)

(1):操作系统重装,如果做冷备恢复,要保证相同操作系统,相同的数据库版本。

(2):正常安装oracle软件,只需要安装软件,不用建实例。

(3):数据覆盖,包括数据文件、参数文件、控制文件、日志文件、pwd文件,放在与原系统相同的目录。如果目录有所改变,则需要另外建立控制文件,修改pfile。

(4):建立服务:使用oradim 命令 cmd下 oradim -new -sid gbicc ,表示建立一个服务,sid为gbicc。如果是在Linux下,不需要此步。

(5):建立监听: net configuration assintant 来建立(建议将源系统的network下的文件拷过来,根据实际情况修改)。

(6):打开数据库: cmd

set oracle_sid=gbicc;

sqlplus /nolog;

Conn / as sysdba;

startup;

至此,冷备份恢复成功。

二、imp和exp命令对Oracle9i+SDE空间数据库的整体备份、恢复或迁移

假设:现在需要把OriSDE服务器上的空间数据库迁移到DesSDE服务器上,在创建SDE时二个服务器上的默认用户都是SDE,密码是SDE。OriSDE服务器上还有另外一个SDE数据用户RasterData,密码是RasterData。

1, 备份SDE用户(创建SDE时默认创建的用户)下的所有数据:例如

exp sde/sde@ OriSDE file=c:/sde.dmp

2, 备份其它操作SDE数据的用户,方法同上。例如:

ExpRasterData/RasterData@ OriSDE file=c: RasterData.dmp

3, 停止DesSDE服务器上的服务:

a) 方法1:打开cmd,输入以下语名:sdemon –o shutdown –s DesSDE(服务名) –p SDE(SDE用户的密码),如下图:

注:出现上图中的第二行语句才说明SDE服务已经被成功停止了。

b) 方法2:在控制面板中打到ArcSDE服务后停止它。

注意:一定要确保DesSDE已经被关闭了!才能进行以下的操作!

4, 打开DesSDE上的Oracle控制台,并以DBA的身份登录DesSDE,然后删除方案SDE下面的所有对象,包括:表、索引、视图、同义词、序列、簇、源类型、用户类型。如下图所示:

一般情况下,删除表、索引,视图后,以下五项已经没有内容了。但是要确定删除了这八项下面的所有内容。

5, 在DesSDE Oraccle服务器上建立 RasterData用户,并使其具有的在OriSDE 服务器上相同的表空间、角色和系统权限。

6, 导入SDE.dmp到OriSDE数据库中,例如:

Imp sde/sde fromuser=sde file=c:/sde.dmp touser=sde

7, 导入数据用户RasterData的数据备份RasterData.dmp

Imp RasterData/RasterData fromuser=RasterData file=c:/RasterData.dmp touser=RasterData

8, 重新启动DesSDE服务器上的SDE服务。

a) 方法1,运行CMD,输入以下语名:sdemon –o start –s DesSDE –p SDE

注:出现上图中的第二句话说明启动成功!

b) 方法2,从控制面板/服务里找到ArcSDE服务,启动该服务。

9, 打开ArcCatalog,建立与DesSDE的连接,并察看是否能浏览数据,如果可以的话,就说明SDE数据库已经迁移成功了。

这里主要是SDE用户及其数据的恢复(3、4、5这三个步骤)。因为SDE用户下面保存了所有SDE数据用户的所有表的对应关系,所以这一项的恢复是否成功关系到SDE数据库的迁移是否成功。其它的备份和恢复操作都可以参照oracle 备份和恢复操作进行。

新服务器上的SDE用户和表空间不要删除。因为在创建SDE服务时,会有一个wise_err.log文件让用户查看创建的结果,从上面我们可以看到有30多个表被创建,还创建了GeoDatabase日志(Creating

GeoDatabase

Schema),如果没有恢复这些表及日志的把握,最好别删除SDE用户和表空间,否则SDE用户下的数据恢复就很难成功(这可能是因为表没有创建完整的问题),即使成功了,SDE服务也很难启动起来(这可能是因为日志文件的问题)。实践出真知,如果不信,可以试试

(失败了没有关系,可以重新安装SDE的)!

当然,这只能用于同一版本的SDE之间数据库的恢复或迁移(9.0和9.1视为同版本),在不同版本的SDE空间数据库之间迁移数据库会作另外的论述。

下面是dreambird网友提供的在oracle中批量删除某个用户下面的所有对象的方法:

其实,我不是什么oracle高手,皮毛而已,否则那些高手会气死的。哈哈,我的qq125861109,欢迎交流。另外,上面的代码我又做了优化,因为某些表有主外键关系时是不允许删除的。我测试过了,绝对可用。可以在oracle的plsql developer 下运行。

DECLARE

TYPE name_list IS TABLE OF VARCHAR2(40);

TYPE type_list IS TABLE OF VARCHAR2(20);

Tab_name name_list:=name_list();

Tab_type type_list:=type_list();

sql_str VARCHAR2(500);

BEGIN

sql_str := ’select uo.object_name,uo.object_type from user_objects uo where uo.object_type not in('’INDEX'’,'’LOB'’) order by uo.object_type desc’;

EXECUTE IMMEDIATE sql_str BULK COLLECT INTO tab_name,tab_type;

FOR i IN Tab_name.FIRST.. Tab_name.LAST LOOPif tab_type(i)=’TABLE’ then

sql_str := ‘DROP ‘ || Tab_type(i) || ‘ ‘ || Tab_name(i) ||‘ CASCADE CONSTRAINTS’;elsesql_str := ‘DROP ‘ || Tab_type(i) || ‘ ‘ ||Tab_name(i) ;

endif;

EXECUTE IMMEDIATE sql_str;

END LOOP;

END;

以后考虑做成批处理,这样就方便解决了sde的备份问题。

三、使用sdeexport和sdeimport命令对SDE数据库的备份、迁移或恢复

本方法分四个步骤,备份元表,备份数据表,还原元表,还原数据表。

做SDE库的迁移或恢复之前,首先要了解SDE做为空间数据库引擎,它是怎么组织空间数据的,即要知道元表存放的内容和数据表存放的内容。SDE用户是SDE数据库边默认的一个用户,所有的元表存放在该用户下面,元表的作用就是存放数据表之间的关系,约7张数据表才能组成一个要素类,它们之间的关系要靠SDE的元表来维护。因此SDE库的备份就分二个步骤,备份元表,备份数据表。

此方法讲的是采用SDE自带的命令sdeimport和sdeexport备份和导入数据表,即方法的优点是可以在不同的数据库之间进行库的迁移或用于某个要素类恢复(sdeimport和sdeexport命令详见SDE自带的帮助文档)。

首先,备份元表

可以采用sdeexmport命令来备份元表,但本方法采用使用ArcCatalog自带的export工具来备份元表。连接需要备份的SDE库,在需要备份的特征数据集或某个连接上点击右键,再点击export/xml

workspace Document 如下图所示:

说明:在SDE数据库连接(上图中sdeto

sy)上点击右键和在特征数据集(如上图中的upmis.规划历史库)上点击右键备份的元表是不一样的。在数据库连接上点击右键(当然此时连接数据库的用户需要具有操作所有数据的权限,比如SDE用户),备份的是所有的元表信息,而在特征数据集上点击右键,备份的是该特征数据集对应的元表。

选择只备份元表(schema only),选择备份元数据(SDE中的数据的来源等信息)的话会把元数据的也备份。如下图所示:

其次,备份数据表

备份数据表采用的命令是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(主机名)这二个参数。

把所有需要备份的要素类都进行备份。

再次,在目标数据库上还原元表

也可以采用sdeimport命令来完成,本方法中同样采用ArcCatalog的import工具来还原元表。

以某个用户名(比如说sde)建立SDE数据库的连接,双击连接后在数据库连接上点击右击,选择import/ xml workspace Document。

需要注意的是,以什么用户登陆,还原的元表记录的就是哪个用户的数据表关系。比如,备份时我是使用upmissde备份的dlg特征数据集,还原元表时我是以sde用户登录的,那么,还原后会在sde用户下面出现一个sde.dlg(本来是upmissde.dlg),这就是此方法的特异之处,可以在不同的用户和不用的SDE版本及不同的数据库(Oracle

,SqlServer)之间进行数据迁移。

最后,还原数据表

同样采用的是使用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:/>

在导入之前,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数据库时,也存在局限性。

第四种备份的方法(同版本的SDE库的恢复)原作者如今也未兑现承诺,尚未推出,待本人或许有空去解决吧。

参考文章

空间数据引擎oracle_Oracle空间数据库的备份与恢复相关推荐

  1. 空间数据引擎oracle_空间数据库oracle

    Oracle如何实现创建数据库.备份数据库及数据导出导入的一条龙操作 Oracle中对数据对象和数据的管理,无疑都是使用PL/SQL Developer来进行管理,该工具也提供给我们很多方便.快捷的操 ...

  2. 空间数据引擎oracle_GIS空间数据引擎概念、作用及体系作用

    GIS空间数据引擎概念 空间数据库引擎(SDE, Spatial Database Engine)是GIS中介于应用程序和空间数据库之间的中间件技术,它为用户提供了访问空间数据库的统一接口,是GIS中 ...

  3. 空间数据引擎oracle_GIS 与Oracle 数据库空间数据格式的转换

    近几十年来,由于社会应用需求的增长和多年研究工作的积累,地理信息系统(GIS)技术有了明显的进步,正朝着跨平台运行.分布式处理.开放式开发.网络化集成的方向发展.从空间数据管理角度看,GIS 已经从纯 ...

  4. 空间数据引擎oracle_SQL/Oracle数据库是怎样与GIS的应用相联系起来的?

    真相只有一个,让我来说一下吧.你一定很困惑,空间数据在关系型数据库中是如何存储的吧?当年oracle和ESRI共同开发了一个扩展,也就是今天的oracle spatial,空间数据的存储问题本质上是空 ...

  5. 基于ArcSDE、Oralce空间数据库冷备份与恢复

    大型GIS系统,存储.管理海量(TB级)空间数据时,数据库备份变的尤其重要.这里随笔说说冷备份的一种方法.基于ArcSDE.Oracle空间库的冷备份在(1)间数据入库工作后或者更新变动较大时,全库备 ...

  6. oracle编写备份数据库代码,oracle_oracle数据库创建备份与恢复脚本整理,1:创建用户 复制代码 代码如 - phpStudy...

    oracle数据库创建备份与恢复脚本整理 1:创建用户 create temporary tablespace user_temp tempfile 'D:\app\topwqp\oradata\or ...

  7. 基于位置的服务(简介)

    基于位置的服务(Location Based Services,LBS) 一. 基于位置的服务(Location Based Services,LBS)是指采用无线定位.GIS.Internet.无线 ...

  8. mysql gis空间数据库_GIS开发:使用空间数据库

    在早期GIS开发中,空间数据库的使用比较少,一般都是使用Arcgis Engine进行GIS空间分析等功能的开发,或者通过Spatial Database Engine(sde)空间数据引擎调用数据库 ...

  9. Oracle空间数据库

    我们使用mapxtrem java 操作oracle 数据库,那么使用oracle自带的空间数据库是比较好的方案,那么关于这个oracle空间数据库的基本操作具体说明如下:(特别注明,以下内容转贴自h ...

最新文章

  1. Linux 常用命令操作
  2. Apache CXF实现WebService发布和调用
  3. 垃圾邮件分类器_如何在10个步骤中构建垃圾邮件分类器
  4. kali装电脑_Kali Linux可以安装到平板电脑吗?
  5. two sum python_Python | Leetcode 之 Two Sum
  6. pytorch Resnet
  7. Hudson Jameson将在柏林硬分叉后卸任以太坊基金会社区经理
  8. 活跃在企业信息化特别是制造业PLM领域的国外咨询公司
  9. 解读Unity中的CG编写Shader系列二
  10. linux 显示目录的大小不一样,linux目录大小显示不实时问题
  11. linux怎样使用小米线刷工具,在linux上怎么样线刷小米手机
  12. 开源.net 混淆器ConfuserEx
  13. 考研没过线也能录取?13种特殊录取方式!
  14. 机器人阿莫西_HELLO!阿莫西 本田机器人ASIMO
  15. 无线服务器dns怎么设置方法,怎么设置无线路由器的dns
  16. L.G.ALEXANDER 访谈录(ZT)
  17. 将VBS脚本编译成加密版本的VBE脚本
  18. python上台阶问题_“上台阶问题”的分析
  19. matlab归一程序,Matlab三种归一化方法
  20. 会话/序列推荐:Caser、SASRec、BERT4Rec [Session based / Sequential Recommendation]

热门文章

  1. 怎样把U盘格式化成NTFS格式
  2. G4 ETM: Embedded Trace Macrocell
  3. details和summary元素的使用
  4. Java简单电子相册
  5. 铠装计算机电缆型号,铠装计算机电缆 DJYVP22 7*2*1.0 安徽省品牌
  6. 生活中的数学问题(六)
  7. 代码审计--Fortify 如何定位中间文件
  8. python3 value counts函数_pandas计数函数 :value_counts( )和counts( )的使用
  9. java 二进制转十进制的算法_java中十进制数转换二进制数
  10. 随机看妹子_这是不可能的