exp/imp工具使用

很久很久以前,Oracle就开始提供用来摄取表、模式或整个数据库的定义,

然后导入到其他模式或数据的小工具:那就是exp/imp

那个时候数据库规模都很小(几百M就算超大数据库了),而且对于数据库的要求也没有那么高,不像现如信,

动不动就是7*24小时高并发、高可用,以至在某些领域,exp/imp也被视作备份恢复的工具使用并延续至今。

如果你使用exp备份几十G、数百G甚至更大规模数据库,并且将这种方式作为生产数据库的备份策略,这就太不合理了。

1、导出某用户下所有表

exp scott/lipengfei file=scott_all_tables.dmp log=scott_all_tables.log

2、导出scott用户下的部分表

(1)exp scott/lipengfei tables=\(emp,salgrade\) file=scott_emp_salgrade.dmp log=scott_emp_salgrade.log

(2)exp scott/lipengfei tables=emp file=scott_emp.dmp log=scott_emp.log

3、参数文件

vi /home/oracle/dept.txt 文件内容如下:

userid=scott/lipengfei

log=/home/oracle/scott_dept.log

file=/home/oracle/scott_dept.dmp

tables=dept

exp parfile=/home/oracle/dept.txt

4、按条件导出

(1)

exp parfile=/home/oracle/emp.txt

vi /home/oracle/emp.txt  内容如下:

userid=scott/lipengfei

log=/home/oracle/emp.log

file=/home/oracle/emp.dmp

tables=emp

query=‘where sal>1000‘

(2)条件中是数字

exp scott/lipengfei tables=emp query="‘where sal >1000‘" file=/home/oracle/emp.dmp log=/home/oracle/emp.log

(3)条件中带有字符串

exp scott/lipengfei tables=emp query="‘where sal >1000 and job=‘‘CLERK‘‘‘" file=/home/oracle/emp.dmp log=/home/oracle/emp.log

(4)参数文件,处理条件中带有字符串

exp parfile=/home/oracle/emp.txt

vi /home/oracle/emp.txt  内容如下:

userid=scott/lipengfei

log=/home/oracle/emp.log

file=/home/oracle/emp.dmp

tables=emp

query=‘where sal>1000 and job=‘‘CLERK‘‘‘

5、导出某几个用户的所有表

create tablespace li datafile ‘/oracle/app/oradata/ecom/li.dbf‘ size 30M AUTOEXTEND OFF;

create user li identified by li default tablespace li;

alter user li account unlock;

grant connect,resource to li;

create tablespace peng datafile ‘/oracle/app/oradata/ecom/peng.dbf‘ size 30M AUTOEXTEND OFF;

create user peng identified by peng default tablespace peng;

alter user peng account unlock;

grant connect,resource to peng;

create tablespace fei datafile ‘/oracle/app/oradata/ecom/fei.dbf‘ size 30M AUTOEXTEND OFF;

create user fei identified by fei default tablespace fei;

alter user fei account unlock;

grant connect,resource to fei;

sqlplus li/li

create table haha(id int);

insert into haha values(1);

commit;

sqlplus peng/peng

create table hehe(id int);

insert into hehe values(1);

commit;

sqlplus fei/fei

create table hihi(id int);

insert into hihi values(1);

commit;

exp \‘sys/lipengfei as sysdba\‘ file=/home/oracle/li_peng_fei.dmp log=/home/oracle/li_peng_fei.log owner=\(li,peng,fei\)

6、不想导出索引、不想导出约束、不想导出授权、不想导出与表相关的触发器等

exp scott/lipengfei file=scott_all_tables.dmp log=scott_all_tables.log indexes=N constraints=N grants=N triggers=N

7、导出的文件太大了,超出文件系统限制【fat32单个文件不能超过4G,ntfs单个文件不能超过2T,ext3理想情况下单个文件不能超过2T】

exp scott/lipengfei filesize=500M  file=scott_all_tables1.dmp scott_all_tables2.dmp log=scott_all_tables.log

如果指定filesize参数,那么file参数也要跟着修改。exp在导出的时候有可能会生成多个dmp文件,

因此必须在file参数中为每一个文件分别命名(多个名称间以逗号分隔)

如果file参数指定的文件名多于实际生成的文件,多出指定的文件不会被生成。

如果file参数指定的文件名少于实际生成的文件,exp执行过程中,

在用完用户所指定的文件后,就会提示输入新的文件名。

如果没有人在旁边操作,那么整个导出任务就会停在这里了。

接着你可能就要问,怎么知道要导出的数据一共占用多大空间?

select sum(bytes)/1024/1024 "total(M)" from user_segments;

--------------------------------------------------------------

1、导入数据

exp li/li file=li_all_tables.dmp log=li_all_tables.log

sqlplus li/li

SQL> drop table haha;

imp li/li file=li_all_tables.dmp log=li_all_tables.log

2、导入指定表到其他用户

imp peng/peng fromuser=li touser=peng file=li_all_tables.dmp log=li_to_peng_all_tables.log

sqlplus peng/peng

SQL> select  tname from tab;

上面的操作看起来成功?其它并没有,数据虽然成功导入了,但不是严谨的方式,可能无意中给数据库埋了一颗雷。

SQL> show user

SQL> select username,default_tablespace from user_users;

SQL> select table_name,tablespace_name from user_tables;

奇怪吗?虽然peng用户默认的表空间是peng,但是新导入的haha表被存储到li表空间中。如下方式解决

sqlplus / as sysdba

alter user peng quota unlimited on peng;

revoke unlimited tablespace from peng;

sqlplus peng/peng

drop table haha;

imp peng/peng fromuser=li touser=peng file=li_all_tables.dmp log=li_to_peng_all_tables.log ignore=y

sqlplus peng/peng

SQL> select table_name,tablespace_name from user_tables;

如果要导入的对象已经存在,默认情况导入就会报错。

ignore=N 【默认】,出错对象会被跳过,imp继续后续操作。

ignore=Y,自动忽略对象已存在的事实,继续导入数据,也就会出现重复数据,可能通过手工去重。

3、导入表结构到指定用户

sqlplus peng/peng

SQL> drop table haha;

imp peng/peng fromuser=li touser=peng file=li_all_tables.dmp log=li_to_peng_all_tables.log ignore=y rows=N

sqlplus peng/peng

SQL> select tname from tab;

SQL> select * from haha;

时间: 2024-11-10 07:34:22

exp/imp工具使用的相关文章

使用exp&imp工具进行数据库备份及恢复

使用exp&imp工具进行数据库备份及恢复1.exp/imp使用方法介绍exp/imp为一种数据库备份恢复工具,也可以作为不同数据库之间传递数据的工具,两个数据库所在的操作系统可以不同.exp可以将数据库数据导出为二进制文件,imp可以将导出的数据文件再导入到相同的数据库或不同的数据库.数据库导出有四种模式:full(全库导出).owner(用户导出).table(表导出).tablespace(表空间导出).full(全库导出):导出除ORDSYS.MDSYS.CTXSYS.ORDPLUGIN

oracle exp/imp工具使用

最近在学习oraclel备份与恢复的知识,特总结了逻辑备份与恢复的使用方法: 一.逻辑备份的介绍: 所谓备份 ,就是把数据库复制到转储设备的过程.其中,转储设备是指用于放置数据库拷贝的磁带或磁盘. Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份.导出备件是一种逻辑备份,冷备份和热备份是物理备份. 下面咱们就来讲讲导入导入(EXP/IMP)用法. 二.EXP/IMP工具介绍: 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来

exp/imp工具使用说解

引言 ORACLE数据库有两类备份方法. 第一类:为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且 需要极大的外部存储设备,例如磁带库: 第二类:备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以 不需要外部存储设备. 很久很久以前,Oracle就开始提供用来摄取表.模式或整个数据库的定义,然后导入到其他模式或数据的小工具:那就是exp/imp那个时候数据库规模都很小(几百M就算超大数据库

oracle exp/imp示例及使用问题整理

oracle常用的迁移工具有exp,imp,expdp,impdp,dblink等方式,实际过程中可以根据工具特点,数据库的具体环境情况,灵活采用.   exp/imp工具应方便简单使用,在数据量不大的情况下使用很频繁, 这个简要记录下使用中遇到的问题. 一.exp/imp版本不能往上兼容问题, 数据库的版本问题一定要搞清楚. 1. 低版本的exp/imp可以连接高版本的数据库, 高版本exp/imp不能连接低版本的数据库.   2. 高版本exp导出的dmp文件, 低版本imp命令无法导入.

探索Oracle之 EXP/IMP过程中的字符集问题

1. 问题描述: 数据库之间的数据迁移是一个很常见的作业,EXP/IMP工具是一个常用的数据迁移及转化工具,因其导出文件具有平台无关性,所以在跨平台迁移中,最为常用.但在实际操作过程中,涉及到源数据库,客户端,目标数据库三方面的字符集问题.操作人员对三者之间的字符集转换过程不了解,而冒然使用EXP/IMP命令,往往在迁移过程中报错终止,或是在没有报错的情况下成功导入,但其背后却存在隐患,在查询时经常显示乱码. 2.解决方法 2.1 源端数据库(1)→EXP客户端(2)→IMP客户端(3)→目标数

Oracle exp/imp数据导入导出工具基本用法

一.获取帮助 exp/imp help=y 二.数据导出 1.将数据库完全导出,设置full选项exp system/[email protected] file=d:\db.dmp full=y 2.导出数据库结构,不导出数据,设置rows选项exp system/[email protected] file=d:\db.dmp rows=n full=y 3.当导出数据量较大时,可以分成多个文件导出,设置filesize选项exp system/[email protected] file=

Oracle基础 (系统工具(export,import)) exp/imp和 (数据泵 (data pump))expdp/impdp的区别:

一.exp/imp和expdp/impdp在功能上的区别: 1.把用户usera的对象导入到userb emp/imp用法: formuser=usera touser=userb; empdp/impdp用法: remap_schema='usera':'userb' 例如: imp system/password fromuser=usera touser=userb file=back.dmp log=backlog.log; impdp system/password directory

Oracle exp/imp导出导入工具的使用-1

exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移 imp导入工具将EXP形成的二进制系统文件导入到数据库中. 一. 导出工具 exp 它有三种模式: a. 用户模式: 导出用户所有对象以及对象中的数据: b. 表模式: 导出用户所有表或者指定的表: c. 整个数据库: 导出数据库中所有对象. $exp oa1/[email protected] file=D:/all.dmp grants=y 说明:把oa1用户的所有表导出到文件D:/all.dmp $exp oa

【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中

[exp/imp]将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 如何将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中(重点,2种方法)? ② 从dmp文件可以获取到哪些信息?如何从dmp文件获取到dmp文件的字符集(重点,N种方法)? ③ 如何从dmp