首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >使用impdp工具导入oracle数据库备份数据文件

使用impdp工具导入oracle数据库备份数据文件

作者头像
用户5921339
发布2026-03-02 19:52:47
发布2026-03-02 19:52:47
660
举报

做乙方的朋友负责某甲方公司信息系统维护,甲方给了他一个dmp格式数据库备份文件让他导入到测试系统,但是他对oracle数据库不是特别熟悉,于是找上我帮他完成导入操作。

首先查看一下与dmp文件一起的导出日志文件,确认导出使用的是expdp工具(与exp有区别),所有本次使用impdp工具导入数据文件。

由于目标数据库是生产系统的测试库,测试库中肯定是存在需要导入的表空间历史数据和用户数据的,为了确保导入顺利,建议先删除用户和表空间历史数据。

删除数据之前一定要备份!

删除数据之前一定要备份!

删除数据之前一定要备份!

本次操作的数据库是测试库,而且询问过后确认数据不重要,于是没有执行备份操作。

  • 首先查询表空间创建的SQL语句,以下生成所有表空间创建的查询SQL语句
代码语言:javascript
复制
SQL> SELECT 'SELECT dbms_metadata.get_ddl(''TABLESPACE'',''' || tablespace_name || ''') FROM dual;' FROM dba_tablespaces;
  • 执行查询SQL语句,生成表空间SCADA创建的SQL语句
代码语言:javascript
复制
SQL> SELECT dbms_metadata.get_ddl('TABLESPACE','SCADA') FROM dual;
  • 生成用户创建的SQL语句
代码语言:javascript
复制
SQL> SELECT 
    'CREATE USER ' || du.username || ' IDENTIFIED BY VALUES ''' || du.password || ''' ' ||
    'DEFAULT TABLESPACE ' || du.default_tablespace || ' ' ||
    'TEMPORARY TABLESPACE ' || du.temporary_tablespace || ' ' ||
    'PROFILE ' || du.profile || ' ' ||
    'ACCOUNT ' || CASE WHEN du.account_status LIKE 'OPEN%' THEN 'UNLOCK' ELSE 'LOCK' END || ';' AS create_user_sql
FROM 
    dba_users du
WHERE 
    du.username = 'SCADA';
  • 删除用户和用户数据表空间
代码语言:javascript
复制
SQL> DROP USER scada CASCADE;
SQL> DROP TABLESPACE SCADA INCLUDING CONTENTS AND DATAFILES;
  • 创建SCADA表空间,执行前面生成的表空间SCADA创建的SQL语句:
代码语言:javascript
复制
SQL> CREATE TABLESPACE "SCADA" DATAFILE 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SCADA01.DBF'
 SIZE 67108864  AUTOEXTEND ON NEXT 67108864 MAXSIZE 32767M,
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SCADA02.DBF' SIZE 32212254720,
 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SCADA03.DBF' SIZE 32212254720,
 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SCADA04.DBF' SIZE 32212254720,
  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SCADA05.DBF' SIZE 3221225472 
 LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO
  • 创建用户
代码语言:javascript
复制
SQL> CREATE USER scada IDENTIFIED BY "scada" DEFAULT TABLESPACE SCADA TEMPORARY TABLESPACE SCADA1_TEMP;
  • 用户授权
代码语言:javascript
复制
SQL> GRANT RESOURCE,CONNECT to scada;
SQL> GRANT dba to scada;
  • 创建数据导入目录和授权
代码语言:javascript
复制
SQL> CREATE DIRECTORY DPUMP_DIR AS 'E:\oracle\backup';
SQL> grant read,write on directory DPUMP_DIR to scada;
  • 执行导入命令开始导入备份数据
代码语言:javascript
复制
impdp scada/scada directory=DPUMP_DIR dumpfile=scada_20260206.DMP logfile=imp.log parallel=4

如果数据量比较大,导入过程会比较慢,可以通过以下SQL语句查询导入任务和会话:

代码语言:javascript
复制
SQL> select * from DBA_DATAPUMP_JOBS;
SQL> select * from DBA_DATAPUMP_SESSIONS;
SQL> select sid,sql_id,event from v$session where action = 'SYS_IMPORT_FULL_01';

导入成功或失败的结果都可以通过查看imp.log日志文件。

图片
图片

· · · · · END · · · · ·

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT人家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档