* 备份数据库:使用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






