数据泵方式导入导出:expdp/impdp
本项目是要从核心数据库(下文中用A库表示,AIX系统,数据库版本:11.2.0.4)导出数据库,并将其导入到生产库(下文中用B库表示。Linux操作系统,数据库版本:11.2.0.4)。
A库导出
1. 选择导出磁盘
导出数据库时,优先选择空间最大的路径,以防止文件过大,中断操作,致使导出失败。
[oracle@01 ~]$ df -h
2. 用root用户在相应磁盘中创建系统目录
2-1切换root用户
[oracle@01 ~]$ su - root
root's Password:
2-2进入选定的路径下(ogg)
[root@01 /]#cd /ogg
[root@01 /ogg]#ls -l
total 136
drwxr-xr-x 3 oracle oinstall 4096 Apr 21 2014 app
drwx------ 2 root system 65536 Apr 21 2014 lost+found
2-3创建目录
[root@01 /ogg]#mkdir xkc_dump
[root@01 /ogg]#ls -l
total 144
drwxr-xr-x 3 oracle oinstall 4096 Apr 21 2014 app
drwx------ 2 root system 65536 Apr 21 2014 lost+found
drwxr-xr-x 2 root system 4096 Jun 29 20:22 xkc_dump
root用户创建目录,避免了创建目录时出现权限不足的情况,但是此时,创建出来的目录是root的权限,我们需要给他oracle权限
[root@01 /ogg]#chown oracle:oinstall xkc_dump/
3. 在数据库中创建目录
3-1切回oracle用户,进入数据库
[root@cardb01 /ogg]#logout --注销当前用户,返回上个用户
[oracle@cardb01 ~]$sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Fri Jun 29 20:22:38 2018
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
3-2查询数据库默认目录DATA_PUMP_DIR
这一步的操作是为了避免目录一样,造成冲突
sys@COREDB>select * from dba_directories;
3-3创建导出目录
sys@COREDB>create directory XKCDUMP as '/ogg/xkc_dump';
Directory created.
4. 创建导出用户,并授予相应权限
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用户对XKCDUMP目录的读写权限
sys@COREDB>grant read,write on directory XKCDUMP to dp;
Grant succeeded.
5.对导出的数据量进行预估
5-1退出数据库
sys@COREDB>quit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
5-2对导出表进行预估
[oracle@cardb01 ~]$expdp dp/dp directory=XKCDUMP estimate_only=y tables=carctrl.CTRL_PERSON_APPLY
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 dp/dp directory=XKCDUMP dumpfile=carctrl_CTRL_PERSON_APPLY.dmp tables=carctrl.CTRL_PERSON_APPLY
数据量预估为960MB,实际导出大小为783.3 MB 2147183 rows
6-2导出用户
[oracle@cardb01 ~]$ expdp dp/dp directory=XKCDUMP dumpfile=HZCARBIDexpdp.dmp schemas=HZCARBID;
6-3导出全库
[oracle@cardb01 ~]$ expdp dp/dp directory=JJ_DUMP estimate_only=y full=y logfile=export.log
7. 检查导出目录下是否有导出文件
[oracle@cardb01 ~]$cd /ogg/xkc_dump/
[oracle@cardb01 /ogg/xkc_dump]$ls -l
8. 将导出文件传到B库所在的服务器
[oracle@cardb01 /ogg/xkc_dump]$ scp CARCTRL_HISTORY_PERSON_POOLING.dmp 192.168.104.11:/home/oracle/xkc_dump
[email protected]'s password:
B库的前期准备工作和A库相同,需要选择磁盘、创建系统目录、创建数据库目录、创建数据泵用户dp、给dp用户授权,做完这些之后,才能执行操作8
9. B库导入数据
9-1导入表
[oracle@devdb01 xkc_dump]$ impdp dp/dp directory=XKCDUMP dumpfile=CARCTRL_HISTORY_PERSON_POOLING.dmp tables=CARCTRL.HISTORY_PERSON_POOLING table_exists_action=truncate logfile=import.log
9-2导入用户
导入用户之前,要检查B库里边有没有相应用户的表空间,如果没有需自己手动创建
[oracle@devdb01 xkc_dump]$ impdp dp/dp directory=XKCDUMP dumpfile=HZCARBIDexpdp.dmp schemas=HZCARBID;
9-3导出全库
[oracle@devdb01 xkc_dump]$ impdp dp/dp directory=XKCDUMP dumpfile=JJEXPDP.dmp full=y;