ArcGIS SDE(Oracle)地理数据库迁移 使用Oracle数据泵方式

2 篇文章 0 订阅
1 篇文章 0 订阅

一.环境

源服务器:
arcgis :10.2.2版本
操作系统:win10
Oracle:Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production2
目标服务器配置与原服务器相同

二、具体步骤

1.“源服务器”操作如下:
(1)由于采用数据泵导入导出的方式所以先在“源服务器”上创建一个目录对象,在“源服务器”上某个磁盘创建备份文件夹,例如在C盘创建sdebackups文件夹。

(2)使用(1)中创建的文件夹创建目录对象,使用SQL Plus或者PL/SQL 皆可,使用sys用户登录数据库,执行如下语句:

create directory sdebackups as  'C:\sdebackups '

使用如下语句:select * from dba_directories
可查询当前用户的所有目录对象,检查目录对象是否创建成功。

(3)打开cmd命令窗口,使用expdp方法按角色导出数据库dmp文件,本人数据库模式如下:sde为地理数据库用户、 test用户用于存放数据集与要素类,所以要导出sde、test两个用户,在cmd命令窗口执行如下语句:

expdp sys/ORCL@ORCL directory=sdebackups  dumpfile=sdebackups.dmp schemas=(sde,test)

参数说明:sys为角色名,ORCL为角色对应密码,@后字符串为对应实例也可加ip地址形式例如:127.0.0.1/ORCL ,directory为sys用户下新建的目录对象,dumpfile为导出的dmp文件名,schemas为要导出的角色。

以上步骤执行完可看C:\sdebackups目录下导出的dmp文件以及导出的log日志。

2.“目标服务器“操作 如下
(1)与”源服务器相同“,所以先在“目标服务器”上创建一个目录对象,先在“目标服务器”上某个磁盘创建备份文件夹,例如在C盘创建sdebackups文件夹,然后将”源服务器“上的dmp文件拷贝到该目录下。

(2)与”源服务器“的(2)步操作相同创建”目标服务器“的sys用户的目录对象。

(3)由于使用expdp的方式导出备份,所以”目标服务器“不需要创建sde和test两个角色,此角色数据存在dmp文件中,在impdp导入的时候程序会自动创建用户,但是表空间需要自己创建,在”源服务器“中执行如下SQL语句可查看”源服务器“数据库的表空间以及物理文件所在磁盘,SQL语句如下:

select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space 
from dba_data_files  order by tablespace_name

创建与”源服务器“相同的表空间,sde默认的表空间如下:
在这里插入图片描述
可看见表空间大小为400m,所以执行如下语句在“目标服务器”创建表空间,语句如下:

create tablespace SDE_TBS
logging  
datafile 'D:\app\Administrator\oradata\orcl\SDE_TBS' 
size 400m
autoextend on  
next 50m maxsize unlimited
extent management local;

同样创建test用户所在的表空间,语句如下:

create tablespace TEST
logging  
datafile 'D:\app\Administrator\oradata\orcl\TEST.dbf' 
size 1024m
autoextend on  
next 50m maxsize unlimited
extent management local;

: 至此表空间创建完毕,可以看到两台电脑,oracle安装的位置以及表空间存放位置并不相同,”源服务器“在E盘,”目标服务器“在D盘,这将影响到impdp导入操作,应为dmp文件中会记录的”源服务器“的表空间物理路径,所以导入时会报错,提示表空间不存在,具体参数在第四步叙述。

(4)表空间创建完成后执行impdp导入操做,打开cmd命令窗口,输入如下命令语句:

impdp sys/orcl@ORCL directory=sdebackups  dumpfile=sdebackups.dmp  
schemas=(sde,test) remap_tablespace=SDE_TBS:SDE_TBS,TEST:TEST

参数说明:sys为角色名,orcl为角色对应密码,@后字符串为对应实例也可加ip地址形式例如:127.0.0.1/ORCL ,directory为sys用户下新建的目录对象,dumpfile为导出的dmp文件名,schemas为要导如的角色,remap_tablespace参数为指定表空间,用到此参数的原因见(3)注,该参数为将源表空间的所有对象导入到目标表空间中 :REMAP_TABLESPACE=source_tablespace:target_tablespace ,多个表空间指定用英文逗号”,“分开。

3.遇到问题以及解决办法

导入完成后,会在创建的目录对象的文件夹下生成对应日志文件,查看import.log文件,如以下错误:
(1).错误一如下:

ORA-39082: 对象类型 PACKAGE_BODY:"SDE"."PINFO_UTIL" 已创建, 但带有编译警告

ORA-39082: 对象类型 PACKAGE_BODY:"SDE"."LOCK_UTIL" 已创建, 但带有编译警告

ORA-39082: 对象类型 PACKAGE_BODY:"SDE"."VERSION_USER_DDL" 已创建, 但带有编译警告

原因是因为SDE.PINFO_UTIL,SDE.LOCK_UTIL,SDE.VERSION_USER_DDL三个包,没有执行sys.DBMS_LOCK和sys.DBMS_PIPE的权限,用以下方式解决。
1)用sys用户登录数据库,执行如下两条语句给SDE用户赋予权限:

        Grant execute on dbms_pipe to sde;
	    Grant execute on dbms_lock to sde;

2)执行如下语句,编译:“SDE”.“LOCK_UTIL”,“SDE”.“PININFO_UTIL”,SDE.VERSION_USER_DDL三个包。

	    Alter package sde.lock_util compile ;
		
		Alter package sde.lock_util compile body;
		
		Alter package sde.pinfo_util compile;
		
		Alter package sde.pinfo_util compile body;
		
		Alter package sde.version_user_ddl compile;
		
		Alter package sde.version_user_ddl compile body;

(2)错误二如下:

ORA-31693: Table data object "SDE"."GDB_ITEMS" failed to load/unload and is being skipped due to error: 
ORA-02354: error in exporting/importing data 
ORA-00600: internal error code, arguments: [kpudpxcs_ctxConvertStream_ref_1], [SYS_TYPEID("SHAPE")], [], [], [], [], [], [], [], [], [], []"

此错误可看此文章方法解决,博客链接: https://blog.csdn.net/linghe301/article/details/12747351

本人未下载到博客中所提到的Oracle补丁,采用的是PL/SQL 的导出方法,导出GDB_ITEMS表的数据,然后使用PL/SQL 的导入方法导入数据,对"SDE".“GDB_ITEMS_VW"和"SDE”."GDB_ITEMRELATIONSHIPS_VW"两个视图重新编译。
在这里插入图片描述
图1 使用PL/SQL 导出GDB_ITEMS表的数据
在这里插入图片描述
图2 使用PL/SQL 导入GDB_ITEMS表的数据
在这里插入图片描述
图3 使用PL/SQL 重新编译视图

完成以上所有步骤后,用ArcMap软件可连接该sde数据库,查看对应的数据。

本文操作参考以下博客连接:
[Bug]IMPDP导入ArcSDE数据报:ORA-31693, ORA-02354, ORA-00600:
https://blog.csdn.net/linghe301/article/details/12747351
Oracle空间数据库的逻辑迁移:
https://blog.csdn.net/zclovepp1314/article/details/79138010
oracle11g数据库导入导出方法教程:
https://blog.csdn.net/xinxiaoyonng/article/details/79436673
地理数据库系统表概述
https://desktop.arcgis.com/zh-cn/arcmap/10.3/manage-data/using-sql-with-gdbs/overview-geodatabase-system-tables.htm
oracle通过impdp导入不同表用户、不同表空间的数据:
https://www.cnblogs.com/yaoyangding/p/12042025.html

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值