oracle导入导出

2010-07-12  张静 

一.介绍
数据库逻辑备份方法
  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
注:如果磁盘有空间,建议备份到磁盘,然后再拷贝到磁带。如果数据库数据量较小,可采用这种办法备份。
   
完全模式
  备份完整的数据库。业务数据库不采用这种备份方式。备份命令为:
  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

数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。

  表模式
  此方式将根据按照表模式备份的数据进行恢复。
  恢复备份数据的全部内容若从本地文件恢复,使用如下命令:
   imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=exp_icdmain_csd_yyyymmdd.dmp log=imp_icdmain_csd_yyyymmdd.log
  若从磁带设备恢复,使用如下命令:
   imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0log=imp_icdmain_csd_yyyymmdd.log
恢复备份数据中的指定表若从本地文件恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=exp_icdmain_csd_yyyymmdd.dmp log=imp_icdmain_csd_yyyymmdd.log tables=commoninformation,serviceinfo
若从磁带设备恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0 log=imp_icdmain_csd_yyyymmdd.log tables=commoninformation,serviceinfo
   
用户模式
  此方式将根据按照用户模式备份的数据进行恢复。
  恢复备份数据的全部内容若从本地文件恢复,使用如下命令:
  imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=exp_icdmain_yyyymmdd.dmp log=imp_icdmain_yyyymmdd.log
若从磁带设备恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
log=imp_icdmain_yyyymmdd.log
恢复备份数据中的指定表若从本地文件恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=exp_icdmain_yyyymmdd.dmp log=imp_icdmain_yyyymmdd.log tables=commoninformation,serviceinfo
若从磁带设备恢复,使用如下命令:
imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0 log=imp_icdmain_yyyymmdd.log tables=commoninformation,serviceinfo
   
完全模式
如果备份方式为完全模式,采用下列恢复方法:若从本地文件恢复,使用如下命令:
imp system/manager rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 full=y
file=exp_icdmain_yyyymmdd.dmp log=imp_icdmain_yyyymmdd.log
若从磁带设备恢复,使用如下命令:
imp system/manager rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 full=y
file=/dev/rmt0 log=imp_icdmain_yyyymmdd.log

二.语法与参数
   
IMP格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)
    USERID 必须是命令行中的第一个参数。

   关键字 说明(默认)        关键字      说明(默认)
   --------------------------------------------------------------------------
   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)
   FEEDBACK               每 x 行显示进度 (0)
   TOID_NOVALIDATE        跳过指定类型 ID 的验证
   FILESIZE               每个转储文件的最大大小
   STATISTICS             始终导入预计算的统计信息
   RESUMABLE              遇到与空格有关的错误时挂起 (N)
   RESUMABLE_NAME         用来标识可恢复语句的文本字符串
   RESUMABLE_TIMEOUT      RESUMABLE 的等待时间
   COMPILE                编译过程, 程序包和函数 (Y)

   下列关键字仅用于可传输的表空间
   TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
   TABLESPACES 将要传输到数据库的表空间
   DATAFILES 将要传输到数据库的数据文件
   TTS_OWNERS 拥有可传输表空间集中数据的用户

==============================================
IMP格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
USERID 必须是命令行中的第一个参数。

   关键字 说明(默认)        关键字      说明(默认)
   --------------------------------------------------------------------------
   USERID   用户名/口令           FULL         导出整个文件 (N)
   BUFFER   数据缓冲区大小         OWNER     所有者用户名列表
   FILE       输出文件 (EXPDAT.DMP) TABLES       表名称列表
   COMPRESS   导入到一个区 (Y) RECORDLENGTH IO 记录的长度
   GRANTS 导出权限 (Y)           INCTYPE      增量导出类型
   INDEXES    导出索引 (Y)         RECORD       跟踪增量导出 (Y)
   DIRECT     直接路径 (N)            TRIGGERS     导出触发器 (Y)
   LOG        屏幕输出的日志文件 STATISTICS   分析对象 (ESTIMATE)
   ROWS    导出数据行 (Y)        PARFILE      参数文件名
   CONSISTENT 交叉表一致性    CONSTRAINTS 导出约束条件 (Y)

   FEEDBACK             每 x 行显示进度 (0)
   FILESIZE             每个转储文件的最大大小
   FLASHBACK_SCN        用于回调会话快照的 SCN
   FLASHBACK_TIME       用来获得最接近于指定时间的 SCN 的时间
   QUERY                用来导出表的子集的选择子句
   RESUMABLE            遇到与空格有关的错误时挂起 (N)
   RESUMABLE_NAME       用来标识可恢复语句的文本字符串
   RESUMABLE_TIMEOUT    RESUMABLE 的等待时间
   TTS_FULL_CHECK       对 TTS 执行完全或部分相关性检查
   TABLESPACES          要导出的表空间列表
   TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
   TEMPLATE 调用 iAS 模式导出的模板名称

三:参数说明
1. ignore参数
Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来决定如何操作。若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。若ignore=n,Oracle不执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。
2. indexes参数
在恢复数据的过程中,若indexes=n,则表上的索引不会被恢复,但是主键对应的唯一索引将无条件恢复,这是为了保证数据的完整性。字符集转换对于单字节字符集(例如US7ASCII),恢复时,数据库自动转换为该会话的字符集(NLS_LANG参数);对于多字节字符集(例如ZHS16CGB231280),恢复时,应尽量使字符集相同(避免转换),如果要转换,目标数据库的字符集应是输出数据库字符集的超集。
379°/3797 人阅读/0 条评论 发表评论

登录 后发表评论