oracle11g导出数据库至其他版本
- 格式:txt
- 大小:0.66 KB
- 文档页数:1
Centos7.6下Oracle11g数据泵导入导出一、准备工作:1、第一步:在服务器上创建真实的目录[oracle@centos7 ~]$ suPassword:[root@centos7 oracle]# mkdir -p /db_backup/dpump_dir[root@centos7 oracle]# cd /db_backup/dpump_dir[root@centos7 db_backup]# lsdb_backup[root@centos7 data]# chmod -R 777 /db_backup/dpump_dir chown -R oracle:oinstall /db_backup/dpump_dir2、第二步:用sys管理员登录sqlplus;[oracle@centos7 ~]$ sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on Wed Aug 5 19:03:39 2020 Copyright (c) 1982, 2009, Oracle. All rights reserved.SQL> conn sys/manager as sysdbaConnected.SQL> startup启动监听:[oracle@centos7 ~]$ lsnrctl start3、第三步:创建逻辑目录;SQL> conn sys/manager as sysdbaConnected.SQL> create directory dpump_dir as '/db_backup/dpump_dir';Directory created.4、第四步:查看管理员目录,检查是否存在;SQL> select * from dba_directories where directory_name = 'DPUMP_DIR'; OWNER------------------------------------------------------------DIRECTORY_NAME------------------------------------------------------------DIRECTORY_PATH--------------------------------------------------------------------------------SYSDPUMP_DIR/db_backup/dpump_dir删除虚拟目录:drop directory dpump_dir;5、第五步:用sys管理员给你的指定用户赋予在该目录的操作权限。
Oracle11g数据迁到Oracle10g(expdp和impdp)由于客户要求,要把一个Oracle11g数据库迁移到一个Oracle10g ,由于deferred_segment_creation参数建库之初没有设置为false,并且目前存在空表,所以还是使用expdp和impdp。
1、expdp和rman相像的地方时都是在主机端(目标数据库端)生成dmp文件所以文件夹和权限等都在主机端设置。
2、由于是从11g迁移到10g,所以expdp增加了一个参数 version在需要迁移的目标数据库端执行 select * from v$version; 就知道version的值了,不然会报错。
【报错内容ORA-39001: invalid argument valueORA-39000: bad dump file specificationORA-39142: incompatible version number】expdp opsteel/opsteel dumpfile=20150923.dmp logfil e=exp20150923.logdirectory=expdp_dir schemas=opsteel version=10.2.0.1.03、impdp和 ORA-39125这个错误出现在10.2.0.4之前的版本,需要加参数exclude=statistics就可以10.2.0.4是否不需要加,忘了测试了,明天测试一把,看metalink 10.2.0.4已经修订了这个BUG【报错内容ORA-39125: KUPW$WORKER.PUT_DDLS[DBMS_METADATA.CONVERT]调用出错ORA-06502:LPX-00210:】最终的impdp的语法impdp opsteel/opsteel dumpfile=20150923.dmp logfil e=imp20150923.logDIRECTORY=impdp_dir SCHEMAS=opsteel version=10.2.0.1.0 exclude=statistics。
oracle11g数据库导入导出方法教程oracle11g数据库导入导出:①:传统方式——exp(导出)和(imp)导入:②:数据泵方式——expdp导出和(impdp)导入;③:第三方工具——PL/sql Develpoer;一、什么是数据库导入导出?oracle11g数据库的导入/导出,就是我们通常所说的oracle数据的还原/备份。
数据库导入:把.dmp 格式文件从本地导入到数据库服务器中(本地oracle测试数据库中);数据库导出:把数据库服务器中的数据(本地oracle测试数据库中的数据),导出到本地生成.dmp格式文件。
.dmp 格式文件:就是oracle数据的文件格式(比如视频是.mp4 格式,音乐是.mp3 格式);二、二者优缺点描述:1.exp/imp:优点:代码书写简单易懂,从本地即可直接导入,不用在服务器中操作,降低难度,减少服务器上的操作也就保证了服务器上数据文件的安全性。
缺点:这种导入导出的速度相对较慢,合适数据库数据较少的时候。
如果文件超过几个G,大众性能的电脑,至少需要4~5个小时左右。
2.expdp/impdp:优点:导入导出速度相对较快,几个G的数据文件一般在1~2小时左右。
缺点:代码相对不易理解,要想实现导入导出的操作,必须在服务器上创建逻辑目录(不是真正的目录)。
我们都知道数据库服务器的重要性,所以在上面的操作必须慎重。
所以这种方式一般由专业的程序人员来完成(不一定是DBA(数据库管理员)来干,中小公司可能没有DBA)。
3.PL/sql Develpoer:优点:封装了导入导出命令,无需每次都手动输入命令。
方便快捷,提高效率。
缺点:长时间应用会对其产生依赖,降低对代码执行原理的理解。
三、特别强调:目标数据库:数据即将导入的数据库(一般是项目上正式数据库);源数据库:数据导出的数据库(一般是项目上的测试数据库);1.目标数据库要与源数据库有着名称相同的表空间。
数据迁移——关于将Oracle 10g数据表迁移到SQL Server 2005数据库图解将Oralce10g数据库(源数据库)数据抽取到SQL Server2005数据库(目标数据库)必须先配置Oracle数据源,关于数据源配置请参考此文档Oracle 10g数据源配置.doc(双击此图标打开)1、选择目标数据库,右击选择任务>导入数据,如下图所示:点击,进入如下界面2、如上图点击<下一步>进入如下界面,点击下拉框选择Oracle Provider for OLE DB选项3、选择好数据源,点击当前窗体中的属性按钮,跳出下图所示的窗体4、配置数据源连接,数据源和密码和我们已配置好的数据源信息相对应,选择复选框<允许保存密码>,点击<测试连接>按钮,如果提示测试连接成功,O(∩_∩)O哈哈,恭喜你配置连接成功,点击<确定>,点击<下一步>5、如上窗体点击下一步按钮,进入如下窗体,确定目标数据库配置信息无误后点击<下一步>6、点击上窗体的<下一步>后,跳出如下窗体,继续点击<下一步>7、点击如上窗体的<下一步>按钮,跳出如下窗体,选择需要迁移的表(选中相应表前的复选框),选好后点击<下一步>按钮。
8、如果迁移的表数量比较多,会报出如下警告,所以对于很多表进行迁移时最好分批进行迁移9、如果在迁移数据时,跳出如下警告,是因为Oracle数据库中的极个别数据类型在SQL Server不存在,所以不识别,当前本人操作出现警告原因是因为Oracle 存在number数据类型(其中两张表存在此number类型,如报出的警告所示,分别是AAENDO_POL表和AAPAY_POL表),而SQL Server不识别此类型,遇到此情况的解决办法是:点击此两张表对应的如此图中的<编辑>按钮10、点击<编辑>按钮进入如下窗体,将在Oracle数据库中存在类型是number类型的字段改为对应SQL Server中的decimal类型,修改完成后点击确定按钮11、当点击如上图中的<确定>按钮,跳出如下窗体,继续点击<下一步>12、如下图点击<完成>按钮,开始执行数据迁移任务13、当迁移完成,并且无误后,如下图所示,状态全部显示成功14、此时查看目标数据库,会看到已将Oracle数据库中我们需要迁移的表迁移到了SQL Server数据库注意:此功能无法迁移源数据表的主外键,索引。
在10g服务器的D盘创建文件夹'datadump'。
将从11g服务器导出的数据库文件orcl_1(his_dp).dmp放到该目录下。
①进入到命令提示符号开始”——“运行”——输入“CMD”回车②输入“sqlplus”回车③输入“system”回车④输入密码(密码输入时是不可见的,此密码是在安装oracle10G时设置的)"orcl"⑤现在已经登陆了oracle,输入“drop user @数据库方案名 cascade;”回车⑥输入“CREATE USER @数据库方案名 identified by @数据库方案密码;”回车⑦输入“Grant dba to @数据库方案名;”回车⑧输入“Create tablespace dzh_datadatafile 'D:\oracle\dzh_data01.dbf'size 3M reuse autoextend on next 5M maxsize 4096M;”回车创建表空间⑨输入“CREATE TEMPORARY TABLESPACE dzh_temptempfile 'D:\oracle\dzh_temp.dbf'size 2M reuse autoextend on next 5M maxsize 4096M;”回车创建临时表空间⑩输入“Alter user @数据库方案名 temporary tablespace dzh_temp;”回车指定数据库方案存放表空间输入“Alter user @数据库方案名 default tablespace dzh_data;”回车指定数据库方案临时表空间11 输入“create directory dumpdir as 'D:\datadump';”回车如果要删除 drop directory dumpdir;输入“grant read,write on directory dumpdir to @数据库方案名;”回车12 输入“exit”回车,退出sqlplus命令行。
两种⽅法将oracle数据库中的⼀张表的数据导⼊到另外⼀个oracle数据库中oracle数据库实现⼀张表的数据导⼊到另外⼀个数据库的表中的⽅法有很多,在这介绍两个。
第⼀种,把oracle查询的数据导出为sql⽂件,执⾏sql⽂件⾥的insert语句,如下:
第⼀步,导出sql⽂件:
第⼆步:⽤PL/Sql Developer 连接另外⼀个oracle数据库,打开这个sql⽂件,全选所有insert语句,执⾏所有插⼊sql语句即可:
这种⽅法试⽤于插⼊⼤多数的数据库,⽆论是oracle数据库还是sql server数据库都可执⾏这个sql⽂件(全是insert语句)。
缺点是:当数据量⼤的时候,oracle数据库执⾏这些insert语句,效率会很低。
于是,接下来介绍第⼆种导⼊数据的⽅法,即:导出/导⼊CSV⽂件。
第⼀步,在Pl/Sql Developer查询窗⼝查询数据,导出成CSV⽂件:
导出的csv⽂件如下图:
第⼆步,把这个csv⽂件⾥的数据导⼊到另外⼀个数据库⾥,⽤PL/Sql Developer 连接另外⼀个oracle数据库,
菜单-⼯具-⽂本导⼊器:
第三步,点击“⽂本导⼊器”窗⼝⾥,点击导⼊按钮:
第四步,选择导⼊CSV⽂件:
导⼊后,界⾯如下:
第五步,选择“到Oracle的数据”选项卡,点击下拉框选择“所有者”,点击下拉框选择要导⼊的表,选择“覆盖重复”,点击“导⼊”按钮:
导⼊成功⼊下图:
点击“关闭“按钮,新建查询窗⼝,查询数据,验证导⼊是否成功:
总结:如果是oracle数据库,推荐使⽤第⼆种⽅法,⽐第⼀种⽅法的效率⾼很多。
一次Oracle11g数据库导入Oracle10g数据库操作笔记11g备份,导入10g的时候会抛错,直接阻止导入。
但是有时候还必须得把11g的数据库导入到10g,我今天就遇到了这种情况。
一开始只是把11g中的表全部备份,成功导入10g。
但是缺少视图、存储过程等。
一个个sql创建累死人,方法太笨。
请教了一下资深DBA,重新备份,重新导入,成功。
现在把我导入操作的全过程记录下来,希望可以方便更多的人!一、在11g服务器上,使用expdp命令备份数据EXPDP USERID='SYS/cuc2009@cuc as sysdba'schemas=sybj directory=DATA_PUMP_DIRdumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0其中,红色文字部分是根据需要改写的地方。
例如我的sys密码是cuc2009,数据库sid是cuc,要到出的用户名是sybj,要导入到10.2.0.1.0版本的Oracle数据库中去。
aa.dmp和aa.log将会在11g的dpdump目录中生成,例如我的11g装在了E盘下面,于是aa.dmp将会在E:/app/Administrator/admin/cuc/dpdump目录下被生成。
二、在10g服务器上,使用impdp命令恢复数据准备工作:1.建库2.建表空间3.建用户并授权4.将aa.dmp拷贝到10g的dpdump目录下1-3点可以去参考博主的上一篇博客“Oracle数据库移植全步骤”,介绍的很详细,这里不再多说。
关于第4点,我的10g装在了e:/tools 目录下,于是我将aa.dmp文件拷贝到了E:/tools/admin/cucf/dpdump目录下。
IMPDP USERID='SYS/cuc2009@cucf as sysdba'schemas=sybj directory=DATA_PUMP_DIRdumpfile=aa.dmp logfile=aa.log version=10.2.0.1.0其中红色部分是根据需要改写的地方。
详细讲解Oracle数据库的数据迁移方法Oracle数据库的数据迁移可以使用多种方法,包括传统的物理备份和恢复,逻辑备份和恢复,以及逻辑复制。
下面将详细介绍这些方法。
1. 物理备份和恢复(Physical Backup and Recovery):物理备份和恢复是最常用的数据迁移方法之一、它基于数据库的物理结构,通过将数据文件、控制文件和日志文件等直接复制到目标数据库来完成数据迁移。
具体步骤如下:(1)在源数据库上执行全量备份,包括数据文件、控制文件和日志文件。
(2)将备份文件传输到目标数据库主机。
(3)在目标数据库上恢复备份文件。
物理备份和恢复的优点是速度快,适用于大规模数据迁移,但缺点是需要额外的存储空间以及停机时间。
2. 逻辑备份和恢复(Logical Backup and Recovery):逻辑备份和恢复是另一种常用的数据迁移方法,它基于逻辑结构,通过导出和导入数据来完成数据迁移。
具体步骤如下:(1) 在源数据库上执行逻辑备份,例如使用expdp命令将数据导出为数据泵文件。
(2)将数据泵文件传输到目标数据库主机。
(3) 在目标数据库上执行逻辑恢复,例如使用impdp命令将数据导入。
逻辑备份和恢复的优点是可以选择性地备份和恢复数据,不需要额外的存储空间,但缺点是速度较慢,适用于小规模数据迁移。
3. 逻辑复制(Logical Replication):逻辑复制是一种将源数据库的数据变更应用到目标数据库的方法,它可以实时地将数据更新传输到目标数据库。
具体步骤如下:(1) 在源数据库上启用逻辑复制功能,例如使用Oracle GoldenGate或Oracle Streams。
(2)配置源数据库和目标数据库之间的连接。
(3)在目标数据库上创建复制进程,用于接收源数据库发送的数据变更。
(4)启动复制进程,开始数据复制。
逻辑复制的优点是实时性好,可以减少停机时间,但缺点是配置和管理复杂,需要考虑数据一致性和传输性能等问题。
Oracle不同版本之间Export & Import的兼容性矩阵目的-------本文描述了Oracle版本不同之间EXPORT 和 IMPORT工具的兼容性问题. 应用范围-------------------本文适用于Oracle7, Oracle8, Oracle8i, Oracle9i, and Oracle 10g数据库环境,应用于使用数据库导出/导入工具将数据从 x 版本导出,然后导入到 y 版本的情形。
本文指出了应该使用什么版本的工具来执行数据的导出/导入,以及在导出数据之前如何准备Oracle数据字典。
对于转换表空间的导出/导入,请参考Note 291024.1 "使用导出/导入工具转换表空间的兼容性和新特性"摘要-------1. 使用低版本的导出工具导出数据的情形.2. 使用目标数据库的导入工具导入数据.3. 不再支持使用Oracle7导出工具导出Oracle9i数据库.不同Oracle版本下Export & Import的兼容性矩阵--------------------------------------------------------------------------介绍.-------------使用Oracle导出/导入工具,你可以在数据库之间传输数据,即使这些数据库位于不同的软/硬件环境下.Oracle导出工具从Oracle数据库中提取对象定义、表数据并以二进制的Or acle导出文件格式保存到文件或磁带上。
这些文件可以通过FTP或者物理转换(磁带的情形)传送到不同的地方。
当通过网络传输导出文件的时候,必须使用二进制模式,当使用ASCII模式传输会导致导入数据时出现错误,类似 IMP-9 或 IMP-10,后面跟着是 IMP-0.Oracle导入工具从导出文件中读取对象定义和表数据,然后插入到Oracle 数据库中.从Oracle10g Release 1 (10.1.0.x)开始,我们提供新的Export Dat aPump (expdp) 和Import DataPump (impdp) 工具.使用Export DataPump导出的文件只能被Import DataPump读取.并且使用Export DataPump导出的文件也只能被对应版本的Import Data Pump客户端读取。
11G备份文件导入10G数据库方法----HRP项目研发中心(董珮)一、问题背景描述HIS为8I,因此HRP数据库为10G才能连接,现欲将11G数据库数据备份文件导入至10G数据库中,备份文件是使用EXP命令导出,使用IMP导入时报错“IMP-00010: 不是有效的导出文件, 头部验证失败;IMP-00000: 未成功终止导入”二、原因分析ORACLE 11G使用EXP命令导出的DMP文件会有一个版本号信息,导入的时候会对此版本信息进行验证,如果DMP文件的版本信息和当前使用的版本号不一致,则会报出上述错误,以下提供几种解决方案供参考。
三、解决方案(提供三种解决方法用于不同情况下)➢直接修改文件头部版本号信息1.使用select * from v$version; 查询目的数据库版本号:10.02.01;2.用UltraEdit、Notepad++等工具打开dmp文件,可以看到头部信息为:11gR2:V11.02.00,这就是源数据库的版本号,修改为目的数据库的版本号:10.02.01,保存该文件;3.将2保存的DMP文件使用imp命令重新导入,即可导入成功。
注:该方法只适用于DMP文件较小时使用,如果DMP文件过大,UltraEdit、Notepad++等工具均无法打开该文件。
➢使用ORACLE10G客户端导出DMP文件使用oracle10g的客户端连接到11g的服务器把数据导出来,这时候导出的数据文件再用相同的客户端导入到10g中。
注:该方法适用于10G客户端可以直接连通到服务器的情况下➢使用expdp/impdp命令备份数据1.在源数据库创建备份文件路径并赋权create directory expdp_dir as 'd:\orabak\dump';grant read,write on directory expdp_dir to yxt ;2.导出源数据库(导出命令中标识出版本号)expdp yxt/123456@kyeeyxt schemas=yxt directory=expdp_dirdumpfile=20151028.dmp logfile=20151028.log version=10.2.0.1.0(目标数据库版本号)。
Oracle 数据库迁移指南Oracle 数据库迁移指南我们常需要对数据进行迁移,迁移到更加高级的主机上,迁移到远程的机房上或者迁 移到不同的平台下.在 Oracle DBA 的日常任务中,数据库迁移也是一项非常重要的工作. 为此,我们对 Oracle 数据库迁移方面的技巧以及策略进行了一定的总结,并列举出一些 在迁移过程中常见的错误,供大家参考,希望能为 DBA 在进行数据库迁移时提供一些灵感.Oracle 数据库迁移基础知识在开始展开数据库迁移工作之前,你必须对这部分任务的基础内容有一个较为详细的 了解,正所谓"不打无准备之仗",在这一部分中,我们将对 Oracle 数据库迁移一些较 为基础的知识进行介绍. 初学者的数据迁移问题 Oracle 数据库迁移几种方式 Oracle 数据库迁移与就地升级方法讨论Oracle 专家建议Oracle 数据库迁移是一项十分复杂的工程,因此相关经验是很重要的.在这一部分中, 我们将汇总 Oracle 专家针对具体问题的经验与心得,这对于 DBA 来说是相当有价值的参 考. 升级过程中的数据迁移,代码迁移和性能调优问题 使用 Oracle 可传输表空间进行数据库迁移 使用 RMAN 转换命令对 Oracle 数据库进行迁移 从 Unix 到 Linux 的 Oracle 数据库迁移/升级TT 数据库技术专题之"Oracle 数据库迁移指南"Page 2 of 23迁移基于 Oracle 数据库的应用到开源数据库 升级过程中加速启动迁移程序 48 小时迁移 2TB 数据库迁移过程中的常见错误Oracle 有着丰富的错误代码库,无数 Oracle DBA 都饱受这些错误代码的折磨,当然 在进行数据库迁移时也不例外,在这里我们总结了一些比较常见的 Oracle 数据库迁移错 误,读者可以引以为戒. 数据库迁移过程中出现 OIP-00005 错误 数据库迁移中的 ORA-01034 错误 迁出数据库时出现 ORA-06550 错误TT 数据库技术专题之"Oracle 数据库迁移指南"Page 3 of 23初学者的数据迁移问题问:您好!我在数据迁移领域是个新手.我们有多个 Oracle 数据库.为了更好地组 织所有东西(数据,应用等),给用户提供统一的服务,我们正在寻求各种可选的措施. 我有几个问题: 1. 什么情况下,我们应该把数据放到一个数据库里? 2. 集成数据库,应用和展现层的优缺点是什么?各自合适的时机是什么情况? 任何有关的建议都可以.非常感谢. 答:有一些问题你要先搞清楚: 1. 这些数据库之间有任何形式的关联吗? 2. 你用到跨多数据库的事务了吗? 3. 这些数据库的用途是什么(例如 DSS,或者 OLTP,或者混合模式)? 如果问题(1)和(或者)问题(2)的回答是"是",并且数据库的负载都差不多的 话,我建议最好合并数据库.即便负载不一样,你可以用资源管理器检查各自占用资源. 曾经在一个网站上,我用了五个独立但有业务关联关系的数据库组成了一个非常大的数据 仓库.我把这五个数据库合并到了一起(保留它们属于不同的 schema).合并后的数据库 尽管大,但是易于管理,而且大部分查询和加载数据处理的性能得到了改善.(作者:Harish Harbham 译者:冯昀晖 来源:TT 中国)原文标题:初学者的数据迁移问题 链接:/showcontent_21402.htmTT 数据库技术专题之"Oracle 数据库迁移指南"Page 4 of 23Oracle 数据库迁移几种方式我们常需要对数据进行迁移,迁移到更加高级的主机上,迁移到远程的机房上,迁移 到不同的平台下 一,exp/imp: 这也算是最常用最简单的方法了,一般是基于应用的 owner 级做导出导入. 操作方法为:在新库建立好 owner 和表空间,停老库的应用,在老库做 exp user/pwd owner=XXX file=exp_xxx.dmp log=exp_xxx.log buffer=6000000,传 dmp 文件到新库, 在新库做 imp user/pwd fromuser=XXX touser=XXX file=exp_xxx.dmp log=imp_xxx.log ignore=y. 优缺点:优点是可以跨平台使用;缺点是停机时间长,停机时间为从 exp 到网络传输 到新库,再加上 imp 的时间. 二,存储迁移: 这种情况下,数据文件,控制文件,日志文件,spfile 都在存储上(一般情况下是裸 设备),我们可以直接把存储挂到新机器上,然后在新机器上启动数据库. 操作方法:将老库的 pfile(因为里面有指向裸设备的 spfile 链接),tnsnames.ora, listener.ora,密码文件传到新库的对应位置.将存储切至新机,或者用文件拷贝或 dd 的方式复制数据文件,启动数据库. 优缺点:优点是该迁移方式非常简单,主要的工作是主机工程师的工作,dba 只需配 合即可,停机时间为当库,切存储,起库的时间.缺点是要求新老库都是同一平台,是相 同的数据库版本. 三,利用 data guard 迁移: 用 dg 我们不仅可以用来做容灾,物理的 dg 我们还可以作为迁移的方式.TT 数据库技术专题之"Oracle 数据库迁移指南"Page 5 of 23操作方法:可见 /study-note/dg-created-by-rman/或者 /study-note/create-dg-by-rman-one-datafile-by-onedatafile/或者其他相关网文.注意 switch over 之后,可以将 dg 拆掉,去掉 log_archive_dest_2,FAL_SERVER,FAL_CLIENT,standby_file_management 参数.另外 还要注意如果用 rman 做 dg,注意手工添加 tempfile. 优缺点:优点是停机时间短,停机时间为 switch over 的时间.缺点:主机必须双份, 存储必须双份. 四,用 rman 做迁移: rman 比较适合于跨文件系统的迁移,如同平台下的不同文件系统. 操作方法: 1.停第三方的归档备份,如 legato 或 dp 2.backup 数据库: 在一次周末的课程试验中,频繁的看到 Data file init write 等待事件. 在这里做一点记录说明,以下是来自跟踪文件的记录信息:WAIT #2: nam='Data file init write' ela= 13031 count=1 intr=256 timeout=1 obj#=51706 tim=6068271611 WAIT #2: nam='Data file init write' ela= 118163 count=1 intr=256 timeout=1 obj#=51706 tim=6068392491 WAIT #2: nam='Data file init write' ela= 94036 count=1 intr=256 timeout=1 obj#=51706 tim=6068490286 WAIT #2: nam='Data file init write' ela= 52412 count=1 intr=256 timeout=1 obj#=51706 tim=6068545333TT 数据库技术专题之"Oracle 数据库迁移指南"Page 6 of 23WAIT #2: nam='Data file init write' ela= 4 count=0 intr=32 timeout=214748364 7 obj#=51706 tim=6068545596 WAIT #2: nam='Data file init write' ela= 26 count=1 intr=32 timeout=21474836 47 obj#=51706 tim=6068545641 WAIT #2: nam='Data file init write' ela= 101743 count=1 intr=256 timeout=1 obj#=51706 tim=6068648487 WAIT #2: nam='Data file init write' ela= 44854 count=1 intr=256 timeout=1 obj#=51706 tim=6068694281 WAIT #2: nam='Data file init write' ela= 52841 count=1 intr=256 timeout=1 obj#=51706 tim=6068748054 WAIT #2: nam='Data file init write' ela= 48984 count=1 intr=256 timeout=1 obj#=51706 tim=6068798310 WAIT #2: nam='Data file init write' ela= 3 count=0 intr=32 timeout=214748364 7 obj#=51706 tim=6068798365 WAIT #2: nam='Data file init write' ela= 26 count=1 intr=32 timeout=21474836 47 obj#=51706 tim=6068798409 WAIT #2: nam='Data file init write' ela= 101899 count=1 intr=256 timeout=1 obj#=51706 tim=6068900931 WAIT #2: nam='Data file init write' ela= 21 count=1 intr=32 timeout=2147483647 obj#=51706 tim=6068901053测试数据库是 Oracle10g 10.2.0.3,实际上这个等待事件也是从 Oracle 10g 开始引 入的,用来标识表空间或数据文件扩展时的等待. Oracle 需要将系统块格式化为 Oracle 数据块,然后才能提供数据库使用. 在这个流程处理中,Oracle 经过如下三个步骤: 1.扩展数据文件 select file# from file$ where ts#=:1TT 数据库技术专题之"Oracle 数据库迁移指南"Page 7 of 232.更新用户空间限额 update tsq$ set blocks=:3,maxblocks=:4,grantor#=:5,priv1=:6,priv2=:7,priv3=:8 where ts#=:1 and user#=:2 3.扩展数据段 update seg$ set type#=:4,blocks=:5,extents=:6,minexts=:7,maxexts=:8,extsize=:9,extpct=:10,user #=:11,iniexts=:12,lists=decode(:13, 65535, NULL, :13),groups=decode(:14, 65535, NULL, :14), cachehint=:15, hwmincr=:16, spare1=DECODE(:17,0,NULL,:17),scanhint=:18 where ts#=:1 and file#=:2 and block#=:3 这就是 Oracle10g 中空间扩展时内部流程.TT 数据库技术专题之"Oracle 数据库迁移指南"Page 8 of 23Oracle 数据库迁移与就地升级方法讨论进行 Oracle 数据库升级时,有两种方法可以考虑.有些管理员倾向于选择"就地升 级"方式,就是在现有版本基础上,在同一台机器上安装最新的升级版本.有些管理员则 选择进行数据库"迁移"来完成升级,最新版本的数据库安装在一台新硬件上,你需要做 的是把原有的数据迁移到新的数据库当中.乍一看来,就地升级的方法好像能更简单更迅 速地完成升级工作,但是这种方法也有自己的缺点. 首先,就地升级所需要的停机时间比较长,在整个升级过程中,Oracle 数据库都处于 不可用状态.而且测试就地升级的过程比较困难,数据库管理员需要处理大量的实时数据, 在测试升级过程时还需要把数据库设置成脱机状态.其次,就地升级往往会导致性能的衰 减.新版本的软件对硬件的需求会增加,而不更换硬件就自然会导致性能的下降. 就地升级相对来说比较难以复原,如果在升级过程中出现重大问题或数据损坏时,想 要复原旧的数据库或恢复到升级前的状态就需要一个漫长的备份恢复过程.总而言之,就 地升级需要投入更多的时间和人力物力,不太容易预算其成本,在遇到故障问题时可回旋 的余地也比较小.节省下来的硬件更新成本往往花在了人力上,有时升级需要的钱都超过 了更换硬件的预算. 在进行迁移升级时,虽然会在硬件上花费一些钱,但是这绝对是物有所值的.很明显, 迁移升级最大的优势就是速度.新硬件的速度肯定比原有的要快得多.而且还有一点就是 新硬件都在保修期内,自然会比老硬件更可靠. 新硬件往往也可以进行升级.比如,随着新服务器的部署,上面的操作系统,驱动程 序和相关软件都是最新版本的,这就会让性能更加优越,还可以实现更多的功能.另外, 新硬件有着更好的嵌入式管理能力,比如 Intel's VPRO 和其它一些远程控制特性. 新硬件为升级过程提供了一个清晰路径,这无疑对整个升级过程十分有利.因为旧的 硬件不需要做任何修改,在升级过程中如果出现什么问题,旧的数据库也不会受到影响. 新硬件还可以为升级提供一个测试环境,并对升级的可行性做出评估.在权衡以上两种升 级方法之后,相信大多数的管理员会倾向于选择更新硬件的迁移升级方法.TT 数据库技术专题之"Oracle 数据库迁移指南"Page 9 of 23(作者:Frank Ohlhorst 译者:孙瑞 来源:TT 中国)原文标题:Oracle 数据库迁移与就地升级方法讨论 链接:/showcontent_22919.htmTT 数据库技术专题之"Oracle 数据库迁移指南"Page 10 of 23升级过程中的数据迁移、代码迁移和性能调优问题问:我们正在准备迁移到Oracle 10 RAC。
oracle不同版本间数据的导入导出Oracle的imp/exp组件是我们常用的工具,它的一个操作原则就是向下兼容。
下面是据此总结的几个使用规则和相关测试:规则1:低版本的exp/imp可以连接到高版本(或同版本)的数据库服务器,但高版本的exp/imp 不能连接到低版本的数据库服务器--1.1 使用9i客户端通过imp连接到10g数据库C:\Documents and Settings\yuechaotian>exp userid=hdtest/test@s67 tables=(ab01) rows=n file=d:\x.dmpExport: Release 9.2.0.1.0 - Production on 星期三2月20 10:09:55 2008Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options已导出ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集注: 将不会导出表数据(行)即将导出指定的表通过常规路径.... . 正在导出表AB01在没有警告的情况下成功终止导出。
--1.2 使用10g客户端通过imp连接9i数据库:连接失败(而不是导出失败)C:\Documents and Settings\yuechaotian>exp userid=hbjb_kf_hd/test@s46 owner=hdtestfile=d:\x.dmpExport: Release 10.2.0.1.0 - Production on 星期三2月20 09:57:22 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.EX P-00056: 遇到ORACLE 错误6550ORA-06550: 第 1 行, 第41 列:PLS-00302: 必须说明''SET_NO_OUTLINES'' 组件ORA-06550: 第 1 行, 第15 列:PL/SQL: Statement ignoredEX P-00000: 导出终止失败规则2:高版本exp出的dmp文件,低版本无法imp(无法识别dmp文件)--2.1 使用10g客户端exp出10g的数据C:\Documents and Settings\yuechaotian>exp userid=test/test@orcl owner=testfile=d:\10g.dmpExport: Release 10.2.0.1.0 - Production on 星期三2月20 11:16:39 2008Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options已导出ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集服务器使用AL32UTF8 字符集(可能的字符集转换)即将导出指定的用户...……导出成功终止, 但出现警告。
oracle数据库导⼊导出⽅法Oracle Database 10g以后引⼊了最新的数据泵(Data Dump)技术,使DBA或开发⼈员可以将数据库元数据(对象定义)和数据快速移动到另⼀个oracle数据库中。
数据泵导出导⼊(EXPDP和IMPDP)的作⽤ 1、实现逻辑备份和逻辑恢复。
2、在数据库⽤户之间移动对象。
3、在数据库之间移动对象 4、实现表空间搬移。
数据泵导出导⼊与传统导出导⼊的区别:在10g之前,传统的导出和导⼊分别使⽤EXP⼯具和IMP⼯具,从10g开始,不仅保留了原有的EXP和IMP⼯具,还提供了数据泵导出导⼊⼯具EXPDP和IMPDP.使⽤EXPDP和IMPDP时应该注意的事项;EXP和IMP是客户段⼯具程序,它们既可以在客户端使⽤,也可以在服务器段使⽤。
EXPDP和IMPDP是服务端的⼯具程序,他们只能在ORACLE服务端使⽤,不能在客户端使⽤IMP只适⽤于EXP导出⽂件,不适⽤于EXPDP导出⽂件;IMPDP只适⽤于EXPDP导出⽂件,⽽不适⽤于EXP导出⽂件。
今天我在导⼊同事给我的数据⽂件时,总是报IMP-00038错误,提⽰,⽆法转换为环境字符集句柄,造成这种错误的原因⼀般是数据库版本不匹配,但是我们使⽤的都是oracle11g,就排除了这种可能。
最后发现原因是他是使⽤数据泵导出的数据⽂件,⽽我使⽤传统imp命令导⼊是不可以的,后续改为使⽤impdp数据泵导⼊成功。
下⾯是我使⽤数据泵导⼊数据⽂件的完整过程:1、使⽤system⽤户登录数据库,创建新⽤户usertest(新建⽤户时⽤户名最好和数据⽂件导出时的⽤户名相同),表空间可以使⽤系统默认的也可以⾃⼰新建⼀个表空间。
sql代码如下:新建⽤户使⽤oracle默认表空间:create user usertest identified by usertest;新建表空间:create tablespace user_alldatafile 'D:/dev/oracle/tablespace/user_all.dbf'size 300Mautoextend onnext 50Mmaxsize unlimited新建⽤户(设置默认表空间):create user usertest identified by usertest default tablespace user_all;2、对新建的⽤户赋权限,dba、connect、resource。
数据迁移_把RAC环境备份的数据,恢复到另一台单机Oracle本地文件系统下数据迁移_把RAC环境备份的数据,恢复到另一台单机Oracle本地文件系统下作者:Eric微信:loveoracle11g1、创建pfile文件# su - ora11g# cd $ORACLE_HOME/dbs# vim initedms.ora--------------------------------粘贴复制--------------------------------db_name='edms'memory_target=1Gprocesses=150audit_file_dest='/ora11g/app/oracle/admin/edms/adump' audit_trail='db'db_block_size=8192db_domain=''db_recovery_file_dest='/ora11g/app/oracle/flash_recovery_ area'db_recovery_file_dest_size=2Gdiagnostic_dest='/ora11g/app/oracle'dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'open_cursors=300remote_login_passwordfile='EXCLUSIVE'undo_tablespace='UNDOTBS1'control_files=('/ora11g/app/oracle/oradata/edms/ora_contr ol1.ctl','/ora11g/app/oracle/oradata/edms/ora_control2.ctl') compatible='11.2.0.4'log_archive_dest_1='location=/ora11g/app/oracle/oradata/ arch'创建参数文件中用到的目录mkdir -p /ora11g/app/oracle/admin/edms/adumpmkdir -p /ora11g/app/oracle/oradata/edmsmkdir -p /ora11g/app/oracle/flash_recovery_area登录sqlplus以修改后的pfile启动数据库到nomount# export ORACLE_SID=edms# sqlplus / as sysdbaSQL> startup nomount force ;SQL> create spfile from pfile ;SQL> show parameter spfile ;SQL> exit ;2、恢复控制文件controlfile登录rman执行恢复最新的控制文件# ls -ltr /backup/rman/edms/ctl*-rw-r-----. 1 ora11g oinstall 18939904 Nov 22 16:56 /backup/rman/edms/ctl_file_0qtijmsh_1_1_20181119.bak确定最新的控制文件备份# export ORACLE_SID=edms# rman target /RMAN> restore controlfile from '/backup/rman/edms/ctl_file_0qtijmsh_1_1_20181119.bak' ;RMAN> alter database mount ;3、恢复数据文件在rman里面敲RMAN> catalog start with '/backup/rman/edms/' ;输入:yesrun {allocate channel c1 device type DISK;allocate channel c2 device type DISK;allocate channel c3 device type DISK;allocate channel c4 device type DISK;SET NEWNAME FOR DATABASE TO '/ora11g/app/oracle/oradata/edms/%U';restore database;switch datafile all;switch tempfile all;set until time "TO_DATE('11/19/2018 10:00:00', 'MM/DD/YYYY HH24:MI:SS')";recover database delete archivelog;release channel c1;release channel c2;release channel c3;release channel c4;}月/日/年时:分:秒4、重命名Redo log文件SQL> set linesize 200SQL> select 'alter database rename file '''||MEMBER||''' to '''||'/ora11g/app/oracle/oradata/edms/'||regexp_substr(MEMBER ,'[^\/] ',1,4)||''';' from v$logfile;'ALTERDATABASERENAMEFILE'''||MEMBER||'''TO'''||'/ORA11G /APP/ORACLE/ORADATA/EDMS/'||REGEXP_SUBSTR(MEMBER,'[^ \/] ',1,4)||''';'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- alter database rename file ' DATADG/edms/onlinelog/group_5.358.989230181' to '/ora11g/app/oracle/oradata/edms/group_5.358.989230181';alter database rename file ' FRADG/edms/onlinelog/group_5.1297.989230181' to '/ora11g/app/oracle/oradata/edms/group_5.1297.989230181';alter database rename file ' DATADG/edms/onlinelog/group_2.357.989230179' to'/ora11g/app/oracle/oradata/edms/group_2.357.989230179';alter database rename file ' FRADG/edms/onlinelog/group_2.510.989230179' to '/ora11g/app/oracle/oradata/edms/group_2.510.989230179';alter database rename file ' DATADG/edms/onlinelog/group_1.356.989230179' to '/ora11g/app/oracle/oradata/edms/group_1.356.989230179';alter database rename file ' FRADG/edms/onlinelog/group_1.1352.989230179' to '/ora11g/app/oracle/oradata/edms/group_1.1352.989230179';alter database rename file ' DATADG/edms/onlinelog/group_3.361.989230385' to '/ora11g/app/oracle/oradata/edms/group_3.361.989230385';alter database rename file ' FRADG/edms/onlinelog/group_3.1474.989230387' to '/ora11g/app/oracle/oradata/edms/group_3.1474.989230387';alter database rename file ' DATADG/edms/onlinelog/group_4.362.989230387' to '/ora11g/app/oracle/oradata/edms/group_4.362.989230387';alter database rename file ' FRADG/edms/onlinelog/group_4.1371.989230387' to '/ora11g/app/oracle/oradata/edms/group_4.1371.989230387';alter database rename file ' DATADG/edms/onlinelog/group_6.363.989230387' to '/ora11g/app/oracle/oradata/edms/group_6.363.989230387';alter database rename file ' FRADG/edms/onlinelog/group_6.832.989230387' to '/ora11g/app/oracle/oradata/edms/group_6.832.989230387';12 rows selected.执行上面生成的sql上面有几个,就创建几个日志组,上面有6个。
在关于不同版本的数据库迁移目的在不同版本的数据库之间进行导入和导出的时候存在的兼容性问题。
应用范围本文用于实现在oracle7,oracle8,oracle8i,oracle9i,oracle10g和oracle11g 数据库上进行的导入/导出功能,也就是说将数据从版本为X的数据库中导出,然后再数据导入到版本为Y的数据库中去。
同时也提供了在执行导入/导出功能时,相关的一些版本的使用情况和在进行数据导出的时候需要进行哪些的准备工作。
在不同版本的数据库进行导入和导出的兼容性问题兼容性概要1. 用具有导出功能的数据库将数据导出2. 用具有导入功能的目标数据库将数据导入3. Export data dump生成的dump文件和由原来的导出工具生成的dump文件不兼容4. oracle7的导出工具不支持从oracle9i以及更高的版本导出数据客户端介绍1. 导出/导入客户端使用oracle的导出/导入功能我们可以在不同的数据库间进行数据对象的迁移,即使他们所使用的硬件平台和软件配置不一样。
Oracle的导出工具从数据库中提取对象定义以及表数据,把他们存储在一个oracle的二进制导出转存文件里这个文件一般放在磁盘或者磁带当中。
我们也可以使用FTP或者物理传输(如果是磁带的话)把这个文件传到另外一个站点中去。
导出转存文件在网络中传输时必须以二进制的形式存在。
如果导出文件是以字符模式(ASCII)形式传输的话当进行文件导入的时候就会引起错误,这些错误结果可能是IMP-9或者IMP-10 紧接在错误IMP-0后。
Oracle的导入工具从导出转存文件中读取数据定义以及表数据然后把这些信息插入到目标数据库中去。
2. 导入/导出数据泵从oracle 10g 的第一个版本(10.1.1.x)开始,ORACLE引入了导出数据泵(expdp)和导入数据泵(impdp)功能。
由导出数据泵创建的导出泵文件只能被导入数据泵所读取,由原来的导出功能创建的导出泵文件是不能被导入数据泵的客户端所读取的。
Oracle 11G数据库导出问题解决oracle11g数据库导出问题解决一:11g数据库dmp文件导出问题问题描述:windows2021r2无法正常加装64十一位oracle10g,只可以加装64十一位11g和32十一位10g(兼容性模式)。
由于我们习惯用10g客户端相连接11g数据库展开建立表中空间等有关操作方式,此时求出存有一个问题:通过exp命令求出的dmp版本与客户端版本有关,如果10g客户端相连接另一台服务器上的11g数据库通过exp求出dmp文件在完结后可以提示信息“切换外溢数据类型错误”,这就是因客户端(10g)和数据库(11g)版本号不一致引致。
但如果客户端和数据库在同一服务器,求出时会通过环境变量去挑选调用适当版本的exp程序,我们在求出窗口中也可以看见适当版本号。
所以客户端和数据库在一台服务器时,求出完结后通常不能存有问题(由于环境变量的布局而调用了11g数据库的exp程序)。
问题解决:方法一:求出11g数据库的dmp文件中无法涵盖空表,可以使用以下方法化解:求出前在plsql中继续执行以下语句,用以查阅当前用户下数据库中所有空表:select'altertable'||table_name||'allocateextent;'fromuser_tableswherenum_rows=0将查询出的结果中生成的语句复制到sql窗口中执行,通过给所有空表分配空间的方式就可以通过exp命令成功导出空表。
对于加装oracle11g的2021r2服务器,如果数据库和客户端拆分,可以在客户端服务器加装一个11g客户端,再协调上面的方法,就可以正常求出涵盖空表的dmp文件,并且因为调用的就是11g客户端的exp命令,求出完结也不收起。
但由于导出所用的exp版本号为11g,直接将dmp文件导入10g会提示头部验证失败:可以用notepad++修正版本号用imp引入10g数据库,经测试引入并无错误提示信息,登入系统可以正常采用。