生产中由于设备更换或灾备等原因,经常会出现数据迁移的操作,而数据迁移又分为多种方式。接下来我们详细了解一下ORACLE数据库相关的三种迁移方式。
vi /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
TNSWLFDB = //创建的tns名字
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.XXX.XXX.116)//源数据库ip(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl) //源数据库实例名SID
)
[oracle@rac3 admin]$ tnsping TNSWLFDB //验证tns复制
grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to TEST;
select * from dba_db_links; /查看dblink
方式一:
create public database link TEST_LINK connect to system identified by "oracle" using 'TNSWLFDB';
方式二:
create public database link TEST_LINK connect to system identified by "oracle" using 'TNSWLFDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.XXX.XXX.116)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =orcl)
)';
create directory ORABAK_TEST as '/orabak/TEST'; //创建逻辑目录
select * from test_a@TEST_LINK; //查看源数据库表验证dblink
alter public database link TEST_LINK connect to system identified by "654321"; //修改dblink密码
drop public database link "TEST_LINK"; //删除dblink复制
impdp system/654321 network_link=TEST_LINK tables=test_a; //根据表导入数据
impdp system/654321 DIRECTORY=ORABAK_TEST PARALLEL=8
CLUSTER=NO SCHEMAS=TEST remap_tablespace=SYSTEM:USERS
network_link=TEST_LINK parfile=TEST.par; //根据用户导入数据复制
mkdir test_dir
复制
create or replace directory test_dir as '/home/oracle/test_dir'
复制
select * from dba_directories;
复制
grant all on directory test_dir to xx
复制
expdp TEST/123456@orcl schemas=TEST dumpfile=expdp.dmp DIRECTORY=test_dir;
复制
expdp TEST/123456@orcl directory=test_dir dumpfile=TEST3.dmp parallel=8 job_name=TEST3
复制
expdp TEST/123456@orcl TABLES=test_a(多个表以 , 分割) dumpfile=expdp.dmp DIRECTORY=test_dir;
复制
expdp TEST/123456@orcl directory=test_dir dumpfile=expdp.dmp Tables=test_a query='WHERE rownum<100';
复制
expdp system/654321 DIRECTORY=test_dir DUMPFILE=tablespace.dmp TABLESPACES=test_dat;
复制
expdp system/654321 DIRECTORY=test_dir DUMPFILE=full.dmp FULL=y;
复制
expdp system/654321 schemas=test directory=test_dir dumpfile=expdp_%u.dmp filesize=102400
复制
expdp system/654321@orcl TABLES=test directory=test_dir
dumpfile=test.dmp version=11.2.0.4.0; //需要在导出时设置版本号复制
登陆到目标服务器执行1-4步。 把导出的test.dmp 移动到目标服务器 /home/oracle/ 目录下:scp test.dmp 192.XXX.XXX.113:/home/oracle/dump/
impdp system/654321 DIRECTORY=test_dir DUMPFILE=expdp.dmp
REMAP_SCHEMA=TEST:system;复制
impdp system/654321DIRECTORY=test_dir DUMPFILE=tablespace.dmp TABLESPACES=test_dat;
复制
impdb system/654321 DIRECTORY=test_dir DUMPFILE=full.dmp FULL=y;
复制
impdp defDB/defDB DIRECTORY=test_dir CONTENT=METADATA_ONLY
DUMPFILE=expdp.dmp logfile=expdp.log remap_schema=test:system;复制
impdp TEST/123456@orcl TABLES=test dumpfile=expdp.dmp DIRECTORY=test_dir;
复制
impdp system/123456 schemas=test directory=test_dir dumpfile=expdp_%u.dmp
复制
查询所有表:
SQL> select table_name from user_tables;
复制
批量删除表:
select 'drop table '||table_name||';'
from cat
where table_type='TABLE'复制
4.1 sqlldr导入数据
create table TEST
(
userid VARCHAR2(100),
username VARCHAR2(100),
);复制
1,zhangsan
2,lisi
3,wangwu复制
APPEND // 追加数据
INSERT // 空表添加数据
REPLACE // 清除原有数据重新添加
TRUNCATE // 清除原有数据重新添加
load data
infile '/home/oracle/test.txt'
--
infile '/home/oracle/test1.txt'(导入多个文件到同一张表继续往后追加)
append
into table TEST
fields terminated by ','
trailing nullcols
(
userid (position(1:5)), // position(1:5)指的
是从第一个字符载止到第五个字符作为ename的值,绝对偏移量
username,
)复制
Nohup Sqlldr TEST/123456 control=/home/oracle/control.ctl &
复制
chown oracle:oinstall sqluldr2_linux64_10204.bin
chmod 755 sqluldr2_linux64_10204.bin
query导出
./sqluldr2_linux64_10204.bin user=system/123456 query="select * from test;" head=yes file=/home/oracle/test.txt charset=UTF-8;复制
expdp/impdp为逻辑备份,在跨版本或者只导出个别表等采用expdp导出方便。 sqlldr:用来进行异构数据库的数据迁移,比如从Oracle导入到mysql,是生成txt文件。

本文作者:梁明磊(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
663次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
626次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
535次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
480次阅读
2025-04-22 00:20:37
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
480次阅读
2025-04-17 17:02:24
一页概览:Oracle GoldenGate
甲骨文云技术
462次阅读
2025-04-30 12:17:56
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
451次阅读
2025-04-22 00:13:51
火焰图--分析复杂SQL执行计划的利器
听见风的声音
407次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
371次阅读
2025-04-15 14:48:05
OR+DBLINK的关联SQL优化思路
布衣
348次阅读
2025-05-05 19:28:36