`

Oracle导入程序Imp的使用详解

阅读更多
Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文件。imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用法。



1. 获取帮助

imp help=y
2. 导入一个完整数据库

imp system/manager file=bible_db log=dible_db full=y ignore=y
3. 导入一个或一组指定用户所属的全部表、索引和其他对象

imp system/manager file=seapark log=seapark fromuser=seapark imp
system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)
4. 将一个用户所属的数据导入另一个用户

imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy
imp system/manager file=tank log=tank fromuser=(seapark,amy)
touser=(seapark1, amy1)
5. 导入一个表

imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)
6. 从多个文件导入

imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck, filesize=1G full=y
7. 使用参数文件

imp system/manager parfile=bible_tables.par
bible_tables.par参数文件:

#Import the sample tables used for the Oracle8i Database Administrator's
Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import
8. 增量导入

imp system./manager inctype= RECTORE FULL=Y FILE=A
Oracle imp/exp C:Documents and Settingsadministrator>exp help=yExport: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:04:43 2004Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved. 通过输入 EXP 命令和用户名/口令,您可以后接用户名/口令的命令:例程: EXP SCOTT/TIGER或者,您也可以通过输入跟有各种参数的 EXP 命令来控制“导出”按照不同参数。要指定参数,您可以使用关键字:格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)例程: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)或 TABLES=(T1: P1,T1: P2),如果 T1 是分区表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 交叉表的一致性 (N) CONSTRAINTS  导出的约束条件 (Y)OBJECT_CONSISTENT    只在对象导出期间设置为读的事务处理 (N)FEEDBACK             每 x 行的显示进度 (0)FILESIZE             每个转储文件的最大大小FLASHBACK_SCN        用于将会话快照设置回以前状态的 SCNFLASHBACK_TIME       用于获取最接近指定时间的 SCN 的时间QUERY                用于导出表的子集的 select 子句RESUMABLE            遇到与空格相关的错误时挂起 (N)RESUMABLE_NAME       用于标识可恢复语句的文本字符串RESUMABLE_TIMEOUT    RESUMABLE 的等待时间TTS_FULL_CHECK       对 TTS 执行完整的或部分相关性检查TABLESPACES          要导出的表空间列表TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)TEMPLATE             调用 iAS 模式导出的模板名在没有警告的情况下成功终止导出。==================================================C:Documents and Settingsadministrator>imp help=yImport: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:06:54 2004Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved. 可以通过输入 IMP 命令和您的用户名/口令后接用户名/口令的命令:例程: IMP SCOTT/TIGER或者, 可以通过输入 IMP 命令和各种参数来控制“导入”按照不同参数。要指定参数,您可以使用关键字:格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)例程: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N或 TABLES=(T1: P1,T1: P2),如果 T1 是分区表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)STREAMS_CONFIGURATION  导入 Streams 的一般元数据 (Y)STREAMS_INSTANITATION  导入 Streams 的实例化元数据 (N)下列关键字仅用于可传输的表空间TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)TABLESPACES 将要传输到数据库的表空间DATAFILES 将要传输到数据库的数据文件TTS_OWNERS 拥有可传输表空间集中数据的用户成功终止导入,但出现警告。oracle的imp和exp的一些用法- -                                       Oracle8i/9i EXP/IMP使用经验  一、8i EXP常用选项 1、FULL,这个用于导出整个数据库,在ROWS=N一起使用时,可以导出整个数据库的结构。例如: exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y 2、BUFFER和FEEDBACK,在导出比较多的数据时,我会考虑设置这两个参数。例如: exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT 3、FILL和LOG,这两个参数分别指定备份的DMP名称和LOG名称,包括文件名和目录,例子见上面。 需要说明的是,EXP可以直接备份到磁带中,即使用FILE=/dev/rmt0(磁带设备名),但是一般我们都不这么做,原因有二:一、这样做的速度会慢很多,二、现在一般都是使用磁带库的,不建议直接对磁带进行操作。至于没有使用磁带库的朋友可以考虑和UNIX的TAR结合使用。 如果你真想使用EXP直接到磁带,你可以参考Metalink文章“EXPORTING TO TAPE ON UNIX SYSTEMS”(文档号:30428.1),该文中有详细解释。 4、COMPRESS参数将在导出的同时合并碎块,尽量把数据压缩到initial的EXTENT里,默认是N,一般建议使用。DIRECT参数将告诉EXP直接读取数据,而不像传统的EXP那样,使用SELECT来读取表中的数据,这样就减少了SQL语句处理过程。一般也建议使用。不过有些情况下DIRECT参数是无法使用的。 5、如何使用SYSDBA执行EXP/IMP? 这是一个很现实的问题,有时候我们需要使用SYSDBA来执行EXP/IMP,如进行传输表空间的EXP/IMP,以及在9i下用SYS用户来执行EXP/IMP时,都需要使用SYSDBA才可。我们可以使用下面方式连入EXP/IMP: exp "'sys/sys as sysdba'" file=1.dmp tables=gototop.t rows=n 6、QUERY参数后面跟的是where条件,值得注意的是,整个where子句需要使用""括起来,where子句的写法和SELECT中相同,如果是UNIX平台所有"和'都需要使用u26469屏蔽它们的特殊含义: exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query="where c1=20 and c2=gototop" 如果是windows平台,则使用下面的格式: exp c/c@ncn file=c.dmp log=c.log tables=t query="""where id=1 and name='gototop'""" 二、8i IMP常用选项 1、FROMUSER和TOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。 2、IGNORE、GRANTS和INDEXES,其中IGNORE参数将忽略表的存在,继续导入,这个对于需要调整表的存储参数时很有用,我们可以先根据实际情况用合理的存储参数建好表,然后直接导入数据。而GRANTS和INDEXES则表示是否导入授权和索引,如果想使用新的存储参数重建索引,或者为了加快到入速度,我们可以考虑将INDEXES设为N,而GRANTS一般都是Y。 另外一个EXP/IMP都有的参数是PARFILE,它是用来定义EXP/IMP的参数文件,也就是说,上面的参数都可以写在一个参数文件中,但我们一般很少使用。 三、Oracle9i EXP功能描述 Oracle9i EXP在原有的基础上新增了部分新的参数,按功能主要分为以下几个部分: 1、OBJECT_CONSISTENT - 用于设置EXP对象为只读以保持对象的一致性。默认是N。 2、FLASHBACK_SCN和FLASHBACK_TIME - 用于支持FLASHBACK功能而新增。 3、RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT - 用于支持RESUMABLE空间分配而新增。 4、TTS_FULL_CHECK - 用于在传输表空间时使用依赖性检查。 5、TEMPLATE - 用于支持iAS。 6、TABLESPACES - 设置表空间导出模式。个人觉得对于一般用户而言,这个才是新增参数中最实用的一个,可以让用户在原来的FULL、OWNER、TABLES的基础上多了一种选择,使得EXP更加灵活。 四、不同版本的EXP/IMP问题? 一般来说,从低版本导入到高版本问题不大,麻烦的是将高版本的数据导入到低版本中,在Oracle9i之前,不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决: 1、在高版本数据库上运行底版本的catexp.sql; 2、使用低版本的EXP来导出高版本的数据; 3、使用低版本的IMP将数据库导入到底版本数据库中; 4、在高版本数据库上重新运行高版本的catexp.sql脚本。 但在9i中,上面的方法并不能解决问题。如果直接使用底版本EXP/IMP会出现如下错误: EXP-00008: ORACLE error %lu encountered ORA-00904: invalid column name 这已经是一个公布的BUG,需要等到Oracle10.0才能解决,BUG号为2261,你可以到METALINK上去查看有关此BUG的详细信息。 BUG归BUG,我们的工作还是要做,在没有Oracle的支持之前,我们就自己解决。在Oracle9i中执行下面的SQL重建exu81rls视图即可。 CREATE OR REPLACE view exu81rls  (objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)  AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname,  decode(bitand(r.stmt_type,1), 0,'', 'SELECT,')  || decode(bitand(r.stmt_type,2), 0,'', 'INSERT,')  || decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,')  || decode(bitand(r.stmt_type,8), 0,'', 'DELETE,'),  r.check_opt, r.enable_flag,  DECODE(BITAND(r.stmt_type, 16), 0, 0, 1)  from user$ u, obj$ o, rls$ r  where u.user# = o.owner#  and r.obj# = o.obj#  and (uid = 0 or  uid = o.owner# or  exists ( select * from session_roles where role='SELECT_CATALOG_ROLE')  )  /  grant select on sys.exu81rls to public;  /  五、其他问题 本文只讨论了Oracle8i和9i中的EXP/IMP的一些情况,对于之前的版本,在8.0.X中,除了QUERY参数不能用外,其它差别不大。针对没有QUERY的情况,我们可以先在数据库中使用查询条件建立临时中间表,然后使用EXP导出这个中间表即可。至于Oracle7因为目前使用的人较少,gototop不打算在此做详细解释了,如果读者朋友有需求,你可以参考Metalink文档:“Overview of Export and Import in Oracle7”(文档号:61949.1)。关于EXP/IMP的详细参数信息你可以通过EXP/IMP HELP=Y来获得。 另外关于传输表空间的更多信息可以参考下面的Metelink文档,本文不再详述。 [NOTE:77523.1] Transportable Tablespaces -- An Example to setup and use.  [NOTE:100698.1] Perform tablespace point-in-time recovery using Transportable Tablespace.  在进行并行EXP/IMP的时候,如果IMP过程建索引的话不建议同时运行5个以上的IMP,如果你想加快速度,可以在IMP的时候不建索引,这样只要内存允许,可以多跑几个,然后是SQL脚本创建需要的索引。 引用http://okone96.itpub.net/post/9033/196742ORACLE数据库有两类备份方法。第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库;第二类备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以不需要外部存储设备。数据库逻辑备份方法ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。表模式备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。若备份到本地文件,使用如下命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=exp_icdmain_csd_yyyymmdd.logtables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo若直接备份到磁带设备,使用如下命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=/dev/rmt0log=exp_icdmain_csd_yyyymmdd.logtables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。出于速度方面的考虑,尽量不要直接备份到磁带设备。用户模式备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。若备份到本地文件,使用如下命令:exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=exp_icdmain_yyyymmdd.dmplog=exp_icdmain_yyyymmdd.log若直接备份到磁带设备,使用如下命令:exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=/dev/rmt0log=exp_icdmain_yyyymmdd.log注:如果磁盘有空间,建议备份到磁盘,然后再拷贝到磁带。如果数据库数据量较小,可采用这种办法备份。完全模式备份完整的数据库。业务数据库不采用这种备份方式。备份命令为:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0 full=yfile=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)log=exp_fulldb_yyyymmdd.log对于数据库备份,建议采用增量备份,即只备份上一次备份以来更改的数据。增量备份命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0 full=y inctype=incrementalfile=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)log=exp_fulldb_yyyymmdd.log注:关于增量备份必须满足下列条件:1.只对完整数据库备份有效,且第一次需要full=y参数,以后需要inctype=incremental参数。2. 用户必须有EXP_FULL_DATABASE的系统角色。3. 话务量较小时方可采用数据库备份。4. 如果磁盘有空间,建议备份到磁盘,然后再备份到磁带。业务数据库备份方法及周期用EXP进行备份前,先在SYS用户下运行CATEXP.SQL文件(如果以前已运行该文件,则不要执行这个脚本)。没有特殊说明,不允许在客户端执行备份命令。备份命令参照表模式下的备份命令。从磁盘文件备份到磁带如果首先备份到本地磁盘文件,则需要转储到磁带设备上。1. 若需查看主机上配置的磁带设备,使用如下命令:lsdev -Cc tape显示的结果如下例所示:rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drivermt1 Defined  30-58-00-0,0 SCSI 4mm Tape Drive标明Available的设备是可用的磁带设备。2. 若需查看磁带存储的内容,使用如下命令:tar -tvf /dev/rmt0显示的结果如下例所示:-rw-r--r-- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp如果显示类似如下内容,则表示该磁带存储的备份数据是从数据库直接备份到磁带上,而非从本地磁盘转储到磁带的备份文件,因此操作系统无法识别。tar: 0511-193 An error occurred while reading from the media.There is an input or output error.或tar: 0511-169 A directory checksum error on media; -267331077 not equal to25626.3. 对于新磁带或无需保留现存数据的磁带,使用如下命令:tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp注:A. 该命令将无条件覆盖磁带上的现存数据。  B. 文件名不允许包含路径信息,如:/backup/exp_icdmain_yyyymmdd.dmp。4. 对于需要保留现存数据的磁带,使用如下命令:tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp注:该命令将文件exp_icdmain_yyyymmdd.dmp追加到磁带的末端,不会覆盖现存的数据。特别强调:如果备份时是从数据库直接备份到磁带上,则不可再向该磁带上追加复制任何其他文件,否则该备份数据失效。5. 若需将转储到磁带上的备份文件复制到本地硬盘,使用如下命令:A. 将磁带上的全部文件复制到本地硬盘的当前目录tar -xvf /dev/rmt0B. 将磁带上的指定文件复制到本地硬盘的当前目录tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp备份时间安排由于备份时对系统I/O有较大影响,所以,建议在晚上11点以后进行备份工作。业务数据库Oracle版本的恢复恢复方案需根据备份方案确定。由于业务数据库采用表备份和用户备份相结合的方案,所以业务数据库的恢复需根据实际情况采用表恢复和用户恢复相结合的方案。恢复方案数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。表模式此方式将根据按照表模式备份的数据进行恢复。A. 恢复备份数据的全部内容若从本地文件恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=imp_icdmain_csd_yyyymmdd.log若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0log=imp_icdmain_csd_yyyymmdd.logB. 恢复备份数据中的指定表若从本地文件恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=imp_icdmain_csd_yyyymmdd.logtables=commoninformation,serviceinfo若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=/dev/rmt0log=imp_icdmain_csd_yyyymmdd.logtables=commoninformation,serviceinfo用户模式此方式将根据按照用户模式备份的数据进行恢复。A. 恢复备份数据的全部内容若从本地文件恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.log若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0log=imp_icdmain_yyyymmdd.logB. 恢复备份数据中的指定表若从本地文件恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.logtables=commoninformation,serviceinfo若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0log=imp_icdmain_yyyymmdd.logtables=commoninformation,serviceinfo完全模式如果备份方式为完全模式,采用下列恢复方法:若从本地文件恢复,使用如下命令:imp system/manager rows=y indexes=n commit=y buffer=65536feedback=100000 ignore=y volsize=0 full=yfile=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.log若从磁带设备恢复,使用如下命令:imp system/manager rows=y indexes=n commit=y buffer=65536feedback=100000 ignore=y volsize=0 full=yfile=/dev/rmt0log=imp_icdmain_yyyymmdd.log参数说明1. ignore参数Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来决定如何操作。若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。若ignore=n,Oracle不执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。2. indexes参数在恢复数据的过程中,若indexes=n,则表上的索引不会被恢复,但是主键对应的唯一索引将无条件恢复,这是为了保证数据的完整性。字符集转换对于单字节字符集(例如US7ASCII),恢复时,数据库自动转换为该会话的字符集(NLS_LANG参数);对于多字节字符集(例如ZHS16CGB231280),恢复时,应尽量使字符集相同(避免转换),如果要转换,目标数据库的字符集应是输出数据库字符集的超集。恢复方法业务数据库采用表恢复方案。在用IMP进行恢复前,先在SYS用户下运行CATEXP.SQL文件(如果以前已运行该文件,则不要执行这个脚本),然后执行下列命令:IMP ICDMAIN/ICD FILE=文件名 LOG=LOG文件名 ROWS=YCOMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名注:要恢复的表名参照备份的表名  。恢复是在原表基础上累加数据  。没有特殊说明,不允许在客户端执行恢复命令将一个数据库的某用户的所有表导到另外数据库的一个用户下面的例子  exp userid=system/manager owner=username1 file=expfile.dmpimp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmp ORACLE数据库有两类备份方法。第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库;第二类备份方式为逻辑备份,业务数据库采用此种方式,此方法不需要数据库运行在归挡模式下,不但备份简单,而且可以不需要外部存储设备。数据库逻辑备份方法ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。表模式备份某个用户模式下指定的对象(表)。业务数据库通常采用这种备份方式。若备份到本地文件,使用如下命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=exp_icdmain_csd_yyyymmdd.logtables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo若直接备份到磁带设备,使用如下命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=/dev/rmt0log=exp_icdmain_csd_yyyymmdd.logtables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo注:在磁盘空间允许的情况下,应先备份到本地服务器,然后再拷贝到磁带。出于速度方面的考虑,尽量不要直接备份到磁带设备。用户模式备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。若备份到本地文件,使用如下命令:exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=exp_icdmain_yyyymmdd.dmplog=exp_icdmain_yyyymmdd.log若直接备份到磁带设备,使用如下命令:exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=/dev/rmt0log=exp_icdmain_yyyymmdd.log注:如果磁盘有空间,建议备份到磁盘,然后再拷贝到磁带。如果数据库数据量较小,可采用这种办法备份。完全模式备份完整的数据库。业务数据库不采用这种备份方式。备份命令为:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0 full=yfile=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)log=exp_fulldb_yyyymmdd.log对于数据库备份,建议采用增量备份,即只备份上一次备份以来更改的数据。增量备份命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0 full=y inctype=incrementalfile=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)log=exp_fulldb_yyyymmdd.log注:关于增量备份必须满足下列条件:1.只对完整数据库备份有效,且第一次需要full=y参数,以后需要inctype=incremental参数。2. 用户必须有EXP_FULL_DATABASE的系统角色。3. 话务量较小时方可采用数据库备份。4. 如果磁盘有空间,建议备份到磁盘,然后再备份到磁带。业务数据库备份方法及周期用EXP进行备份前,先在SYS用户下运行CATEXP.SQL文件(如果以前已运行该文件,则不要执行这个脚本)。没有特殊说明,不允许在客户端执行备份命令。备份命令参照表模式下的备份命令。从磁盘文件备份到磁带如果首先备份到本地磁盘文件,则需要转储到磁带设备上。1. 若需查看主机上配置的磁带设备,使用如下命令:lsdev -Cc tape显示的结果如下例所示:rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drivermt1 Defined  30-58-00-0,0 SCSI 4mm Tape Drive标明Available的设备是可用的磁带设备。2. 若需查看磁带存储的内容,使用如下命令:tar -tvf /dev/rmt0显示的结果如下例所示:-rw-r--r-- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp如果显示类似如下内容,则表示该磁带存储的备份数据是从数据库直接备份到磁带上,而非从本地磁盘转储到磁带的备份文件,因此操作系统无法识别。tar: 0511-193 An error occurred while reading from the media.There is an input or output error.或tar: 0511-169 A directory checksum error on media; -267331077 not equal to25626.3. 对于新磁带或无需保留现存数据的磁带,使用如下命令:tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp注:A. 该命令将无条件覆盖磁带上的现存数据。  B. 文件名不允许包含路径信息,如:/backup/exp_icdmain_yyyymmdd.dmp。4. 对于需要保留现存数据的磁带,使用如下命令:tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp注:该命令将文件exp_icdmain_yyyymmdd.dmp追加到磁带的末端,不会覆盖现存的数据。特别强调:如果备份时是从数据库直接备份到磁带上,则不可再向该磁带上追加复制任何其他文件,否则该备份数据失效。5. 若需将转储到磁带上的备份文件复制到本地硬盘,使用如下命令:A. 将磁带上的全部文件复制到本地硬盘的当前目录tar -xvf /dev/rmt0B. 将磁带上的指定文件复制到本地硬盘的当前目录tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp备份时间安排由于备份时对系统I/O有较大影响,所以,建议在晚上11点以后进行备份工作。业务数据库Oracle版本的恢复恢复方案需根据备份方案确定。由于业务数据库采用表备份和用户备份相结合的方案,所以业务数据库的恢复需根据实际情况采用表恢复和用户恢复相结合的方案。恢复方案数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。表模式此方式将根据按照表模式备份的数据进行恢复。A. 恢复备份数据的全部内容若从本地文件恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=imp_icdmain_csd_yyyymmdd.log若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0log=imp_icdmain_csd_yyyymmdd.logB. 恢复备份数据中的指定表若从本地文件恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=imp_icdmain_csd_yyyymmdd.logtables=commoninformation,serviceinfo若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=/dev/rmt0log=imp_icdmain_csd_yyyymmdd.logtables=commoninformation,serviceinfo用户模式此方式将根据按照用户模式备份的数据进行恢复。A. 恢复备份数据的全部内容若从本地文件恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.log若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0log=imp_icdmain_yyyymmdd.logB. 恢复备份数据中的指定表若从本地文件恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.logtables=commoninformation,serviceinfo若从磁带设备恢复,使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0log=imp_icdmain_yyyymmdd.logtables=commoninformation,serviceinfo完全模式如果备份方式为完全模式,采用下列恢复方法:若从本地文件恢复,使用如下命令:imp system/manager rows=y indexes=n commit=y buffer=65536feedback=100000 ignore=y volsize=0 full=yfile=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.log若从磁带设备恢复,使用如下命令:imp system/manager rows=y indexes=n commit=y buffer=65536feedback=100000 ignore=y volsize=0 full=yfile=/dev/rmt0log=imp_icdmain_yyyymmdd.log参数说明1. ignore参数Oracle在恢复数据的过程中,当恢复某个表时,该表已经存在,就要根据ignore参数的设置来决定如何操作。若ignore=y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,比如主键约束,则出错的记录不会插入,但合法的记录会添加到表中。若ignore=n,Oracle不执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表。2. indexes参数在恢复数据的过程中,若indexes=n,则表上的索引不会被恢复,但是主键对应的唯一索引将无条件恢复,这是为了保证数据的完整性。字符集转换对于单字节字符集(例如US7ASCII),恢复时,数据库自动转换为该会话的字符集(NLS_LANG参数);对于多字节字符集(例如ZHS16CGB231280),恢复时,应尽量使字符集相同(避免转换),如果要转换,目标数据库的字符集应是输出数据库字符集的超集。恢复方法业务数据库采用表恢复方案。在用IMP进行恢复前,先在SYS用户下运行CATEXP.SQL文件(如果以前已运行该文件,则不要执行这个脚本),然后执行下列命令:IMP ICDMAIN/ICD FILE=文件名 LOG=LOG文件名 ROWS=YCOMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名注:要恢复的表名参照备份的表名  。恢复是在原表基础上累加数据  。没有特殊说明,不允许在客户端执行恢复命令 
分享到:
评论

相关推荐

    Oracle导入imp详解

    基于Oracle导入数据的imp详细学习资料,注明:不是本人所写,我也不知道从哪弄到的!

    Oracle 导入和导出命令详解

    Oracle 导入imp和导出exp命令详解

    oracle命令 exp&imp命令详解

    oracle命令 导入和导出命令详解 exp和imp命令详解

    oracle 导入导出命令详解

    oracle数据库导入导出命令imp exp impdp expdp的使用详解,很有用!

    oracle导入导出命令详解

    oracle导入导出dmp文件相关命令的使用说明

    oracle exp-imp命令详解.doc

    oracle exp命令、imp命令,数据库应用导入,导出

    oracle中imp、exp命令详解

    功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。  Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle...

    oracle中imp命令详解

    Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文 件。imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用法。

    ORACLE EXPIMP的使用详解

    主要讲述exp,imp常用选项,表空间传输,导入导出字符集,导入导出常见问题

    oracle exp imp详解

    oracle导入 导出 oracle导入 导出 oracle导入 导出 oracle导入 导出

    Oracle数据导入导出详解

    Oracle数据导入导出详解,详细介绍Oracle数据库的导入与导出

    oracle_exp_imp详解

    导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理...

    Oracle中用exp_imp命令参数详解

    Oracle中用exp/imp命令参数详解 用 exp 数 据 导 出、用 imp 数 据 导 入

    Oracle 数据泵详解

    在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP.使用EXPDP和IMPDP时应该注意的事项: 1)EXP和IMP是客户端工具程序,它们既...

    Oracle倒入/导出数据详解

    Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文件。imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用法。

    EXP IMP详解

    导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理...

    EXP、IMP命令详解

    oracle 导入导出命令解析,挺不错的!

    LINUX下Oracle数据导入导出的方法详解

    主要介绍了LINUX下Oracle数据导入导出的方法,较为详细的分析导出工具exp及导入工具imp的具体使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    使用imp和exp命令对Oracle数据库进行导入导出操作详解

    主要介绍了使用imp和exp命令对Oracle数据库进行导入导出操作详解,文中通过示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Global site tag (gtag.js) - Google Analytics