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

发布时间:2014-10-25 2:20:30
来源:分享查询网

imp和exp命令对Oracle9i+SDE空间数据库的整体备份、恢复或迁移: 字串4   假设:现在需要把OriSDE服务器上的空间数据库迁移到DesSDE服务器上,在创建SDE时二个服务器上的默认用户都是SDE,密码是SDE。OriSDE服务器上还有另外一个SDE数据用户RasterData,密码是RasterData。1, 备份SDE用户(创建SDE时默认创建的用户)下的所有数据:例如exp sde/sde@ OriSDE file=c:/sde.dmp2, 备份其它操作SDE数据的用户,方法同上。例如:ExpRasterData/RasterData@ OriSDE file=c: RasterData.dmp3, 停止DesSDE服务器上的服务:a) 方法1:打开cmd,输入以下语名:sdemon –o shutdown –s DesSDE(服务名) –p SDE(SDE用户的密码),如下图: 字串1 注:出现上图中的第二行语句才说明SDE服务已经被成功停止了。b) 方法2:在控制面板中打到ArcSDE服务后停止它。注意:一定要确保DesSDE已经被关闭了!才能进行以下的操作!4, 打开DesSDE上的Oracle控制台,并以DBA的身份登录DesSDE,然后删除方案SDE下面的所有对象,包括:表、索引、视图、同义词、序列、簇、源类型、用户类型。如下图所示: 字串5   一般情况下,删除表、索引,视图后,以下五项已经没有内容了。但是要确定删除了这八项下面的所有内容。5, 在DesSDE Oraccle服务器上建立 RasterData用户,并使其具有的在OriSDE 服务器上相同的表空间、角色和系统权限。6, 导入SDE.dmp到OriSDE数据库中,例如:Imp sde/sde fromuser=sde file=c:/sde.dmp touser=sde7, 导入数据用户RasterData的数据备份RasterData.dmpImp RasterData/RasterData fromuser=RasterData file=c:/RasterData.dmp touser=RasterData8, 重新启动DesSDE服务器上的SDE服务。a) 方法1,运行CMD,输入以下语名:sdemon –o start –s DesSDE –p SDE 字串8   注:出现上图中的第二句话说明启动成功!b) 方法2,从控制面板/服务里找到ArcSDE服务,启动该服务。9, 打开ArcCatalog,建立与DesSDE的连接,并察看是否能浏览数据,如果可以的话,就说明SDE数据库已经迁移成功了。 字串2 这里主要是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 下运行。 字串6 DECLARETYPE name_list IS TABLE OF VARCHAR2(40);TYPE type_list IS TABLE OF VARCHAR2(20); 字串1   Tab_name name_list:=name_list();Tab_type type_list:=type_list(); 字串9   sql_str VARCHAR2(500);BEGINsql_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; 字串4   FOR i IN Tab_name.FIRST.. Tab_name.LAST LOOPif tab_type(i)=’TABLE’ thensql_str := ‘DROP ‘ || Tab_type(i) || ‘ ‘ || Tab_name(i) || ‘ CASCADE CONSTRAINTS’;elsesql_str := ‘DROP ‘ || Tab_type(i) || ‘ ‘ || Tab_name(i) ;end if;EXECUTE IMMEDIATE sql_str;END LOOP;END;以后考虑做成批处理,这样就方便解决了sde的备份问题。 字串6

返回顶部
查看电脑版