虽然是按照用户的方式导出的,但导入之前,还是必须要有相同的用户存在,删除用户以后,是无法进行导入的
--重新创建回zlm用户 SQL> create user zlm identified by zlm;

尽管zlm用户的默认表空间是USERS,但是用imp导入后的表还是会去找原来的表空间进行恢复,即“ZLM”,那么我们把原来的表空间也删除掉,会怎么样呢?
--删除ZLM表空间后测试恢复情况 SQL> drop tablespace zlm including contents;

注意,使用including contents只是把可控制文件中相应的信息删除,物理上还是存在于OS的磁盘上的,如果要连同文件一起删除,那么就要使用including contents and datafiles,那么就连渣渣也不剩了

当我们把原来zlm用户导出时的表空间ZLM删除以后再倒入,此时会发现imp会把用户导到数据库缺省的USERS表空间上去,基于这种原理,当我们做逻辑导入导出的时候,尽量保持源端与目标端有相同的环境,当然还包括字符集(这里没有做测试)等。否则在导入数据后,可能会产生意外地状况,比方说源库的表空间是很大的,但是由于在目标库中没有创建相应的表空间,默认放到了USERS表空间中,环境和源库产生了不同,可能导入的时候就直接报错了。当然了,字符集更是一个要注意的问题。

exp/imp通常在Oracle 8i/9i等早期的版本中用得较多,到了10g以后基本全面被数据库泵(Data Pump)取代,即expdp/impdp,虽然说已经是过时的技术,但作为DBA也不能完全不了解,因为和数据泵还是有异曲同工之处的,只是数据泵的功能更强大了。本篇实验采用了一个最不实用的方法来演示exp/imp的使用方法,即:交互方式,该方式可支配的参数非常少,如,不能指定log,feedback等参数,也不能指定按条件进行导出,且每次使用起来都要一步步确认非常多的步骤,非常繁琐,不推荐使用,即便要使用,也推荐采用另外两种方式:1.命令行模式、2.参数文件模式(推荐)。

先备份相关表
分为按用户导与按表导,
按表的话,需要指定表名。
备份内容有:
一个表中所有的数据
一个表的数据与结构
按用户的话,该用户下的所在模式对象都导出来了

exp help=y
exp hr/123456
回答几个问题

带着问题去学习!!!!到这里所产生的问题
1.exp-00091:exporting questionable statistics.是什么东西
2.用exp导出所有的表如何做。上面的需要事先知道表名,然后一个一个导出。
经baidu查询,
问题1解决办法如下:

指定Linux系统的NLS_LANG环境变量为数据库的字符集
1)查询数据库的字符集(方法很多只用一种)
SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK

2)设置Linux操作系统的NLS_LANG环境变量
[oracle@RH207 exp]$export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
Window系统的环境变量的修改方法是:
C:\>set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1

这样再次exp时就不会报EXP-00091: Exporting questionable statistics.错误了

按用户导

[oracle@db Downloads]$ expExport: Release 11.2.0.4.0 - Production on Sun Dec 18 12:50:18 2016Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.Username: lcpsys
Password: Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Enter array fetch buffer size: 4096 > Export file: expdat.dmp > (1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > Export grants (yes/no): yes > Export table data (yes/no): yes > Compress extents (yes/no): yes > Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
--about to 即将,行将;刚要
About to export specified users ...--指定要导出的用户名
User to be exported: (RETURN to quit) > lcpsys
--如果没有其它的用户名,直接回车退出配置模式,就开始导了。
User to be exported: (RETURN to quit) >
--开始了
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user LCPSYS
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions for user LCPSYS
About to export LCPSYS's objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export LCPSYS's tables via Conventional Path ...

问题2解决办法如下:
具体命令参数可以参考
exp help=y
1、EXP:
      有三种主要的方式(完全、用户、表)
      1、完全:
          EXP SYSTEM/123456 BUFFER=64000 FILE=full.dmp FULL=Y
          如果要执行完全导出,必须具有特殊的权限
      2、用户模式:
          EXP hr/123456    BUFFER=64000 FILE=hr.dmp OWNER=hr
          这样用户hr的所有对象被输出到文件中。
      3、表模式:
          EXP hr/123456    BUFFER=64000 FILE=hr-xue.dmp TABLES=xue
          这样用户hr的表xue就被导出
2、IMP:
      具有三种模式(完全、用户、表)
      1、完全:
          IMP SYSTEM/123456 BUFFER=64000 FILE=full.dmp FULL=Y
      2、用户模式:
          IMP hr/123456    BUFFER=64000 FILE=hr.dmp FROMUSER=hr TOUSER=hr
          这样用户hr的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数,这样才能导入数据。
      3、表模式:
          IMP hr/123456    BUFFER=64000 FILE=hr-xue.dmp TABLES=xue
          这样用户hr的表xue就被导入。有一个问题是,如果表存在,数据不能导入,只需要在后面加入ignore=y参数就可以了

问题的现象:
EXP-00026: conflicting modes specified
EXP-00000: Export terminated unsuccessfully

备份文件会生成 但是没有内容。
这个问题主要是 exp的时候 里面参数发生了冲突。
   比较常见的:
1.同时指定了 owner  和 tables
2.同时指定了 FULL 和tables
3.同时指定了多个owner和full
owner 表示导出整个用户或者多个用户  而tables表示只导出其中的表 。
要么只导出其中的表  要么导出整个用户。不然就会冲突了、

增删改相关行或表,再用备份的数据进行恢复。
sqlplus hr/123456
set pagesize 200
set linesize 200
create table xue(id integer,name varchar(25));
insert into xue values(1,'wang');
insert into xue values(2,'liu');
commit;

将表删除
drop table xue;
如果有索引关系的表,用下面
drop table mytest cascade constraints;

留下表结构,删除一行或所有数据。
delete from regions where region_id=5;
delete from regions

imp hr/123456
回答几个问题

带着问题去学习!!!!到这里所产生的问题
1.所要回答的问题有些不清楚,需要细查一下。
2.字符集的问题要处理一下。
经baidu查询,结果如下:

以上的这种方法算是一种逻辑备份,将数据导入到一个临时的文件之中。
还可以物理备份的方法,即将oradata/下面的所有数据全部复制到另外一个安全的地方,也叫冷备
还可以热备的方法。

ORACLE数据库有两类备份方法。第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库;第二类备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以不需要外部存储设备。
  
  数据库逻辑备份方法
  
  ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。
  
  表模式
  
  备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。
  
  若备份到本地文件,使用如下命令:
  
  exp icdmain/icd rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=exp_icdmain_csd_yyyymmdd.dmp
  log=exp_icdmain_csd_yyyymmdd.log
  tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
  
  若直接备份到磁带设备,使用如下命令:
  exp icdmain/icd rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=/dev/rmt0
  log=exp_icdmain_csd_yyyymmdd.log
  tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
  
  注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。出于速度方面的考虑,尽量不要直接备份到磁带设备。
  
  用户模式
  
  备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。
  若备份到本地文件,使用如下命令:
  exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=exp_icdmain_yyyymmdd.dmp
  log=exp_icdmain_yyyymmdd.log
  若直接备份到磁带设备,使用如下命令:
  exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=/dev/rmt0
  log=exp_icdmain_yyyymmdd.log
  注:如果磁盘有空间,建议备份到磁盘,然后再拷贝到磁带。如果数据库数据量较小,可采用这种办法备份。

完全模式

  1、 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
  exp system/manager@TEST file=d:\daochu.dmp full=y
   2、 将数据库中system用户与sys用户的表导出
  exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
  3、 将数据库中的表table1 、table2导出
  exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
  4、 将数据库中的表table1中的字段filed1以"00"打头的数据导出
  exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
  上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。不过在上面命令后面 加上 compress=y 就可以了

删除某用户下的所有对象
Oracle删除用户下所有对象的方法未必人人都会,下面就为您介绍两种常用的Oracle删除用户下所有对象的方法,希望对您学习Oracle删除用户方面能有所帮助。

方法1:
drop user hr cascade;
    要退出所有的hr用户连接,才能正确执行。
drop tablespace USERS INCLUDING CONTENTS;
    不能删除默认永久表空间。

create user hr profile default identified by 123456 default tablespace USERS temporary tablespace TEMP account unlock;

--授权
grant dba to hr;
grant connect,resource to hr;

方法2:
写存储过程实现

DECLARE
TYPE name_list IS TABLE OF VARCHAR2(40);
TYPE type_list IS TABLE OF VARCHAR2(20);

Tab_name name_list:=name_list();
Tab_type type_list:=type_list();

sql_str VARCHAR2(500);
BEGIN
sql_str := 'select uo.object_name,uo.object_type from user_objects uo where uo.object_type not in(''INDEX'',''LOB'') order by uo.object_type desc';
EXECUTE IMMEDIATE sql_str BULK COLLECT INTO tab_name,tab_type;

FOR i IN Tab_name.FIRST.. Tab_name.LAST LOOP
sql_str := 'DROP ' || Tab_type(i) || ' ' || Tab_name(i);
EXECUTE IMMEDIATE sql_str;
END LOOP;
END;

sqlplus hr/123456
drop table jobs cascade constraints;    这样直接删除可能会有问题。所以尽量用下面的步骤解决,因为看了以后,没有明白后续步骤。
drop table jobs
ORA-02449: unique/primary keys in table referenced by foreign keys
报错,用下面的方法解决

1.检查哪些表的外键引用了要删除的表的唯一/主键.
select A.*
from user_constraints A, user_constraints B
where b.table_name = 'MYTEST'
and a.constraint_type = 'R'
and a.r_constraint_name = b.constraint_name;

2.生成所有引用要删除表的外键的创建语句.
      select 'select dbms_metadata.get_ddl(''REF_CONSTRAINT'',''' ||
          A.CONSTRAINT_NAME || ''') FROM DUAL;'
       from user_constraints A, user_constraints B
       WHERE b.table_name = 'JOBS'
        and a.constraint_type = 'R'
        and a.r_constraint_name = b.constraint_name;

select 'drop table '|| table_name ||' cascade constraints' sql1 from user_tables;
     
3.执行步骤2中产生的SQL语句,获取外键定义.
      set long 3000
      set linesize 3000
      set pagesize 300
      执行步骤2产生的语句.
4.删除表.
      drop table mytest cascade constraints;
5.删除并重建表.
6.建立因创建该表所删除的外键约束.
      执行步骤3中获取到的sql语句.
7.检查各外键是否得到恢复,系统是否正常.

drop table emp purge;

purge recyclebin;

commit,事务与删除表没有关系,可以不用敲。

exp
没有数据的表是不导出的。

在实际的备份操作中,exp与imp用不了,因为在其导出的过程中,必须保证其他用户不更新数据。

数据库的冷备份,严格称为归档备份。指的是数据库要关闭服务,所有的事务都需要提交。
备份如下内容:oradata/目录下的内容
1.控制文件:通过v$controlfile数据字典找到
2.重做日志文件:通过v$logfile数据字典找到
3.数据文件:通过v$datafile数据字典找到
4.参数文件: 通过show parameter pfile找到
5.记录好相关文件的路径
6.关闭oracle服务,但是这个关有个问题,比如超市说关门,不是立马就关的,有时能关一个小时,在关闭其间还有少量的io.
    shutdown immediate
7.复制出所有的相关文件
8.重新启动oracle服务,多种方式
    startup或者将计算机关机一下,再开机,再startup

oracle-备份工具exp-imp相关推荐

  1. 解密Oracle备份工具-exp/imp

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

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

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

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

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

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

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

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

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

  6. Oracle下的exp/imp

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

  7. Oracle数据迁移 EXP/IMP

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

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

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

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

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

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

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

最新文章

  1. 米扑博客:总结分享 WordPress显示评论者IP归属地、浏览器、终端设备、电信运营商...
  2. Mac下Selenium无法最大化Chrome解决方案
  3. Node 抓取非utf-8编码页面
  4. Java集合:Hashtable源码分析
  5. 认识 Linux 系统结构
  6. HDFC的完整形式是什么?
  7. 鸿蒙os全面升级,华为突然宣布,鸿蒙OS正式版6月底全面升级,幸福来得太突然...
  8. mysqld_multi stop 不能停掉mysql
  9. docker ubuntu16安装
  10. 洛谷——P1155 双栈排序
  11. 手机信令数据怎么获得_手机信令数据辅助下的张江科学城职住分析及对策 | 上海城市规划...
  12. mysql oracle replay_Oracle 数据库重放(Database Replay)功能演示
  13. 关于金格电子签章的使用问题处理
  14. 金源高端IPO被终止:曾拟募资7.5亿 儒杉资产与溧阳产投是股东
  15. The JAVA_HOME environment variable is not defined correctly(亲测有效)
  16. android阅读器里的 txt 文本处理分页功能的实现:
  17. 联想电脑白屏了按哪个键可以修复?
  18. python读取usb数据显示_在python中从各种usb设备读取和存储各种数据
  19. 什么是WMS系统,有什么功能?
  20. UDA一致正则化和熵最小化

热门文章

  1. 织梦 mysql 配置文件_MySQL集群配置
  2. hadoop学习1 java操作HDFS
  3. Deep Learning Toolkits 的比较(转)
  4. python 之configparser模块
  5. Celery框架简单实例
  6. openWRT自学---针对backfire版本的主要目录和文件的作用的分析整理
  7. 3DMax插件和它的3DXI接口
  8. bootstrap-select采坑
  9. jQuery length 和 size()区别
  10. python第十九天(random、json、pickle、hashlib、hmac、shutil、shevle模块)