ORACLE进阶(一) 通过EXPDP IMPDP命令实现导dmp_impdp导入dmp文件命令

打开全栈工匠技能包-1小时轻松掌握SSR

两小时精通jq+bs插件开发

生产环境下如歌部署Node.js

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

网易内部VUE自定义插件库NPM集成

谁说前端不用懂安全,XSS跨站脚本的危害

webpack的loader到底是什么样的?两小时带你写一个自己loader

文章目录

一、前言

关于dmp文件我们用的还是比较多的,dmp文件是作为oracle导入和导出表使用的文件格式。

二、准备工具

  • FileZilla
  • SecureCRT

其中,FileZilla主要用于查看生成的dmp文件与日志文件;SecureCRT主要用于执行shell脚本。

三、Expdp文件导出

dmp文件导出用的比较多的一般是三种:导出整个数据库实例下的所有数据、导出指定用户的所有表、导出指定表。

相关参数以及导出示例:

  1. DIRECTORY
    指定转储文件和日志文件所在的目录。
DIRECTORY=directory_object

Directory_object用于指定目录对象名称。需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录。

Expdp scott/tiger DIRECTORY= DMP DUMPFILE=a.dump
create or replace directory dmp as 'd:/dmp'
expdp zftang/zftang(@zftang) directory=dmp  dumpfile=test.dmp content=metadata_only

  1. CONTENT
    该选项用于指定要导出的内容。默认值为ALL
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}

当设置CONTENTALL时,将导出对象定义及其所有数据。为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义。

expdp zftang/zftang@zftang directory=dmp dumpfile=test.dmp content=metadata_only

expdp zftang/zftang@zftang directory=dmp  dumpfile=test.dmp content=data_only

  1. DUMPFILE
    用于指定转储文件的名称,默认名称为expdat.dmp
DUMPFILE=[directory_object:]file_name [,….]

Directory_object用于指定目录对象名,file_name用于指定转储文件名。需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象。

expdp zftang/zftang@zftang directory=dmp  dumpfile=test1.dmp

数据泵工具导出的步骤:
1、创建DIRECTORY

create directory dir_dp as 'D:/oracle/dir\_dp'; 

2、授权

Grant read,write on directory dir_dp to zftang;

–查看目录及权限

SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;

3、执行导出

expdp zftang/zftang@fgisdb schemas=zftang directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log;

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1
With the Partitioning, OLAP and Data Mining options
启动 “ZFTANG”.“SYS_EXPORT_SCHEMA_01”: zftang/********@fgisdb sch
ory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log; */

四、备注

1、directory=dir_dp必须放在前面,如果将其放置最后,会提示:

  • ORA-39002: 操作无效
  • ORA-39070: 无法打开日志文件。
  • ORA-39087: 目录名 DATA_PUMP_DIR; 无效
    2、在导出过程中,DATA DUMP 创建并使用了一个名为SYS_EXPORT_TABLE_01的对象,此对象就是DATA DUMP导出过程中所用的JOB名字,如果在执行这个命令时如果没有指定导出的JOB名字那么就会产生一个默认的JOB名字,如果在导出过程中指定JOB名字就为以指定名字出现。
expdp zftang/zftang@fgisdb schemas=zftang directory=dir_dp dumpfile =expdp_test1.dmp logfile=expdp_test1.log,job_name=my_job1;

3、导出语句后面不要有分号,否则如上的导出语句中的job表名为‘my_job1;’,而不是my_job1。因此导致expdp zftang/zftang attach=zftang.my_job1执行该命令时一直提示找不到job表。

五、数据泵导出的各种模式

5.1 按表模式导出:
expdp zftang/zftang@fgisdb tables=zftang.b$i_exch_info,zftang.b$i_manhole_info dumpfile 
=expdp_test2.dmp logfile=expdp_test2.log directory=dir_dp 
job_name=my_job

5.2 按查询条件导出
expdp zftang/zftang@fgisdb  tables=zftang.b$i_exch_info dumpfile =expdp_test3.dmp logfile=expdp_test3.log directory=dir_dp job_name=my_job query='"where rownum<11"'

5.3 按表空间导出
Expdp zftang/zftang@fgisdb dumpfile=expdp_tablespace.dmp tablespaces=GCOMM.DBF logfile=expdp_tablespace.log directory=dir_dp job_name=my_job

5.4 导出方案
Expdp zftang/zftang DIRECTORY=dir_dp DUMPFILE=schema.dmp SCHEMAS=zftang,gwm

5.5 导出整个数据库
expdp zftang/zftang@fgisdb dumpfile =full.dmp full=y logfile=full.log directory=dir_dp job_name=my_job

六、Impdp文件导入

6.1 按表导入

p_street_area.dmp文件中的表,此文件是以gwm用户按schemas=gwm导出的:

impdp gwm/gwm@fgisdb  dumpfile =p_street_area.dmp 
logfile=imp_p_street_area.log directory=dir_dp tables=p_street_area 
job_name=my_job

6.2 按用户导入(可以将用户信息直接导入,即如果用户信息不存在的情况下也可以直接导入)
impdp gwm/gwm@fgisdb schemas=gwm dumpfile =expdp_test.dmp logfile=expdp_test.log directory=dir_dp job_name=my_job

###6.3 不通过expdp的步骤生成dmp文件而直接导入的方法

--从源数据库中向目标数据库导入表p_street_area
impdp gwm/gwm directory=dir_dp NETWORK_LINK=igisdb tables=p_street_area logfile=p_street_area.log  job_name=my_job
igisdb是目的数据库与源数据的链接名,dir_dp是目的数据库上的目录

6.4 更换表空间

采用remap_tablespace参数

--导出gwm用户下的所有数据
expdp system/orcl directory=data_pump_dir dumpfile=gwm.dmp SCHEMAS=gwm

注:如果是用sys用户导出的用户数据,包括用户创建、授权部分,用自身用户导出则不含这些内容
–以下是将gwm用户下的数据全部导入到表空间gcomm(原来为gmapdata表空间下)下

impdp system/orcl directory=data_pump_dir dumpfile=gwm.dmp remap_tablespace=gmapdata:gcom

七、EXP、IMP与EXPDP、IMPDP的区别

  • EXPIMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
  • EXPDPIMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
  • IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。
  • expdpimpdp命令时,可暂不指出用户名/密码@实例名 as 身份,然后根据提示再输入,如:
expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;

八、导出导入可能遇到的坎

导入过程中碰到的两个问题:

8.1中文字符集转换
  • KUP-11007: conversion error loading table "TEST"."T_PSR" ORA-12899: 列REASON_CODE 的值太大 (实际值: 21, 最大值: 20)
  • KUP-11009: data for row: REASON_CODE : 0X'BABDBFD5C6F7C8DDC1BFCFDED6C6'

这里涉及到了字符集转换的问题,中文在GBK字符集中占2位,但在UTF-8字符集中占3位,所以在GBK中保存小于20个字符的情况下,导入到了UTF-8的库中,就可能因为需要额外的字符空间导致超出字段长度定义,报了ORA-12899的错误。

8.2 主外键关联
  • ORA-31693: Table data object "TEST"."T_ITE" failed to load/unload and is being skipped due to error:
  • ORA-29913: error in executing ODCIEXTTABLEFETCH callout
  • ORA-02291: integrity constraint (TEST.FK_ITE_REF_PSR) violated parent key not found

由于有些表之间是存在主外键关联的,expdp导出的时候选择了data_only仅导出数据,impdp导入的时候会因未插入主键记录而插入外键记录,出现ORA-02291的错误,对于这种情况可以选择先禁止主外键关联,导入后再恢复关联。
操作顺序:

  1. 导入前,执行如下SQL找到需要禁止的外键关联
select 'ALTER TABLE '||TABLE_NAME||' DISABLE CONSTRAINT '||constraint_name||';'from user_constraints WHERE 
CONSTRAINT_TYPE='R';

  1. 执行(a)的结果SQL。
  2. 导入后,执行如下SQL找到需要恢复的外键关联
select 'ALTER TABLE '||TABLE_NAME||' ENABLE NOVALIDATE CONSTRAINT '||constraint_name||';' from user_constraints WHERE 
CONSTRAINT_TYPE='R';

#### 总结一下

面试前要精心做好准备,简历上写的知识点和原理都需要准备好,项目上多想想难点和亮点,这是面试时能和别人不一样的地方。

还有就是表现出自己的谦虚好学,以及对于未来持续进阶的规划,企业招人更偏爱稳定的人。



万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**

为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

![](https://img-blog.csdnimg.cn/img_convert/621960a57eb42479e02d6d64c0c81891.png)



![](https://img-blog.csdnimg.cn/img_convert/5230c48fd0fcb265f3401a21603bda2b.png)



**前端面试题汇总**

![](https://img-blog.csdnimg.cn/img_convert/42728594459506983a38ca2b86545fc6.png)

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库提供了expdpimpdp命令用于备份和恢复数据库。这两个命令的使用方式如下: 1. expdp命令 expdp命令用于备份Oracle数据库,它能够将某个schema或整个数据库导出到一个二进制文件中。具体命令格式如下: ``` expdp username/password@connect_string DIRECTORY=directory_name DUMPFILE=dumpfile_name.dmp SCHEMAS=schema_name ``` 其中: - `username/password@connect_string`:指定连接Oracle数据库的用户名、密码和连接字符串。 - `DIRECTORY=directory_name`:指定备份文件的目录。 - `DUMPFILE=dumpfile_name.dmp`:指定备份文件的名称。 - `SCHEMAS=schema_name`:指定要备份的schema名称,多个schema可以用逗号分隔。 执行命令后,Oracle数据库会将指定的schema或整个数据库导出到一个二进制文件中。 2. impdp命令 impdp命令用于恢复Oracle数据库,它能够将之前导出的二进制文件导入到数据库中。具体命令格式如下: ``` impdp username/password@connect_string DIRECTORY=directory_name DUMPFILE=dumpfile_name.dmp SCHEMAS=schema_name ``` 其中: - `username/password@connect_string`:指定连接Oracle数据库的用户名、密码和连接字符串。 - `DIRECTORY=directory_name`:指定备份文件所在的目录。 - `DUMPFILE=dumpfile_name.dmp`:指定备份文件的名称。 - `SCHEMAS=schema_name`:指定要恢复的schema名称,多个schema可以用逗号分隔。 执行命令后,Oracle数据库会将指定的schema或整个数据库从备份文件中恢复出来。 需要注意的是,expdpimpdp命令需要在Oracle数据库服务器上执行,而不是在客户端。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值