oracle中的exp,imp使用详解

远程导出:
exp 用户名/密码@IP地址:1521/实例名 file=test.dmp log=test.log
上面这个语句是导出远程服务器的数据的
导出本机数据库数据的话,就把上面语句“IP地址:1521/”这部分去掉就可以了。

基本语法和实例:
    1、EXP:
      有三种主要的方式(完全、用户、表)
      1、完全:
          EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y
          如果要执行完全导出,必须具有特殊的权限
      2、用户模式:
          EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC
          这样用户SONIC的所有对象被输出到文件中。
      3、表模式:
          EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
          这样用户SONIC的表SONIC就被导出
    2、IMP:
      具有三种模式(完全、用户、表)
      1、完全:
          IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y
      2、用户模式:
          IMP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP FROMUSER=SONIC TOUSER=SONIC
          这样用户SONIC的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数,这样才能导入数据。
      3、表模式:
          EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
          这样用户SONIC的表SONIC就被导入。


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  就可以了

  二、数据的导入

  1、将D:\daochu.dmp 中的数据导入 TEST数据库中。
  imp system/manager@TEST  file=d:\daochu.dmp
  上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
  在后面加上 ignore=y 就可以了。

  2 将d:\daochu.dmp中的表table1 导入
  imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)
  基本上上面的导入导出够用了。不少情况我是将表彻底删除,然后导入。

  注意:
  你要有足够的权限,权限不够它会提示你。
  数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

    EXP的所有参数(括号中为参数的默认值):

USERID        用户名/口令      如: USERID=duanl/duanl     

FULL          导出整个数据库 (N)

BUFFER        数据缓冲区的大小        

OWNER        所有者用户名列表,你希望导出哪个用户的对象,就用owner=username

FILE           输出文件 (EXPDAT.DMP)   

TABLES        表名列表 ,指定导出的table名称,如:TABLES=table1,table2

COMPRESS     导入一个extent (Y)  

RECORDLENGTH   IO 记录的长度

GRANTS        导出权限 (Y)           

INCTYPE        增量导出类型

INDEXES        导出索引 (Y)          

RECORD        跟踪增量导出 (Y)

ROWS           导出数据行 (Y)       

PARFILE        参数文件名,如果你exp的参数很多,可以存成参数文件.

CONSTRAINTS   导出约束 (Y)   

CONSISTENT    交叉表一致性

LOG            屏幕输出的日志文件   

STATISTICS     分析对象 (ESTIMATE)

DIRECT         直接路径 (N)             

TRIGGERS      导出触发器 (Y)

FEEDBACK      显示每 x 行 (0) 的进度

FILESIZE        各转储文件的最大尺寸

QUERY          选定导出表子集的子句

下列关键字仅用于可传输的表空间

TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)

TABLESPACES 将传输的表空间列表

IMP的所有参数(括号中为参数的默认值):

USERID    用户名/口令          

FULL      导入整个文件 (N)

BUFFER    数据缓冲区大小        

FROMUSER      所有人用户名列表

FILE      输入文件 (EXPDAT.DMP)   

TOUSER        用户名列表

SHOW      只列出文件内容 (N)

TABLES       表名列表

IGNORE    忽略创建错误 (N)   

RECORDLENGTH   IO 记录的长度

GRANTS   导入权限 (Y)         

INCTYPE       增量导入类型

INDEXES 导入索引 (Y)         

COMMIT        提交数组插入 (N)

ROWS     导入数据行 (Y)      

PARFILE       参数文件名

LOG       屏幕输出的日志文件  

CONSTRAINTS   导入限制 (Y)

DESTROY   覆盖表空间数据文件 (N)

INDEXFILE 将表/索引信息写入指定的文件

SKIP_UNUSABLE_INDEXES   跳过不可用索引的维护 (N)

ANALYZE   执行转储文件中的 ANALYZE 语句 (Y)

FEEDBACK 显示每 x 行 (0) 的进度

TOID_NOVALIDATE   跳过指定类型 id 的校验

FILESIZE 各转储文件的最大尺寸

RECALCULATE_STATISTICS 重新计算统计值 (N)

下列关键字仅用于可传输的表空间

TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)

TABLESPACES 将要传输到数据库的表空间

DATAFILES 将要传输到数据库的数据文件

TTS_OWNERS 拥有可传输表空间集中数据的用户

你可能感兴趣的:(oracle,sql,导出,exp,imp)