Oracle数据泵导入导出总结

本文详细介绍了如何使用Oracle数据泵从一个数据库导出数据并导入到另一个数据库的全过程,包括选择磁盘空间、创建目录、用户权限设置、数据量预估、实际导出导入操作等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Oracle数据泵导入导出总结TOC
本项目是要从核心数据库(下文中用A库表示,AIX系统,数据库版本:11.2.0.3.0)导出数据库并将其导入到生产库(下文中用B库表示。Linux操作系统,数据库版本:11.2.0.3.0)

A库导出

  1. 选择导出磁盘

导出数据库时,优先选择空间最大的路径,以防止文件过大,中断操作,致使导出失败。
keshihua01:/#df -g
Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/hd4 121.00 114.79 6% 13741 1% /
/dev/hd2 10.00 6.57 35% 68135 5% /usr
/dev/hd9var 10.00 7.74 23% 226206 12% /var
/dev/hd3 10.00 4.64 54% 8109 1% /tmp
/dev/hd1 10.00 9.75 3% 44377 2% /home
/dev/hd11admin 0.50 0.50 1% 5 1% /admin
/proc - - - - - /proc
/dev/hd10opt 10.00 9.88 2% 3874 1% /opt
/dev/livedump 5.00 5.00 1% 4 1% /var/adm/ras/livedump
/dev/g01-lv 100.00 74.72 26% 920305 6% /g01
/dev/u01-lv 100.00 31.50 69% 3236723 30% /u01
/dev/kshlinshi_lv 1000.00 557.79 45% 20 1% /mnt/kshlinshi
/dev/maxgauge_lv 5.00 4.95 1% 233 1% /maxgauge
/dev/kshjk_lv 4.00 2.73 32% 7339 2% /home/ap/monitor
/dev/cdclv 195.00 150.87 23% 32359 1% /cdc
/dev/itjklv 10.00 9.56 5% 1073 1% /itjkfs
可看出/cdc磁盘目录下存储空间较大 所以选择该目录。
2. 用root用户在相应磁盘中创建系统目录

2-1切换root用户

[oracle@01 ~]$ su - root

root’s Password:

2-2进入选定的路径下(ogg)

keshihua01:/#cd /cdc/

[keshihua01 /cdc]#ls -l 查看目录下文件
2-3创建目录

[keshihua01 /cdc]#mkdir dmdump

[keshihua01 /cdc]#ls -l

root用户创建目录,避免了创建目录时出现权限不足的情况,但是此时,创建出来的目录是root的权限,我们需要给他oracle权限

[keshihua01 /cdc]#chown oracle:oinstall dmdump/

  1. 在数据库中创建目录

3-1切回oracle用户,进入数据库

[keshihua01 /cdc]#logout --注销当前用户,返回上个用户

[okeshihua01:/home/oracle$sqlplus / as sysdba
3-2查询数据库默认目录DATA_PUMP_DIR
sys@COREDB>select * from dba_directories;
这一步的操作是为了避免目录一样,造成冲突

3-3创建导出目录
sys@COREDB>create directory DMDUMP as ‘/cdc/dmdump’;

Directory created.
*/(以下建立用户操作为没有指定用户时可自行建立 ,如数据库有指定用户就用指定用户即可)

  1. 创建导出用户,并授予相应权限

4-1创建用户dp

sys@COREDB>create user dp identified by dp account unlock;

User created.

4-2授予dp用户dba权限

sys@COREDB>grant dba to dp;

Grant succeeded.
/*

4-3授予dp用户对DMDUMP目录的读写权限

sys@COREDB>grant read,write on directory DMDUMP to dm;

Grant succeeded.

5.对导出的数据量进行预估

5-1退出数据库

sys@COREDB>quit

5-2对导出表进行预估

[oracle@cardb01 ~]$expdp dm/yXvjktS1Ww2! directory=DMDUMP estimate_only=y tables=用户名.表名

estimate_only=y 这个参数,代表数据量预估,

值为Y时,表示只对数据量预估,不会执行导出操作

值为N(默认)时,表示直接执行导出操作

导出表、用户、全库,数据量预估都一样,加上这个参数就行

Total estimation using BLOCKS method: 960 MB

Job “DP”.“SYS_EXPORT_TABLE_01” successfully completed at Fri Jun 29 20:27:33 2018 elapsed 0 00:00:04

可以看出,导出的数据量为960MB,此时要注意,这个大小和导出的实际大小略有出入,但是出入不大

6.导出操作

6-1导出表

[oracle@cardb01 ~]$expdp dm/yXvjktS1Ww2! directory=DMDUMP dumpfile=GWDMFK.dmp tables=dm.表名
expdp dwd/UZydc#Uu!nq8 directory=DMDUMP dumpfile=DWDDUMP.dmp tables=dwd.DWD_GWKSH_SAP_ZTGWCMZZZT_LS1

数据量预估为960MB,实际导出大小为783.3 MB 2147183 rows

6-2导出用户

[oracle@cardb01 ~]$ expdp dp/dp directory=DMDUMP dumpfile=GWDMFK.dmp schemas=dm;

6-3导出全库

[oracle@cardb01 ~]$ expdp dp/dp directory=DMDUMP estimate_only=y full=y logfile=export.log

  1. 检查导出目录下是否有导出文件

[oracle@cardb01 ~]$cd /cdc/dmdump/

[oracle@cardb01 /cdc/dmdump]$ls -l

  1. 将导出文件传到B库所在的服务器

[oracle@cardb01 /cdc/dmdump]$ scp GWDMFK.dmp 10.0.125.116:/kshfs/DMDUMP

oracle@192.168.104.11’s password:SfxvJsd%.svb

B库的前期准备工作和A库相同,需要选择磁盘、创建系统目录、创建数据库目录、创建数据泵用户dp、给dp用户授权,做完这些之后,才能执行操作
1 30 2 30 3 40 100 66 14 80 20 ba

  1. 选择导出磁盘

导出数据库时,优先选择空间最大的路径,以防止文件过大,中断操作,致使导出失败。

df -g

Filesystem GB blocks Free %Used Iused %Iused Mounted on
/dev/hd4 25.00 5.57 78% 54356 5% /
/dev/hd2 20.00 14.12 30% 100914 3% /usr
/dev/hd9var 10.00 9.60 5% 8619 1% /var
/dev/hd3 10.00 1.35 87% 3527 2% /tmp
/dev/hd1 20.00 20.00 1% 13 1% /home
/dev/hd11admin 5.00 5.00 1% 5 1% /admin
/proc - - - - - /proc
/dev/hd10opt 10.00 9.29 8% 13823 1% /opt
/dev/livedump 5.00 5.00 1% 4 1% /var/adm/ras/livedump
/dev/lv00 0.25 0.24 4% 18 1% /var/adm/csd
/dev/itjklv 5.00 5.00 1% 4 1% /itjkfs
/dev/kshlv 5110.00 5108.95 1% 7 1% /kshfs
可看出/kshfs 磁盘目录下存储空间够大,所以选择该目录。
2. 用root用户在相应磁盘中创建系统目录

2-1切换root用户

[oracle@01 ~]$ su - root

root’s Password:

2-2进入选定的路径下(ogg)

keshihua01:/#cd /kshfs/

[keshihua01 /kshfs]#ls -l 查看目录下文件
2-3创建目录

[keshihua01 /kshfs]#mkdir dmdump

[keshihua01 /kshfs]#ls -l

root用户创建目录,避免了创建目录时出现权限不足的情况,但是此时,创建出来的目录是root的权限,我们需要给他oracle权限

[keshihua01 /kshfs]#chown oracle:oinstall dmdump/

  1. 在数据库中创建目录

3-1切回oracle用户,进入数据库

[keshihua01 /kshfs]#logout --注销当前用户,返回上个用户

[okeshihua01:/home/oracle$sqlplus / as sysdba
3-2查询数据库默认目录DATA_PUMP_DIR

这一步的操作是为了避免目录一样,造成冲突

sys@COREDB>select * from dba_directories;

3-3创建导出目录

sys@COREDB>create directory DMDUMP as ‘/kshfs/dmdump’;

Directory created.
*/(以下建立用户操作为没有指定用户时可自行建立 ,如数据库有指定用户就用指定用户即可)

  1. 创建导出用户,并授予相应权限

4-1创建用户dp

sys@COREDB>create user dp identified by dp account unlock;

User created.

4-2授予dp用户dba权限

sys@COREDB>grant dba to dp;

Grant succeeded.
/*

4-3授予dp用户对DMDUMP目录的读写权限

sys@COREDB>grant read,write on directory DMDUMP to dm;

Grant succeeded.
root ]chomd 775 DMDUMP.dmp

  1. B库导入数据

9-1导入表

[oracle@devdb01 dmdump]$ impdp dm/yXvjktS1Ww2! directory=DMDUMP dumpfile=DMDUMP.dmp tables=dm.表名 table_exists_action=truncate logfile=import.log
exp 用户名/密码 directory=DMDUMP dumpfile=DMDUMP.dmp tables=用户名.表名

impdp dwd/UZydc#Uu!nq8 directory=DMDUMP dumpfile=DWDDUMP.dmp tables=dwd.DWD_GWKSH_SAP_ZTGWCMZZZT_LS1 table_exists_action=truncate logfile=import.log

9-2导入用户

导入用户之前,要检查B库里边有没有相应用户的表空间,如果没有需自己手动创建

[oracle@devdb01 dmdump]$ impdp dp/dp directory=XKCDUMP dumpfile=HZCARBIDexpdp.dmp schemas=HZCARBID;

9-3导出全库

[oracle@devdb01 dmdump]$ impdp dp/dp directory=XKCDUMP dumpfile=JJEXPDP.dmp full=y;

remap:
expdp habby/habby schemas=TEST1 directory=dump572 dumpfile=TEST1_20181109.dmp remap_Tablespace=old_tablespacename:new_tablespacename_test1 logfile=TEST1_20181109.log
impdp habby/habby schemas=TEST1 directory=dump572 dumpfile=TEST1_20181109.dmp remap_Tablespace=old_tablespacename:new_tablespacename_test1 logfile=TEST1_20181109.log

按时间点后台导出
nohup expdp dm/yXvjktS1Ww2! directory=DMDUMP dumpfile=DMDUMP1.dmp TABLES=dm.DM_GWKSH_PC_ZDSYXL_M_MX query=dm.DM_GWKSH_PC_ZDSYXL_M_MX:’“where bill_cycle <= ‘20191117’”’ &
20191117 日以前
20191031上月以前
20181231去年以前
后台导入
nohup impdp dm/yXvjktS1Ww2! directory=DMDUMP dumpfile=DMDUMP1.dmp TABLES=dm.DM_GWKSH_PC_ZDSYXL_M_MX table_exists_action=truncate logfile=import.log &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值