Oracle 导出导入迁移方案V1.4
Oracle 数据泵导出导入迁移方案适用版本 Oracle 10g/11g/12c 目 录第1章概述第2章数据泵Data Pump技术介绍2.1数据泵Data Pump原理2.2数据泵Data Pump使用场景2.3数据泵Data Pump兼容性2.4数据泵Data Pump参数介绍2.4.1导出导入常见问题和场景2.4.2导出命令说明2.4.3导入命令说明2.4.4导出命令举例以及常用参数介绍2.4.5导入命令举例以及常用参数介绍2.5数据泵迁移流程介绍第3章系统割接信息采集3.1源端系统信息表3.2源数据库信息采集3.2.1导出导入目录及所在磁盘大小3.3源端数据库信息采集方法3.3.1查看数据库的SID3.3.2查看字符集3.3.3查看数据库容量3.3.4查看表空间3.3.5查看临时表空间和临时表空间组3.3.6查询数据文件路径及对应表空间名称3.3.7查看最大会话数3.3.8获取导出导入目录(Directory)以及所在磁盘的大小3.3.9获取业务系统用户3.3.10查询对应业务用户非数据库默认的profile/role3.3.11查询db_link连接串配置方式第4章目标数据库准备4.1创建导出导入目录4.2创建表空间4.2.1创建数据表空间4.2.2创建临时表空间第5章迁移时间安排5.1预估导出导入数据的时间5.2迁移时间安排表第6章数据库迁移实施6.1割接前检查6.1.1割接前的数据库状态检查6.1.2割接前RAC状态检查6.2避免业务数据产生(源端)6.2.1停止业务应用6.2.2锁定业务用户6.2.3禁用后台job6.2.4断开连接的会话6.3迁移方案1:使用转储文件6.3.1转储迁移模式步骤6.3.2数据库导出(源端)6.3.3导出文件传输6.3.4数据库导入(目标端)6.4迁移方案2:使用网络模式6.4.1网络迁移模式步骤6.4.2创建db_link(目标端)6.4.3导入数据(目标端)6.5目标库编译失效对象6.6解锁业务用户第7章迁移业务割接7.1关联系统变更7.2业务系统迁移7.2.1操作人员及影响7.2.2业务系统迁移7.3业务验证7.3.1操作人员及影响7.3.2业务系统验证7.4业务回退7.4.1操作人员及影响7.4.2业务回退操作步骤iv 第1章 概述该手册主要指导一线技术人员和客服专家团队完成Oracle数据库导出导入方式的迁移工作。第2章 数据泵Data Pump技术介绍2.1 数据泵Data Pump原理Oracle Database 10g中采用了数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中。一、 数据泵导出导入(EXPDP和IMPDP)的作用:1、实现逻辑备份和逻辑恢复。2、在数据库用户之间移动对象。3、在数据库之间移动对象。4、实现表空间搬移。二、 数据泵导出导入与传统导出导入的区别:1、在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,增加了数据泵导出导入工具EXPDP和IMPDP。2、EXP和IMP是客户段工具程序,它们既可以在客户端使用,也可以在服务器端使用。3、EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。4、IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。2.2 数据泵Data Pump使用场景适用于业务和数据库分离部署的场景,业务系统采用P2V迁移,数据库使用Data Pump迁移,以及数据量小于500G的Oracle数据库迁移。2.3 数据泵Data Pump兼容性Oracle 10g以后的版本,支持单机和rac版本,linux、unix和windows平台同样支持,而且支持跨平台迁移。2.4 数据泵Data Pump参数介绍2.4.1 导出导入常见问题和场景1、编写导出导入脚本忘记参数用法解决方法:用expdp help=y或者impdp help=y可以在cmd或shell轻松获取Data Pump参数信息。2、如何预估导出文件大小解决方法:可使用ESTIMATE参数预先评估导出文件大小,参数用法见2.4.4小节。或者通过查询源库大小来预估导出文件大小,导出文件小于源库数据量大小,具体比值视表和表空间预占用的情况而定。3、一个服务器安装多个实例的场景场景说明:有部分客户购买的物理服务器资源配置比较充足,一个物理服务器跑一套实例存在资源浪费,所有就可能出现一套物理服务器安装多个数据库实例的场景。解决方法:在这种情况下做导出导入的迁移时要注意export或set来改变ORACLE_SID否则可能导出其他实例的用户或者将用户导入其他的实例。Linux export ORACLE_SID:oracledbserver01 dumpdir$ export ORACLE_SID=db11goracledbserver01 dumpdir$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Mon Apr 23 12:07:38 2018Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning, Automatic Storage Management, OLAP, Data Miningand Real Application Testing optionsSQL> show parameter instance_nameNAME TYPE VALUE- - -instance_name string db11gSQL>如果是Windows系统则在cmd下执行set命令即可,即将“export ORACLE_SID=db11g”的export换成set。4、只导出数据对象不导出数据的场景场景说明:有时用户会要求只导出某数据表的结构,不导出数据。POC测试时也可能只迁移业务系统数据表结构,不迁移数据。解决办法:可使用CONTENT参数来实现,参数用法见2.4.4小节。5、导出时排除某个特定数据对象类型或某个特定数据对象场景说明:比如客户有个日志表数据量很大,有几十GB。若导出此表需要耗费大量时间,考虑到日志表非业务数据,故客户决定该表不做迁移,只在源数据库保留。这种情况导出时需要exclude(排除)该表。解决方法:可使用EXCLUDE参数来实现,参数用法见2.4.4小节。6、如何终止导出或导入任务场景说明:导出或导入任务已运行,遇到不得不停止的情况,比如导出语句中少写了某个业务用户。解决方法: Ctrl + C 进入expdp/impdp 的export 命令模式,在该模式下可以输入kill_job或stop_job=immediate来结束导入导出命令。参数详细用法见2.4.4小节。7、导入某个用户或表时发现用户已创建,数据表已存在场景说明:测试时已迁移客户生产数据到测试环境,然而几天后,客户提需求说需要最新生产数据来测试,个别几个表需要迁移最新的生产数据到测试环境。此时需要将导出的最新数据导入测试环境,然而测试环境中已经存在此类表,导入时必定报错(表和视图已存在)。解决方法:可以删除测试环境中的相关表,再做导入,或者导入(impdp)时加入table_exists_action参数来进行处理,显然采用后者是最方便的。参数详细用法见2.4.5小节。8、重新映射表空间名称或者用户名称场景说明:用户导出A用户,却需要将A的数据导入B用户或者说将A用户重命名为B用户。用户导出A用户,A的数据是放在TBS_01表空间的,但在导入时用户提出将TBS_01表空间的数据全部转移到TBS_02上。解决方法:诸如此类导入需求可以通过Remap相关参数实现,Remap_tablespace可以重新映射表空间,包括临时表空间。Remap_schema可以重新映射用户。参数详细用法见2.4.5小节。2.4.2 导出命令说明导出命令在windows的cmd下和linux的shell环境执行expdp help=y可以寻求帮助,该帮助文档对命令及参数进行了详细的说明。rootdbserver01 # su - oracleoracledbserver01 $ expdp help=yExport: Release 11.2.0.4.0 - Production on Fri Apr 20 16:25:28 2018Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.The Data Pump export utility provides a mechanism for transferring data objectsbetween Oracle databases. The utility is invoked with the following command: Example: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmpYou can control how Export runs by entering the expdp command followedby various parameters. To specify parameters, you use keywords: Format: expdp KEYWORD=value or KEYWORD=(value1,value2,.,valueN) Example: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=sco