oracle运维系列3:impdp导入数据库

背景

前文导出数据文件的基础上,本文介绍如何将数据库文件导入至数据库。

操作步骤:

以下将详细介绍使用impdp导入schema=ZAVIER的全部数据的步骤。

  • 数据准备

将数据文件*.impdp拷贝至系统某个目录,并确保oracle用户对其拥有权限(如修改文件/目录属主为oracle:oinstall)。本文将其放置于:/home/oracle目录

  • 创建导入路径

首先登录数据库,在创建impdp能够识别的导入路径。如下:

[[email protected] ~]<20181119 16:48:41>$ sqlplus / as sysdba;
[email protected]> create directory IMP_ZAVIER as '/home/oracle';
Directory created.

[email protected]> select * from dba_directories where DIRECTORY_NAME = 'EXP_ZAVIER';
  • 创建导入用户

impdp导入需要使用一个用户USER导入,因而,可以修改system用户的密码执行导入。如下:

[email protected]> alter user system identified by 123456;
User altered.
  • 退出sqlplus,执行导入

oracle运维系列3:impdp导入数据库

说明:

  1. directory选项指定刚才创建的导入目录名
  2. dumpfile指定导入文件,与impdp类似,导入也使用并行parallel参数;
  3. logfile指定导入日志文件;
  4. parallel指定并行导出jobs数。
  5. 其他相关参数还有:COMPRESSION(是否采用压缩)、ENCRYPTION(是否加密)、SCHEMAS(指定导出schema默认为登录schema)等;

可能遇到的问题

  • 表空间不存在,如下:

oracle运维系列3:impdp导入数据库

出现此问题的原因可能是执行导入的数据库中不存在导出dmp文件对应用户(schems)的表空间,因而,需要先创建表空间。

1. 查看所有表空间文件及其数据文件:

SQL>select tablespace_name,file_id,file_name from dba_data_files;

oracle运维系列3:impdp导入数据库

2. 创建表空间

数据空间
SQL>CREATE TABLESPACE CMBASOC1DATA LOGGING DATAFILE '/u01/oradata/orcl/cmbasoc1_data.dbf' SIZE 10G AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;
索引空间:
SQL>CREATE TABLESPACE CMBASOC1INDEX LOGGING DATAFILE '/u01/oradata/orcl/cmbasoc1_index.dbf' SIZE 10G AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;

总结

  1. 由于导入的ZAVIER方案(schema)数据量非常小,仅有3个table(T1、T2、KNN_DATA),因而导入耗时少。生产上若schema包含的数据多,导出可能很长时间,具体取决与数据量大小、处理器性能、是否采用压缩等;
  2. impdp & expdp是oracle官方提供的一对数据库逻辑备份工具,有关其详细用法请使用impdp –help命令;
  3. impdp & expdp的日志文件是检查是否成功导入/导出的第一手资料,执行中请认真分析日志文件

参考推荐

《oracle学生指南1-D50102CN11_SG1》

《Oracle性能诊断艺术》