数据泵技术是Oracle Database 10g 中的新技术,它比原来导入/导出(imp,exp)技术快15-45倍。速度的提升源于使用了并行技术来读写导出转储文件。数据泵的导入/导出(impdp,expdp)模式主要包括三种:

1. 按表导入/导出

2. 按用户导入/导出

3. 全库导入/导出

本文实验环境的源数据库是oracle 12c 安装在操作系统win 10,目的数据库是oracle 11g 部署在rac集群中操作系统为redhat 6.9 ,分别按用户和按全库导入/导出,从开发环境win 10中将数据库迁移到模拟生产环境rac集群中。

数据库迁移过程记录如下:


全库导出/导入操作记录

一、在需要导出的数据库执行expdp操作

1. 先在资源管理器创建dump_dir目录

dump目录位置没有限制,路径中最好不要有中文名字(以免不必要的问题)。

 2. 为Oracle数据库创建dump_dir目录并授权

sqlplus中执行如下命令:

创建数据导出目录dump_dir,位于C:\app\HP\dump_dir文件夹。

create directory dump_dir as ‘C:\app\HP\dump_dir’;

查询目录创建是否成功。

select owner,directory_name,directory_path from dba_directories;

赋予用户对dump_dir目录的读写权限。

grant read,write on directory dump_dir to 用户名;

赋予用户全库导出的权限。

grant datapump_exp_full_database to 用户名;

3. 在cmd命令行下执行指令

expdp 用户名/密码@orcl directory=dump_dir dumpfile=full.dmp full=y version=11.2.0.4.0

dumpfile  参数为导出的数据文件文件名,可任意设定。

full=y       参数表示全库导出。

version    参数用于限定需要导入数据的oracle数据库版本,若导出导入的数据库版本一致,该参数可以省略。

 导出成功后可以在dump_dir目录下看到FULL.DMP文件和日志文件export.log。

二、在需要导入的数据库执行impdp操作

1. 在两个rac节点分别创建dump_dir目录

cd /u01/app/oracle

mkdir -p dump_dir

chown -R oracle:oinstall /u01/app/oracle/dump_dir

chmod -R 775 /u01/app/oracle/dump_dir

2. 将FULL.DMP文件分别上传到两个节点的dump_dir目录下

3. 使用dbca工具重新建库,关闭归档模式

4. drop清空asm磁盘组DATA和FRA后再重新创建

5. 为Oracle数据库创建dump_dir目录并授权

在其中一个rac节点中sqlplus执行如下命令:

create directory dump_dir as ‘/u01/app/oracle/dump_dir’;

 查询目录是否创建成功。

select owner,directory_name,directory_path from dba_directories;

 赋予用户对dump_dir目录的读写权限。

grant read,write on directory dump_dir to 用户名;

 赋予用户全库导入的权限。

grant datapump_imp_full_database to 用户名;

 6. 在command环境下执行指令:

impdp 用户名/密码 directory=dump_dir dumpfile=FULL.DMP full=y

remap_datafile= "C:\APP\HP\PRODUCT\12.1.0\DBHOME_2\DATABASE\X5DOC.DBF":"+DATA/orcl/datafile/X5DOC_DATA", "C:\APP\HP\PRODUCT\12.1.0\DBHOME_2\DATABASE\X5SYS.DBF":"+DATA/orcl/datafile/X5SYS_DATA"

remap_datafile  参数用于重新映射表空间的datafile的位置,一般在全库导出/导入时使用。本实验源数据库安装在win,目的数据库安装在linux,文件路径命名方式不同,需要该参数来进行映射。具体说明详见官方文档。 

7. 导入完成后可通过查询表的行数方式来测试是否导入成功

三、遇到的报错及处理

ORA-39083

ORA-01917   用户不存在

尝试手动添加用户后再重新impdp导入,导入成功。

ORA-31684   对象已经存在

该报错不需要处理,没有影响本实验中数据库的导入。


按用户导出/导入操作记录

一、在需要导出的数据库执行expdp操作

1. 先在资源管理器创建dump_dir目录

dump目录位置没有限制,路径中最好不要有中文名字(以免不必要的问题)。

2. 查找要导出的用户名下的表空间

sqlplus中执行如下命令:

select distinct  tablespace_name from dba_segments where owner='用户名';

3. 为Oracle数据库创建dump_dir目录并授权

sqlplus中执行如下命令:

创建数据导出目录dump_dir,位于C:\app\HP\dump_dir文件夹。

create directory dump_dir as ‘C:\app\HP\dump_dir’;

查询目录创建是否成功。

select owner,directory_name,directory_path from dba_directories;

赋予用户对dump_dir目录的读写权限。

grant read,write on directory dump_dir to 用户名;

4. 在cmd命令行下执行命令:

expdp 用户名/密码@orcl directory=dump_dir dumpfile=xx.dmp schemas=用户名 version=11.2.0.4.0

dumpfile    参数为导出的数据文件文件名,可任意设定。

version     参数用于限定需要导入数据的oracle数据库版本,若导出导入的数据库版本一致,该参数可以省略。

schema    参数为要导出的schema,设置为要导出的用户名。

导出成功后可以在dump_dir目录下看到XX.DMP文件和日志文件export.log。

二、在需要导入的数据库执行impdp操作

1. 在两个rac节点分别创建dump_dir目录

cd /u01/app/oracle

mkdir -p dump_dir

chown -R oracle:oinstall /u01/app/oracle/dump_dir

chmod -R 775 /u01/app/oracle/dump_dir

2. 将XX.DMP文件分别上传到两个节点的dump_dir目录下

3. 使用dbca工具重新建库,关闭归档模式

4. drop清空asm磁盘组DATA和FRA后再重新创建

5. 在目的数据库创建用户的表空间:

查询表空间的文件名命名方式。

select file_name from dba_data_files;

在目的数据库上创建源数据库上查出的表空间,名字与源数据库的表空间名一致,表空间文件的存储路径为asm磁盘组+DATA/ORCL/DATAFILE/xxx

create tablespace 表空间名 datafile '表空间文件路径' size 32M autoextend on next 32M maxsize unlimited;

6. 创建用户:

create user 用户名 identified by 密码 default tablespace 表空间名 temporary tablespace temp;

为用户授权。

grant dba to 用户名;

grant connect,resource to 用户名;

7. 为Oracle数据库创建dump_dir目录并授权

在其中一个rac节点中sqlplus执行如下命令:

create directory dump_dir as ‘/u01/app/oracle/dump_dir’;

查询目录是否创建成功。

select owner,directory_name,directory_path from dba_directories;

赋予用户对dump_dir目录的读写权限。

grant read,write on directory dump_dir to 用户名;

8. 在command环境下执行指令:

impdp 用户名/密码 directory=dump_dir dumpfile=XX.DMP SCHEMAS=用户名

9. 导入完成后可通过查询表的行数方式来测试是否导入成功

三、 遇到的报错及处理

ORA-39002;ORA-39070;ORA-29283;ORA-06512;ORA-29283

dump_dir目录没有创建成功,检查资源管理器中是否有该目录,在oracle数据库中是否配置成功。

ORA-39001 ORA-39000 ORA-31640 ORA-27037

文件名称大小写问题.dmp文件上传到linux后会自动改为大写字母,需要注意。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐