exp,imp(oracle)

本文介绍Oracle数据库的三种标准备份方法:导出/导入、热备份和冷备份。重点讲解了导出/导入(EXP/IMP)的具体参数设置及使用场景,包括如何进行全库、用户级和表级的备份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。
Expdp impdp
参数说明:
Cmd下键入exp help=y
   exp:    
1FULL,这个用于导出整个数据库,在ROWS=N=Y的时候会把数据导出)一起使用时,可以导出整个数据库的结构。
例如: exp system/password file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y
2BUFFERFEEDBACK,在导出比较多的数据时,我会考虑设置这两个参数。例如:
exp system/liuyi2002 file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000  tables=WO4,OK_YT
    3FILELOG,这两个参数分别指定备份的DMP名称和LOG名称,包括文件名和目录。
需要说明的是,EXP可以直接备份到磁带中,即使用FILE=/dev/rmt0(磁带设备名),但是一般我们都不这么做,原因有二:
一、这样做的速度会慢很多,
二、现在一般都是使用磁带库的,不建议直接对磁带进行操作。至于
没有使用磁带库的朋友可以考虑和UNIXTAR结合使用。
    4COMPRESS参数将在导出的同时合并碎块,尽量把数据压缩到initialEXTENT里,默认是N,一般建议使用。DIRECT参数将告诉EXP直接读取数据,而不像传统的EXP那样,使用SELECT来读取表中的数据,这样就减少了SQL语句处理过程。一般也建议使用。不过有些情况下DIRECT参数是无法使用的。
    5QUERY参数后面跟的是where条件,值得注意的是,整个where子句需要使用""括起来,where子句的写法和SELECT中相同
 exp system/liuyi2002 file=1.dmp log=1.log tables=test query="where c1=20 and c2=gototop"
      6OBJECT_CONSISTENT - 用于设置EXP对象为只读以保持对象的一致性。默认是N
    7FLASHBACK_SCNFLASHBACK_TIME - 用于支持FLASHBACK功能而新增。
    8RESUMABLERESUMABLE_NAMERESUMABLE_TIMEOUT - 用于支持RESUMABLE空间分配而新增。
    9TTS_FULL_CHECK - 用于在传输表空间时使用依赖性检查。
    10TEMPLATE - 用于支持iAS
    11TABLESPACES - 设置表空间导出模式。个人觉得对于一般用户而言,这个才是新增参数中最实用的一个,可以让用户在原来的FULLOWNERTABLES的基础上多了一种选择,使得EXP更加灵活。
  imp:
    1FROMUSERTOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。
    2IGNOREGRANTSINDEXES,其中IGNORE参数将忽略表的存在,继续导入,这个对于需要调整表的存储参数时很有用,我们可以先根据实际情况用合理的存储参数建好表,然后直接导入数据。而GRANTSINDEXES则表示是否导入授权和索引,如果想使用新的存储参数重建索引,或者为了加快到入速度,我们可以考虑将INDEXES设为N,而GRANTS一般都是Y
另外一个EXP/IMP都有的参数是PARFILE,它是用来定义EXP/IMP的参数文件,也就是说,上面的参数都可以写在一个参数文件中,但我们一般很少使用。
详细说明
一、导出/导入(ExportImport)利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。
1、简单导出数据(Export)和导入数据(Import
Oracle支持三种方式类型的输出:
(1)、表方式(T方式),将指定表的数据导出。
表模式备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。
  若备份到本地文件,使用如下命令:
  exp icdmain/icd rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=d:/exp.dmp
  log=d:/exp.log
  tables=test1,test2
  若直接备份到磁带设备,使用如下命令(UNIX)
  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
  注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。出于速度方面的考虑,尽量不要直接备份到磁带设备。
(2)、用户方式(U方式),将指定用户的所有对象及数据导出。
  用户模式
  备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。
  若备份到本地文件,使用如下命令:
  exp system/password owner=test 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
  注:如果磁盘有空间,建议备份到磁盘,然后再拷贝到磁带。如果数据库数据量较小,可采用这种办法备份。
(3)、全库方式(Full方式),将数据库中的所有对象导出。
  完全模式
  备份完整的数据库。业务数据库不采用这种备份方式。备份命令为:
  exp icdmain/icd rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0 full=y
  file=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)
  log=exp_fulldb_yyyymmdd.log
  对于数据库备份,建议采用增量备份,即只备份上一次备份以来更改的数据。增量备份命令:
  exp icdmain/icd rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0 full=y inctype=incremental
  file=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)
  log=exp_fulldb_yyyymmdd.log
数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。
2、增量导出/导入
增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。
在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名
export.dmp,必须在命令行中指出要用的文件名。
增量导出包括三种类型:
(1)、“完全”增量导出(Complete即备份三个数据库,比如: [table=400][tr][td][pre]exp
system/manager inctype=complete file=040731.dmp[/pre][/td][/tr][/table]
(2)、“增量型”增量导出备份上一次备份后改变的数据,比如: [table=400][tr][td][pre]exp
system/manager inctype=incremental file=040731.dmp[/pre][/td][/tr][/table]
(3)、“累积型”增量导出累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。比如:
exp system/manager inctype=cumulative file=040731.dmp
--备注
1. 必须在open模式下
2. 坏块的处理:
可以ALTER SYSTEM SET EVENTS='10231 trace name context forever,level 10' ;
再执行exp
完成后关闭 10231
alter system set events='10231 trace name context off';
3.一般来说,从低版本导入到高版本问题不大,麻烦的是将高版本的数据导入到低版本中,在Oracle9i之前,不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决:
    1、在高版本数据库上运行底版本的catexp.sql
    2、使用低版本的EXP来导出高版本的数据;
    3、使用低版本的IMP将数据库导入到底版本数据库中;
    4、在高版本数据库上重新运行高版本的catexp.sql脚本。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值