免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 3293|回复: 1
收起左侧

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

[复制链接]

1986

主题

10万

铜板

98

好友

技术员

Network change life, change t

积分
17879

斑竹勋章地信元老

QQ
发表于 2009-12-15 09:11 | 显示全部楼层 |阅读模式
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 LOOP
if tab_type(i)=’TABLE’ then
sql_str := ‘DROP ‘ || Tab_type(i) || ‘ ‘ || Tab_name(i) || ‘ CASCADE CONSTRAINTS’;
else
sql_str := ‘DROP ‘ || Tab_type(i) || ‘ ‘ || Tab_name(i) ;
end if;
EXECUTE IMMEDIATE sql_str;
END LOOP;
END;
以后考虑做成批处理,这样就方便解决了sde的备份问题。
轻轻的我来签到了,想带走一堆铜板...

1145

主题

10万

铜板

2

好友

传奇会员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
21819

灌水勋章活跃勋章冰雪节勋章

QQ
发表于 2013-11-10 20:04 | 显示全部楼层
进来看看 学习学习

评分

参与人数 1铜板 +1 收起 理由
admin + 1 亲,你好快哦~~~

查看全部评分

加强科技支撑和引领  实现地质找矿新突破 。     
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表