搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
我家小花儿
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
如何应用OceanBase 的实时SQL诊断,解决AP场景下的痛点
2
peft lora微调代码解析,llama2-7b lora微调实战_module peft.tuners.lora has no attribute layer
3
stable diffusion——采样器【学习笔记】_stable diffusion 采样器
4
【docker】关于挂载
5
OceanBase V4.2特性解析:简化分区表重命名功能_oceanbase3.2.4和4.2.1语法区别
6
[GO项目]开源免费在线客服系统-真正免费开源-GOFLY0.3.2发布-极简强大Go语言开发网页客服...
7
【Arduino】实验使用ESP32单片机连接Wifi(图文)_ardiunowife模块
8
数字化转型案例:源自阿里,中台设计流程及方法
9
LDPC的介绍
10
mysql util_新特性解读 | MySQL 8.0 shell util 特性
当前位置:
article
> 正文
Oracle数据迁移_oracle整库迁移到新机器
作者:我家小花儿 | 2024-08-22 00:36:01
赞
踩
oracle整库迁移到新机器
数据迁移通俗的说就是将数据从一个地方转移到另一个地方。主要使用场景有:根据正式系统搭建测试环境、从内网复制到外网、数据库服务器硬件升级等。根据需要迁移的数据量大小、系统架构,可采取不同的迁移方法。
注:以下所说方法,不考虑数据的增量更新、不考虑数据的实时同步、不考虑数据的逻辑转换。如果有这些需求,建议使用第三方ETL工具或使用Oracle的其他数据同步技术。
一、常用示例
1.1 如何在客户现场搭建测试环境?
常规方案,使用imp/exp工具,先在源库执行直接路径导出操作,然后在目标库执行导入操作。IMP/EXP的执行速度主要受限于磁盘及网络。
数据量:1.5G
导出用时:5分钟
导入用时:23分钟
导出文件大小:641M
导出导入环境:单CPU,700M内存。为力求最大速度,使用直接路径导出、设置最大I/O缓冲、导入导出文件都放在服务器上执行。
1.2 还有没有更快的办法?
有,仍然使用impdp/expdp。只是不再将数据导出后导入,而是直接将数据从源库导入到目的库。
CMD> Impdp testi@目标库 directory=DMPDIR schemas=TESTI
network_link=源库dblink remap_schema=TESTI:TESTA
上面语句的操作是将源库的TESTI用户的数据,导入到目标库的TESTA用户下。
这个操作是局域网内迁移数据最方便的工具,不过也可能是速度最慢的工具。
1.3 有没有还快一点的方法?
有,换用impdp/expdp。同样在源库执行导出,在目标库执行导入。操作速度能得到极大提升。IMPDP/EXPDP速度主要受限于磁盘,与网络无关。
原数据大小:1.5G
expdp导出操作用时:5分钟
impdp导入操作用时:22分钟
导出文件大小:588M
导出导入环境:单CPU,700M内存,并行度 = 1
??你不是说这个会更快么?为什么速度跟1.1的imp/exp差不多啊?
请看第四部分总结的解释。
1.4 你还敢再快一点么?
使用表空间迁移。将表空间的元数据导出,和数据文件一起,复制到新库。执行元数据导入。一般来说,整个导入导出的数据量不到5M。速度相当快,但使用限制比较多。
导出时间:1分钟
导入时间:3分钟
导出文件:60M + 数据文件1.5G
1.5 如何将数据从linux环境转到windows环境?
查看v$transportable_platform,如果数据编码一致,可尝试直接复制数据文件。否则使用rman或impdp/expdp或imp/exp。
1.6 如果你有一个excel格式的数据表,需要远程更新到客户数据库上,怎么更新?
使用pl/sql developer,复制、粘贴、提交。
1.7 如果你需要将正式库的几张表,迁移到测试库来,怎么弄快些?
用dblink+脚本,或者使用impdp远程导入。
二、局部数据的迁移
2.1、广域网的迁移
2.1.1 pl/sql developer
广域网下小数据量的迁移,常用pl/sql developer工具来完成。
在本地打开excel文件,复制数据。然后通过“远程桌面”,到远程服务器的pl/sql界面上粘贴,就可以了。操作简单方便。
第一步:在本地复制数据
第二步:打开远程桌面
第三步:在远程机器的pl/sql里面粘贴数据
第四步:保存数据
这种方法在小数据量下很好用。大数据量时,一个表一个表的粘贴比较麻烦,且一粘贴可能就卡在那里了,得等10来分钟。
2.1.2 imp/exp
广域网内大数据量的迁移,通常使用imp/exp工具。先在源库上使用exp工具,导出数据压缩包,通过网络发送到目标数据库。在目标数据库上再imp。
第一步:本机连接到源库上,执行exp
Exp一般使用直接路径导出,速度可以达到常规路径导出的3倍以上。
参数解释:
Parfile:指定导出的参数配置文件
Log:导出日志输出到哪个文件
recordlength=65535:设置最大I/O缓冲为64K(该参数最大64K)
Direct=y:数据经直接路径导出,不再经SGA导出
Owner=testi:仅导出用户testi的数据。
第二步:本机连接到目标库上,执行imp
Parfile:指定导入的参数配置文件
Log:导入日志输出到哪个文件
Feedback=1000:每导入1000行,在屏幕上输出一个”.”
Buffer=10000000:设置导入缓冲区大小
Fromuser=testi:仅导入testi用户的数据
Touser=testi:将数据导入到新用户testi下。
2.2、局域网内迁移
局域网内的数据迁移,方案比较灵活。常用的方法有:imp/exp、impdp/expdp、dblink+脚本、表空间迁移。
其中imp/exp在2.1.2已有介绍,这里主要介绍其他方法:
2.2.1 dblink+脚本
2.2.1.1 基本介绍
通过dblink将多个分布式数据库连接起来,对外提供统一的服务。可以实现在一个数据库上,访问多个分布式数据库。使用“dblink+脚本”的方法来转移数据,配置灵活,但脚本写起来比较麻烦。需要为每张表单独写脚本。
2.2.1.2 实施方案
主要配置分两步:
1) 创建数据库连接
create database link LINKNAME connect to DBUSER identified by password
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.9)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME =ORCL)
)
)';
2) 执行抽取脚本
如:将表B的数据抽取到表A中。
Create table A as select * from B@LINKNAME;
对每张需要同步的表分别写脚本。
2.2.2 impdp/expdp
2.2.2.1 基本介绍
Impdp/expdp就是imp/exp的升级版,在Oracle 10g开始引入。
其主要加强功能如下:
1) 性能优化,导入导出速度明显提升
2) 提供并行执行的能力,加快导入导出速度
3) 提供交互式界面,可随时暂停导入导出操作
4) 提供多种表加载策略,如:追加、替换、跳过等
5) 提供数据库对象间的直接交换功能。
6) 提供导出文件大小估计功能
7) 提供导入、导出进度查看功能
8) 自动在导出文件目录下生成导入、导出日志文件。
但impdp/expdp也有比较明显的限制。
1) 与imp/exp工具生成的数据包不兼容
2) 能远程调用,但导入导出文件必须放到服务器上
总体来说,impdp/expdp优势还是很明显的,所以能使用impdp/expdp时,尽量不使用imp/exp。
2.2.2.1 实施方案
Impdp/expdp的使用,主要分为三步:
1) 创建目录映射
在数据库上,创建到操作系统目录的映射:
Create directory DMPDIR as‘c:\oracle\dump\’;
授予用户USER01对该目录的读写权限:
Grant read ,write on directoryDMPDIR toUSER01;
2) 执行导出脚本
导出:
参数解释:
Directory:数据文件导出到哪个路径下,这里是指定第一步创建的directory。
Dumpfile:导出文件名
Logfile:日志文件名
Parallel:设置导出job的并行度,如果对导出速度有较高要求,可设置CPU数 - 1
Job_name:为导出job命名
SCHEMAS:指定导出哪个用户的数据。
3) 执行数据导入脚本
首先仿照第一步,在目标库上创建操作系统目录映射。然后将第二步的导出文件拷贝到目标数据库对应目录下。然后执行以下脚本:
参数解释:
Directory:导入文件所在的路径
Dumpfile:导入文件名
Logfile:指定生成日志文件的存放位置
Parallel:指定操作并行度
job_name:指定导入job名称
SCHEMAS:指定要导入的用户名
REMAP_SCHEMA =TESTI:TESTB:指定将TESTI用户的数据,导入到TESTB用户下
TABLE_EXISTS_ACTION=REPLACE:如果要导入的表已经存在,直接替换。
2.2.2.3 界面介绍
1) 导出界面
可看到整个导出文件,约需要749.5M的存储空间。当然,expdp也支持只评估空间,不导出数据。
2) 状态查看界面
如果想要查看数据导入进度,新开一个窗口,执行以下脚本:
>expdp test@target ATTACH=TESTIMP
> status
2.2.3 表空间迁移
2.2.3.1 基本介绍
表空间迁移,相当于将一个数据库的文件,直接用U盘拷贝到另一个数据库使用。虽然这个原理简单,但操作复杂。
这个操作限制比较多:
1) 原数据库与目标数据库数据库字符集相同、国家字符集必须相同。可查看视图v$nls_parameters确认;
2) 源库与目标数据库最好是同一Oracle版本;
3) 不能搬移SYS和SYSTEM用户对象所在表空间。
2.2.3.2 实施方案
表空间的迁移,可以用imp/exp或impdp/expdp来完成,主要分3步:
1) 完成表空间集的自包含检查
SQL> exec dbms_tts.transport_set_check(‘TBS1’,true);
执行完成后,查询:select * from v$transport_set_violations;
如果没查出数据,表明可以执行表空间迁移。否则根据查询结果采取其他方法。
2) 执行表空间导出
SQL>alter tablespace users read only;
CMD>expdp test@orcl directory=DMPDIR dumpfile=tbs_dmp.dmp
transport_tablespace= USERS
3) 执行表空间导入
将第二步生成的tbs_dmp.dmp文件、表空间USERS对应的数据文件USER01.DBF通过U盘,拷贝到目标库,在目标库上执行导入:
CMD> impdp test@orcl directory=DMPDIR dumpfile=tbs_dmp.dmp
transport_tablespace=y tablespaces=USERS transport_datafiles=’c:\...\USER01.DBF’
SQL> alter tablespace users read write;
2.2.3.3 界面介绍
表空间传输,只是导出表空间的元数据,插入到新库中,因此速度很快。
三、整库迁移
整库迁移,一般用于环境的第一次搭建过程中。就是将整个数据库原封不动的挪到别的机器上。比较适合搭建独立的测试环境时使用。
整库迁移也可以使用前面介绍的imp/exp、impdp/expdp工具,但是速度奇慢,且经常报错。不如下面的方法好用。
3.1 冷备迁移
冷备迁移,就是将源数据库关闭,然后将数据文件拷贝到新机器的相同位置,直接打开新库就可以了。这个迁移过程,操作相对来说简单一些,也比较好控制,但有其局限性:不能跨操作系统硬件平台及数据库大版本。
Windows下的迁移步骤大致如下:
1) 关闭源数据库
2) 根据源库数据文件地址,在新机器上建立相应的操作系统目录
3) 将源库的数据文件、控制文件、参数文件、密码文件等拷贝到新库所在机器
4) 启动源数据库
5) 创建控制文件中记录的其他目录
6) 使用oradim创建实例
7) 启动目标数据库
8) 执行utlrp.sql脚本,编译所有无效对象。
3.2 RMAN迁移
用RMAN做整库迁移,比较方便,主要优点是可以跨操作系统硬件平台。
下面是一个将linux系统迁移到wimdows系统的具体实施步骤(当然在32位linux和32位windows之间,可以直接复制数据文件,无需这么麻烦,此处为举例演示):
1) 以read only模式打开数据库
SQL>startup open read only;
2) 转换数据文件
CMD> RMAN target /
RMAN> run{
convert database transport script '/home/Oracle/temp/transcript.sql'
on target platform convert script '/home/oracle/temp/convert.sql'
to platform 'Microsoft Windows IA (32-bit)'
db_file_name_convert('/oracle/oradata/orcl','/home/oracle/temp');
};
3) 将参数文件、数据文件、转换脚本,拷贝到windows平台上
4) 在windows平台上建立数据库实例,然后依次执行脚本convert.sql、transcript.sql
5) 打开数据库,执行utlrp.sql,编译无效数据库对象。
四、总结
4.1 如何选择迁移方案
不同的迁移方案,所花费的时间可能在10分钟+到10小时+之间波动……..
方案选对了,你可以分分钟搞定,否则就得熬夜加班了。
总的来说,如果你要迁移数据,考虑工具的优先顺序如下:
把本文档从后往前看,就得到下面这顺序了……..
1) 如果迁移整个数据库,首选冷备迁移和RMAN迁移。否则首选表空间迁移
2) impdp/expdp
3) imp/exp
4) dblink+脚本
具体选择哪种方案,要根据实施环境而定。也许你谋划很久的方案,环境并不支持。但总有一种适合你。
4.2 impdp/expdp与imp/exp到底有什么区别?
Impdp/expdp = imp/exp + direct mor + parallel
Impdp/expdp比imp/exp快,最主要就是因为它具有并行执行的特性,且默认是直接路径导出。
除了性能优势外,impdp/expdp还提供了几个比较诱人的功能:
1) 提供并行执行的能力,加快导入导出速度
2) 提供交互式界面,可随时暂停导入导出操作
3) 提供多种表加载策略,如:追加、替换、跳过等
4) 提供数据库对象间的直接交换功能。
5) 提供导出文件大小估计功能
6) 提供导入、导出进度查看功能
7) 自动在导出文件目录下生成导入、导出日志文件。
回到最开始的问题,为什么imp/exp和impdp/expdp的导入导出速度差不多?
因为本次测试使用impdp/expdp工具时,设置的并行度为1。丧失了最主要的特性,能快的起来么。
既然这个并行度这么重要,那设置多少合适呢?设置太高,服务器CPU直接飙升至100%,导入速度还得不到提升。设置太低,完全看不到提速的效果。推荐设置:等于服务器CPU数,但不要高于dmp文件的个数。
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2012-10/72396p5.htm
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/我家小花儿/article/detail/1013928
推荐阅读
article
FlinkCDC
接入多表或整库 (支持
MySQL
,
Oracle
,PostgreSQL,SQLSe...
FlinkCDC
接入多表或整库_
flink
cdc
mysql
版本支持
flink
cdc
mysql
版本支持 ...
赞
踩
article
Oracle
RAC
vs Clusterware vs ASM...
当
RAC
中一个实例缓存了某个数据块时,如果另一个实例需要访问同一个数据块,可以直接通过Cache Fusion来更快地获...
赞
踩
article
ORACLE RAC
ASM
磁盘
规划...
本文详细介绍了基于
ASM
冗余设计架构的数据库双活方案,探讨了
ASM
磁盘
规划,包括故障组、冗余级别以及
磁盘
分配单元和文件条...
赞
踩
article
查询o
rac
le
rac
实例
名,O
rac
le
RAC
修改
ASM
实例
名的步骤...
2.6在任意一个节点更新OCRExample toregister the new
ASM
instance that ...
赞
踩
article
【O
rac
le】O
rac
le
RAC
集群
体系结构
完美解析_
o
rac
le
rac
架构...
Cluster Ready Services,简称 CRS,是
o
rac
le
开发的一个
集群
软件,与其它
集群
软件类似,C...
赞
踩
article
Oracle
RAC
集群
日志
_crs
日志
...
本文详细介绍了
Oracle
数据库中的DB
日志
、ASM
日志
、CRS
日志
以及
RAC
相关
日志
,包括它们的位置、功能和重要性,强...
赞
踩
article
O
rac
le
rac
asm
扩容
_
multipath
o
rac
le asm...
本文介绍了在O
rac
le 11.2.0.4 RAC环境中,针对ASM磁盘组
扩容
的详细过程,包括停止数据库服务、修改网卡配...
赞
踩
article
oracle
cluster
n,
Oracle
Clusterware
/
ASM
/ RAC 常用...
本文详细介绍了
Oracle
RAC和
ASM
的管理
命令
,包括检查CRS状态、资源、节点、监听器、
ASM
磁盘组、表空间创建及...
赞
踩
article
【
Oracle
EBS
R12】第四章
Calendar
&
Currency
设置(
Step
by ...
打开
Currency
的设置界面,查询出我们想要enable的currency code,然后把Enabled勾选上,开启...
赞
踩
article
Oracle
系列十八:
Oracle
RAC
...
Oracle
RAC
是高可用性和高性能的分布式数据库解决方案,本文介绍了
Oracle
RAC
的概念,原理、相关技术以及安...
赞
踩
article
Oracle
RAC
是
啥?_
oraclerac
是
什么...
RAC
是
一个具有共享缓存体系结构的集群数据库,它克服了传统的不共享和共享磁盘方法的限制,为所有业务应用程序提供了一种可伸...
赞
踩
article
【O
rac
le
集群
】
RAC
知识图文详细教程(三)--
RAC
工作
原理和相关
组件
_
o
rac
le
rac
...
RAC
工作
原理和相关
组件
O
rac
le
RAC
是多个单实例在配置意义上的扩展,实现由两个或者多个节点(实例)使用一个共...
赞
踩
article
O
rac
le
RAC
并发与架构_
rac
共享
磁盘
可以
并行写吗...
一.
RAC
并发
RAC
的本质是一个数据库,运行在多台计算机上的数据库,它的主要任务是数据库就是事务处理,它通过 D...
赞
踩
article
O
rac
le RAC 关键参数与
常用命令
_o
rac
le
rac
常用命令
...
O
rac
le RAC 关键参数与
常用命令
_o
rac
le
rac
常用命令
o
rac
le
rac
常用命令
...
赞
踩
article
Oracle
RAC
入门和提高...
http://publish.itpub.net/a2009/0325/269/000000269555.shtml作者...
赞
踩
article
VMware虚拟机
安装
CentOS7.9 O
rac
le 11.2.0.4
RAC
+单节点
RAC
AD...
这个错误是官方要求DNS,属于bug,忽略,点击ok点击skip点击next,yes选择UTF8修改open_curso...
赞
踩
article
Oracle
RAC
学习笔记:
基本概念
及入门 _
oracle
后台
进程
间的关系...
oracle
10g real application clusters introduction 1、什么是clust...
赞
踩
article
O
RAC
LE
RAC
集群
的体系结构_o
rac
le
rac
集群
构建图...
RAC
是一个完整的
集群
应用环境,它不仅实现了
集群
的功能,而且提供了运行在
集群
之上的应用程序,即O
rac
le数据库。无论与...
赞
踩
article
Oracle
RAC
集群
的
安装
(保姆级教程)_
oraclerac
搭建
步骤...
RAC
集群
在Linux上
的
搭建
,保姆级教程_
oraclerac
搭建
步骤
oraclerac
搭建
步骤 ...
赞
踩
article
O
rac
le
Rac
基础_o
rac
le-
rac
集群
用什么
软件
...
O
rac
le
Rac
基础RAC(real application clusters)工作原理Cache Fusion后台...
赞
踩
相关标签
mysql
oracle
postgresql
数据库
查询oracle rac实例名
linux
运维
Oracle RAC ASM 扩容
udev绑定multipath设备方式扩容
Oracle 11G rac ASM
oracle cluster n
数据仓库
sql
算法
thread
存储