Oracle11g中数据的倒库和入库操作以及高版本数据导入低版本数据可能引发的问题
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。
1.前言
在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP。所以在11G的倒库和入库方式中,我们也有两种方式可以选择:传统模式和数据泵模式。
传统模式又分为:常规导入导出和直接导入导出。
下面以导出数据为例,分别介绍各自导出原理。
1.1简述各导入导出方式的原理
1.1.1常规导出原理
传统路径模式使用SQL SELECT语句抽取表数据。数据从磁盘读入到buffer cache缓冲区中,行被转移到评估缓冲区。在此之后根据SQL表达式,将记录返回给导出客户端,然后写入到dump文件。
常规导出的例子:exp zhejiang/zhejiang file=/data1/zj_regular.dmp buffer=20480000
1.1.2直接导出
直接导出模式,数据直接从磁盘中读取到导出session的PGA中,行被直接转移到导出session的私有缓冲区,从而跳过SQL命令处理层。 避免了不必要的数据转换。最后记录返回给导出客户端,写到dump文件。
直接导出的例子:exp zhejiang/zhejiang file=/data1/zj_direct.dmp buffer=20480000 recordlength=65535 direct=y。
1.1.3数据泵导出
数据泵方式是EXP方式的加强版,其原理类似,但是它的导出要借鉴服务器端的数据库目录。
1.2传统模式和数据泵模式的对比
1.2.1传统模式的优点
EXP和IMP是客户段工具程序,它们既可以在客户端使用,也可以在服务器段使用。
而EXPDP和IMPDP是服务端的工具程序,它们只能在ORACLE服务端使用,不能在客户端使用。
1.2.2数据泵模式的优点
数据泵导出数据的时间更短,而且导出的数据文件大小更小。
以下表格为我将网友的一个测试进行的统计:
|
类型 |
例子(导出40G左右的数据) |
|
传统模式(直接导出) |
18分钟 |
|
数据泵模式 |
14分钟,且导出的文件比传统模式小1.5G |
1.3 注意
IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。
1.4 小结
由上面对比可见,在实际操作中,我们在服务器端选择数据泵方式导入数据会更快一些。下面我主要介绍数据泵方式的导入和导出。
2.数据泵导出数据的流程
2.1创建逻辑目录并授权
创建逻辑目录“EXPDP_DIR”并将其映射到物理路径“D:\DBbak”下,在PL/SQL下面执行语句:Create or replace directory expdp_dir as 'D:\DBbak';
执行完后,要在对应的硬盘目录下创建该文件夹。
可以通过SQL查询是否成功创建逻辑目录,Select * from dba_directories,可以看到如下结果:

最后,再给创建的目录赋予权限:
Grant read,write on directory EXPDP_DIR to Public;
2.2执行导出操作
建立expdp.bat文件,文件内容为:Expdp sccot/tiger@testDB directory=expdp_dir dumpfile =STDCG _201501.dmp logfile= STDCG _201501.log;执行该bat;
因为是导出所有数据,所以没有设置tables| schemas| tablespaces。
导出成功后,导出的数据会自动放在之前设置的Expdp_Dir文件夹下。
3.数据泵导入数据的流程
3.1 创建数据库实例等基本操作
a.创建数据库stdcg,包含SYS和SYSTEM两个用户
b.用SYS登陆PL/SQL->File->Open->SQL script执行创建表空间sql脚本。需要注意的就是修改脚本中的路径:
DATAFILE 'F:\app\DELL\oradata\stdcg\DLGIS.DBF'(红色部分是本地数据库的路径)
c.执行创建用户脚本:包含dlsys、dlmis、dlinit、dlgis、sde、mms、umstat、ulog用户。
3.2创建逻辑目录并授权
如2.2中所描述的,这里直接给出语句:
Create or replace directory expdp_dir as 'd:\DBbak';
Grant read,write on directory expdp_dir to public;
不过多出了这样一个步骤:在D盘建立文件夹DBbak 后,需要将数据库的导出文件:STDCG _201501.DMP和STDCG _201501.log 一起拷贝到D:\DBbak目录下。
3.3执行导入操作
建立impdp.bat文件,文件中的内容为: impdp dlsys/dlsys@stdcg dumpfile= STDCG _201501.dmp logfile= STDCG _201501_EXP.log。运行该bat文件。
同样,因为是全库导入,所以没有使用tables| schemas| tablespaces来进行导入内容设置。
4.11g数据导入10g的库中
4.1 降版本导出然后导入
首先要做与一般数据泵导出时相同的操作,即创建逻辑目录: Create or replace directory expdp_dir as 'D:\DBbak';
然后再导出数据时,sql命令上要加上一个version控制即可:
expdp sccot/tiger@testDB dumpfile=stdcg10g.dmp directory= expdp_dir version=10.0.2。
导出后,再将导出的dmp文件导入到10g的库中即可。
4.2容易出现的问题
目前在江北项目和烟台项目中均做了如下操作:shp数据首先通过SDE导入到了11g的数据库中,由于现场数据库突然需要降级,然后将11g的数据又重新导入导出到10g中。但是,两个现场都不分别出现了不同的问题。
江北现场的问题是,在catalog里能够直连到10g上Oracle,也能看到各空间数据。但是,在arcmap中添加该数据库中的空间数据,图层渲染时会出现SDE内部错误,导致图层无法显示。

而烟台现场,则直接出现了直连数据库不定时失效问题:
测试可以连接:

点OK后又不能连接:

4.3解决方法及分析
4.3.1解决方法
将空间数据所在的DLGIS和SDE用户删除,重新通过SQL生成这两个用户以及先关表结构后。手动通过catalog直连到数据库上,然后手动导入图层,解决上述问题。
4.3.2 问题分析
猜想为11g数据转成10g数据时可能某些空间信息表被改变或者破坏,不再符合arcgis10.0的连接规范等。造成了sde不稳定或者sde内部错误。
Oracle11g中数据的倒库和入库操作以及高版本数据导入低版本数据可能引发的问题的更多相关文章
- 高版本api在低版本中的兼容
直接上例子,看如何避免crash. eg:根据给出路径,获取此路径所在分区的总空间大小. 文档说明:获取文件系统用量情况,在API level 9及其以上的系统,可直接调用File对象的相关方法,以下 ...
- android中导入低版本project可能会遇到的编译问题(转自: Victor@Beijing)
使用高版本的SDK后再导入以前用低版本的project时,会遇到一些兼容性的问题. (1)Unable to resolve target 'android-5' 因为本机中现在使用的是2.2的SDK ...
- Python 数据分析中金融数据的来源库和简单操作
目录 金融数据 pandas-datareader TuShare 金融学图表 案例 金融数据 数据分析离不开数据的获取,这里介绍几种常用的获取金融方面数据的方法. pandas-datareader ...
- 关于SQLServer2008数据如何导入SQL2005的解决办法,高版本数据导入低版本中。
最近需要把SqlServer2008 的数据库导入sqlserver2005 中.直接备份还原肯定不行.后来想到可以生成脚本执行sql语句,并选择数据可以一同进行执行. 点击右键--->任务-- ...
- SQLserver 数据库高版本无法还原到低版本的数据解决方法
sql server 数据库的版本只支持从上往下兼容.即高版本可以兼容低版本 .低版本不能兼容低版本.通常我们在开发时会用比较高的版本.但是部署到客户那边可能他们的数据库版本会比较低. 我们可以通过导 ...
- Qt的Model/View Framework解析(数据是从真正的“肉(raw)”里取得,Model提供肉,所以读写文件、操作数据库、网络通讯等一系列与数据打交道的工作就在model中做了)
最近在看Qt的Model/View Framework,在网上搜了搜,好像中文的除了几篇翻译没有什么有价值的文章.E文的除了Qt的官方介绍,其它文章也很少.看到一个老外在blog中写道Model/Vi ...
- 教你如何6秒钟往MySQL插入100万条数据!然后删库跑路!
教你如何6秒钟往MySQL插入100万条数据!然后删库跑路! 由于我用的mysql 8版本,所以增加了Timezone,然后就可以了 前提是要自己建好库和表. 数据库test, 表user, 三个字段 ...
- (四)DIH导入结构化数据
(四)DIH导入结构化数据 目前大多数的应用程序将数据存储在关系数据库(如oracle.sql server .mysql等).xml文件中.对这样的数据进行搜索是很常见的应用.所谓的DataImpo ...
- Hive 导入 parquet 格式数据(未完,待续)
Hive 导入 parquet 格式数据 Parquet 格式文件,查看Schema Parquet 之mapreduce Hive 导入 parquet 格式数据
随机推荐
- spark - tasks is bigger than spark.driver.maxResultSize
Error ERROR TaskSetManager: Total size of serialized results of 8113 tasks (1131.0 MB) is bigger tha ...
- go中安装Beego不成功笔记
在go.Git等等之类的相关软件安装好了之后,便可以安装Beego. 1.开始的时候是由于网络限制,不能访问Github,这个还好说找VPNFQ... 2.之后的问题,在git Bash中输入go g ...
- 利用@media screen实现网页布局的自适应
利用@media screen实现网页布局的自适应 优点:无需插件和手机主题,对移动设备友好,能够适应各种窗口大小.只需在CSS中添加@media screen属性,根据浏览器宽度判断并输出不同的长宽 ...
- Spket在Eclipse下的安装和配置(图文教程)
一.Spket简介 Spket是一个RIA的开发工具,具有代码自动完成.语法高亮.内容概要等功能,可以帮助开发人员高效的编写JavaScript程序. 效果图: 二.安装Spket 1.去官网(htt ...
- 基础知识漫谈(2):从设计UI框架开始
说UI能延展出一丢丢的东西来,光java就有swing,swt/jface乃至javafx等等UI toolkit,在桌面上它们甚至都不是主流,在web端又有canvas.svg等等. 基于这些UI工 ...
- 架构之路(七)MVC点滴
我们目前正在开发中的是任务管理系统,一个前端复杂的项目,所以我们先从MVC讲起吧. WebForm 随着ASP.NET MVC的兴起,WebForm已成昨日黄花,但我其实还很想为WebForm说几句. ...
- NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器 ...
- java中构造方法的特殊性
构造方法名与类名相同 构造方法没有返回值,也不能写void 构造方法的主要作用是完成对对象的初始化工作 构造方法一般不由编程人员显示调用,而是由new来调用 在创建一个类的对象的同时,系统会自动调用该 ...
- 【requireJS源码学习01】了解整个requireJS的结构
前言 现在工作中基本离不开requireJS这种模块管理工具了,之前一直在用,但是对其原理不甚熟悉,整两天我们来试着学习其源码,而后在探寻其背后的AMD思想吧 于是今天的目标是熟悉requireJS整 ...
- Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx
Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx 分类 图像处理知识点体系 v2 qb24.xlsx 分类 分类 理论知识 图像金字塔 常用底层操作 卷积扫描 ...