解密Oracle备份工具-exp/imp

无论是运维工作者还是数据库管理员,数据的备份和还原是我们日常工作的重点,制定合理的备份策略,使用合适的备份工具是每个IT人必备的技能,今天就给大家介绍Oracle的备份工具exp和imp。

ORACLE数据库有两类备份方法。

  • 第一类:为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库;

  • 第二类:备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以不需要外部存储设备。

一、exp的关键字说明:

1、导出某用户下所有表

exp scott/lipengfeifile=scott_all_tables.dmp log=scott_all_tables.log

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

(1)expscott/lipengfei tables=\(emp,salgrade\) file=scott_emp_salgrade.dmplog=scott_emp_salgrade.log
(2)exp scott/lipengfei tables=empfile=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.txtvi /home/oracle/emp.txt  内容如下:userid=scott/lipengfeilog=/home/oracle/emp.logfile=/home/oracle/emp.dmptables=empquery='where sal>1000'

(2)条件中是数字

exp scott/lipengfei tables=empquery="'where sal >1000'" file=/home/oracle/emp.dmplog=/home/oracle/emp.log

(3)条件中带有字符串

exp scott/lipengfei tables=empquery="'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、导出某几个用户的所有表

(1)创建表空间及用户、授权

create tablespace li datafile'/oracle/app/oradata/ecom/li.dbf' size 30M AUTOEXTEND OFF;
create user li identified by li defaulttablespace li;
alter user li account unlock;
grant connect,resource to li;

(2)创建表空间及用户、授权

create tablespace peng datafile'/oracle/app/oradata/ecom/peng.dbf' size 30M AUTOEXTEND OFF;
create user peng identified by peng defaulttablespace peng;
alter user peng account unlock;
grant connect,resource to peng;

(3)创建表空间及用户、授权

create tablespace fei datafile'/oracle/app/oradata/ecom/fei.dbf' size 30M AUTOEXTEND OFF;
create user fei identified by fei defaulttablespace fei;
alter user fei account unlock;
grant connect,resource to fei;

(4)创建表及初始化数据

sqlplus li/li
create table haha(id int);
insert into haha values(1);
commit;

(5)创建表及初始化数据

sqlplus peng/peng
create table hehe(id int);
insert into hehe values(1);
commit;

(6)创建表及初始化数据

sqlplus fei/fei
create table hihi(id int);
insert into hihi values(1);
commit;

(7)将上面3个用户全部对象导出

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

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

exp scott/lipengfeifile=scott_all_tables.dmp log=scott_all_tables.log indexes=N constraints=Ngrants=N triggers=N

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

exp scott/lipengfei filesize=500M  file=scott_all_tables1.dmpscott_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;

二、imp关键字说明:

1、导入数据

(1)按用户导出数据

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

(2)模拟数据丢失

sqlplus li/li
SQL> drop table haha;

(3)将备份数据还原

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

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

(1)将li用户下的备份集导入到peng用户中

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

(2)以peng用户登录,验证数据

sqlplus peng/peng
SQL> select  tname from tab;

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

SQL> show user
SQL> select username,default_tablespacefrom user_users;
SQL> select table_name,tablespace_namefrom user_tables;

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

(3)表空间权限控制

sqlplus / as sysdba
alter user peng quota unlimited on peng;
revoke unlimited tablespace from peng;

(4)清空peng用户刚导入的表及数据

sqlplus peng/peng
drop table haha;

(5)将li用户下的备份集再一次导入到peng用户中

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

(6)以peng用户登录,验证数据

sqlplus peng/peng
SQL> select table_name,tablespace_namefrom user_tables;

上面使用到了ignore参数,如果要导入的对象已经存在,默认情况导入就会报错。

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

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

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

(1)登录peng用户,删除指定表及数据

sqlplus peng/peng
SQL> drop table haha;

(2)利用上面产生的备份集恢复,只还原表结构

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

(3)以peng用户登录,验证是否只还原了表结构,没有数据

sqlplus peng/peng
SQL> select tname from tab;
SQL> select * from haha;

很久很久以前,Oracle就开始提供用来提取表、模式或整个数据库的定义,然后导入到其他模式或数据的小工具:那就是exp/imp

那个时候数据库规模都很小(几百M就算超大数据库了),而且对于数据库的要求也没有那么高,不像现如今,动不动就是7*24小时高并发、高可用,以至在某些领域,exp/imp也被视作备份恢复的工具使用并延续至今。如果你使用exp备份几十G、数百G甚至更大规模数据库,并且将这种方式作为生产数据库的备份策略,这就太不合理了。

转载于:https://blog.51cto.com/51power/1659758

解密Oracle备份工具-exp/imp相关推荐

  1. exp参数feedback_Oracle数据库逻辑增量备份恢复之exp/imp参数inctype

    本帖最后由 java3344520 于 2012-11-8 12:51 编辑 大家看看这个参数inctype你是否使用过?我做了以下测试,欢迎拍砖! Oracle数据库逻辑增量备份之exp/imp 一 ...

  2. ORACLE 备份恢复命令imp/exp

    几天闲来无事,就整理了下imp/exp imp/exp是Oracle导入导出命令,可以用作数据的迁移,expdp/imdp也是Oracle数据导入导出的命令,效率比imp/exp效率要高,这个后面再讨 ...

  3. linux oracle 远程exp_linux单独安装oracle客户端及exp/imp工具配置

    本篇文章的操作在实际环境中进行过测试! 闲话少说,直接进入正文,下面为大家介绍在linux环境中如何单独配置oracle客户端去远程访问oracle数据库. 1.下载 Linux 下的 Oracle ...

  4. exp导oracle数据库,使用exp/imp 在oracle数据库间导数据

    最近工作需要将oracle数据库的表数据导出到另一个oracle数据库表,找到了oracle 自带的命令行,并记录下导数据过程. 导数据过程分以下几步: 假设源数据库为A,目标数据库为B 1.在B上通 ...

  5. Oracle下的exp/imp

    在平时做Oracle的备份的时候一般都是做逻辑热备份,而做逻辑热备份一般都是使用exp/imp,在这里就简单的说一说. 使用exp导出数据imp导入数据操作如下: exp username/passw ...

  6. Oracle数据迁移 EXP/IMP

    昨天用了这样一个语句来导出数据库文件..导了一会儿就卡死了. full=y是导出整个数据库,不加full=y是导出当前连接数据库的用户下的数据,trainee这个用户没有DBA权限,应该是不能导出整个 ...

  7. oracle exp 二进制,Oracle备份之exp自动逻辑备份(二)

    exp是oracle的逻辑备份,是将数据库中的数据导出到二进制数据库文件. exp的三种导出方式 1.表方式(T方式),将指定表的数据导出. 2.用户方式(U方式),将指定用户的所有对象及数据导出. ...

  8. linux单独安装oracle客户端及exp/imp工具配置

    1.下载安装包 下载链接 https://www.oracle.com/technetwork/database/database-technologies/instant-client/downlo ...

  9. Oracle exp/imp导出导入命令及数据库备份

    Oracle exp/imp导出导入命令及数据库备份 Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令 ...

最新文章

  1. WaitForMultipleObjects用法详解
  2. JAVA 游览时间最长,[蓝桥杯][算法训练]景点游览-题解(Java代码)
  3. Angular HttpClient.get的实现单步调试
  4. 华为融合电信云解决方案包括_运营商这“一朵云”怎么建?使能者华为的解决之道...
  5. 25款操作系统全面接触 [2]
  6. 程序员面试金典 - 面试题 17.18. 最短超串(双指针+哈希)
  7. lstm原文_LSTM模型与水文模型在径流模拟中的比较
  8. android jni与java之间数据传输时怎么转换
  9. 手机内存占用超过一半会不会卡?
  10. ~~高精度除以低精度
  11. HDFS进阶应用 配置 NFS 网关
  12. 分享用Adobe Air向iOS移植游戏的经验
  13. c# 模拟串口通信 SerialPort
  14. python企业微信登录_python 微信企业号
  15. 基于单片机的无线防盗报警系统设计(#0449)
  16. css强制一行显示超出的部分显示点点点
  17. 小案例:基于python的动态时钟,带十二时辰和经络养身
  18. IT科技行业发展现状,未来发展方向有哪些?
  19. 影之刃2服务器维护,影之刃2一个忠实玩家的心声和建议
  20. 一个退休程序员让百年数学难题逼近理论极限

热门文章

  1. c语言共享内存储存结构体,C语言共享内存使用思路利用结构体
  2. SystemVerilog中根据系统时间产生随机数的函数
  3. 数据库MySQL驱动5.1.22下载_mysql-connector-java-5.1.22下载
  4. fsck 修复文件系统_微软推出Win10 20H2 Build 19042.608测试版 修复多种已知错误
  5. css两列显示,div+css如何控制信息分两列显示?
  6. vscode 推荐premiter_vscode 有哪些让人眼前一亮的插件?
  7. mysql ibdata1 损坏_mysql innodb文件ibdata1损坏导致mysql无法启动
  8. ssm 新建拦截器_拦截器在springboot项目和ssm架构项目的应用
  9. html加入购物车的动画,关于购物车添加按钮的动画
  10. setuptools Declaring Dependencies