首页系统综合问题数据库笔试面试149-imp工具的ignore参数有什么作用?

数据库笔试面试149-imp工具的ignore参数有什么作用?

时间2022-12-18 21:25:14发布分享专员分类系统综合问题浏览270

今天小编给各位分享ignore的知识,文中也会对其通过数据库笔试面试149-imp工具的ignore参数有什么作用?和oracle的imp使用方法等多篇文章进行知识讲解,如果文章内容对您有帮助,别忘了关注本站,现在进入正文!

内容导航:

  • 数据库笔试面试149-imp工具的ignore参数有什么作用?
  • oracle的imp使用方法
  • 如何利用orcale导入工具,将已有的DMP文件还原到orcale数据库中,希望能给予详细的回答,最好是有图有文
  • Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令 详细的 详细的 谢谢
  • 一、数据库笔试面试149-imp工具的ignore参数有什么作用?

    题目如下所示:

    在Oracle中,imp工具的ignore参数有什么作用?

    答案如下所示:

    Oracle在恢复数据的过程中,当恢复某个表时,如果该表已经存在,就要根据ignore参数的设置来决定如何操作。若ignore=Y,Oracle不执行CREATE TABLE语句,直接将数据插入到表中,如果插入的记录违背了约束条件,例如主键约束,那么出错的记录不会插入,但合法的记录会添加到表中。如果ignore=N,那么Oracle不执行CREATE TABLE语句,同时也不会将数据插入到表中,而是忽略该表的错误,继续恢复下一个表,默认值为N。

    一、oracle的imp使用方法

    1、exp和imp工具是否可以跨平台使用?比如我在windows上用exp导出数据之后到linux或者unix上用imp导入数据?
    可以,但一般都是用同样的工具做导出和导入,windows上和unix上的endianness不同,混用的话,这个工具有bug。
    2、exp和imp工具是否可以跨版本使用?比如我用9i的exp工具导出数据之后到10g上用imp导入数据这样是否可以?
    这个工具有挺严格的版本限制,不能跨版本使用,你举例的这种会不识别的。
    3、exp导出的时候,table参数填写的是多个表名,那么在imp的时候是否可以只导入其中的某一个表,该如何操作?
    exp
    tables=(tab1,tab2)
    imp
    tables=(tab2)
    没有什么特别的,这个自己试一下就知道了
    4、exp导出的数据,在imp的时候如果机器上没有对应的表,imp工具是否会自动创建表结构?是否必须我手动先创建好表结构才能imp成功?
    imp时候会自动执行create语句,然后才是insert,所以你的问题恰好说反了,
    是如果你已经建好表结构的话,imp会报警告,说这个表已经存在了,需要在导入时ignore=y
    5、exp导出的数据,在imp的时候目标机器上的数据库表空间分配是否必须和原来的机器上的一致(空间大小肯定够,就是空间的其他配置是否必须一致)?如果不一致是否可以?
    这个工具有个限制,导出时候的表空间名必须就是导入到这个同样名称的表空间里面,如果没有这个表空间的话,导入失败,
    不知道你说的其他配置是什么配置,我只能说只要名称相同的话,问题不大,具体问题具体分析了。

    二、如何利用orcale导入工具,将已有的DMP文件还原到orcale数据库中,希望能给予详细的回答,最好是有图有文

    Oracle Export/Import工具使用介绍
    Oracle Export/Import工具使用介绍

    Oracle Exp/Imp工具是一个操作简单、方便灵活的备份恢复和数据迁移工具,它可以实施全库级、用户级、表级的数据备份和恢复。对于数据量在G级或G级以内,强调高可用性,可以容忍少量数据丢失的数据库系统,Exp/Imp是普遍使用的逻辑备份方式。

    Ø Export从数据库中导出数据到dump文件中

    Ø Import从dump文件中到入数据导数据库中

    1. 使用到Exp/Imp工具的的场景:

    1) 两个数据库之间传送数据

    a 同一个版本的oracle Server之间

    a 不同版本的oracle Server之间

    a 同种OS之间

    a 不同种OS之间

    2) 用于数据库的备份和恢复

    3) 从一个SCHEMA传送到另一个SCHEMA

    4) 从一个TABLESPACE传送到另一个TABLESPACE

    2. DUMP文件介绍

    EXPORT到出的是二进制格式的文件,不可以手工编辑,否则会损坏数据。该文件在ORACLE支持的任何平台上都是一样的格式,可以在各平台上通用。

    DUMP文件在IMPORT时采用向上兼容方式,就是说ORALCE8的DUMP文件可以导入到ORACLE9中,但是版本相差很大的版本之间可能有问题。

    3. 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更加灵活。

    4. EXPORT/IMPORT过程 (DUMP文件包含的数据对象)

    EXPORT导出的DUMP文件包含两种基本类型的数据 :

    Ø DDL (Data Dictionary Language)

    Ø Data

    DUMP文件包含所有重新创建Data Dictionary的DDL语句,基本上是可以读的格式 ;但是应该注意的是,千万不要用文本编辑器编辑之,oracle说不支持这样做的。

    下面列出的是DUMP文件中包括的ORACLE对象,分为TABLE/USER/FULL方式,有些对象只是在FULL方式下才有(比如public synonyms, users, roles, rollback segments等)

    Table mode User Mode Full Database Mode

    ---------------------- ---------------------- ----------------------

    Table definitions Table definitions Table definitions

    Table data Table data Table data

    Owner's table grants Owner's grants Grants

    Owner's table indexes Owner's indexes Indexes

    Table constraints Table constraints Table constraints

    Table triggers Table triggers All triggers

    Clusters Clusters

    Database links Database links

    Job queues Job queues

    Refresh groups Refresh groups

    Sequences Sequences

    Snapshots Snapshots

    Snapshot logs Snapshot logs

    Stored procedures Stored procedures

    Private synonyms All synonyms

    Views Views

    Profiles

    Replication catalog

    Resource cost

    Roles

    Rollback segments

    System audit options

    System privileges

    Tablespace definitions

    Tablespace quotas

    User definitions

    5. IMPORT时的对象倒入顺序

    1.Tablespaces

    2.Profiles

    3.Users

    4.Roles

    5.SystemPrivilegeGrants

    6.RoleGrants

    7.DefaultRoles

    8.TablespaceQuotas

    9.ResourceCosts

    10.RollbackSegments

    11.DatabaseLinks

    12.Sequences

    13.Snapshots

    14.SnapshotLogs

    15.JobQueues

    16.RefreshGroups

    17.ClusterDefinitions

    18.Tables(alsogrants,comments,indexes,constraints,auditing)

    19.ReferentialIntegrity

    20.POSTTABLESactions

    21.Synonyms

    22.Views

    23.StoredProcedures

    24.Triggers,DefaultsandAuditing

    按这个顺序主要是解决对象之间依赖关系可能产生的问题。TRIGGER最后导入,所以在INSERT数据到数据库时不会激发TRIGGER。在导入后可能会有一些状态是NVALID的PROCEDURE,主要是IMPORT时会影响一些数据库对象,而IMPORT并不重新编译PROCEDURE,从而造成这种情况,可以重新编译之,就能解决这个问题。

    6. 兼容性问题

    IMPORT工具可以处理EXPORT 5.1.22之后的版本导出的DUMP文件,所以你用ORACLE7的IMPORT处理ORACLE6的DUMP文件,依次类推,但是ORACLE如果版本相差很大有可能不能处理。具体的问题可以参照相应的文档,比如有关参数设置等(COMPATIBLE参数)

    ² EXPORT需要的VIEW

    EXPORT需要的VIEW是由CATEXP.SQL创建,这些内部VIEW用于EXPORT组织DUMP文件中数据格式。大部分VIEW用于收集创建DDL语句的,其他的主要供ORACLE开发人员用。这些VIEW在不同ORACLE版本之间有可能不同,每个版本可能都有新的特性加入。所以在新的版本里面执行旧的dump文件会有错误,一般可以执行CATEXP.SQL解决这些问题,

    ² 解决向后兼容问题的一般步骤如下:

    1) 导出数据库的版本比目标数据库老的情况:

    Ø 在需要导入的目标数据库中执行旧的CATEXP.SQL

    Ø 使用旧的EXPORT导出DUMP文件

    Ø 使用旧的IMPORT导入到数据库中

    Ø 在数据库中执行新的CATEXP.SQL,以恢复该版本的EXPORT VIEW

    2) 导出数据库的版本比目标数据库新的情况

    Ø 在需要导入的目标数据库中执行新的CATEXP.SQL

    Ø 使用新的EXPORT导出DUMP文件

    Ø 使用新的IMPORT导入到数据库中

    Ø 在数据库中执行旧的CATEXP.SQL,以恢复该版本的EXPORT VIEW

    7. 碎片整理

    EXPORT/IMPORT一个很重要的应用方面就是整理碎片。因为如果时初次IMPPORT,就会重新CREATE TABLE 再导入数据,所以整张表都是连续存放的。

    另外缺省情况下EXPORT会在生成DUMP文件是“压缩(COMPRESS)”TABLE,但是这种压缩在很多情况下被误解。事实上,COMPRESS是改变STORAGE参数INITIAL的值。比如:CREATE TABLE .... STORAGE( INITIAL 10K NEXT 10K..) 现在数据已经扩展到100个EXTENT,如果采用COMPRESS=Y来EXPORT数据,则产生的语句时 STORAGE( INITIAL 1000K NEXT 10K) ;我们可以看到NEXT值并没有改变,而INITIAL是所有EXTENT的总和。所以会出现如下情况,表A有4个100M的EXTENT,执行DELETE FROM A,然后再用COMPRESS=Y 导出数据,产生的CREATE TABLE语句将有400M的INITIAL EXTENT。即使这是TABLE中已经没有数据!!这是的DUMP文件即使很小,但是在IMPORT时就会产生一个巨大的TABLE. 另外,也可能会超过DATAFILE的大小。比如,有4个50M的数据文件,其中表A有15个10M的EXTENT,如果采用COMPRESS=Y的方式导出数据,将会有INITIAL=150M那么在重新导入时,不能分配一个150M的EXTENT,因为单个EXTENT不能跨多个文件。

    8. 在USER和TABLESPACE之间传送数据

    一般情况下EXPORT的数据要恢复到它原来的地方去。如果SCOTT用户的表以TABLE或USER方式EXPORT数据,在IMPORT时,如果SCOTT用户不存在,则会报错! 以FULL方式导出的数据带有CREATE USER的信息,所以会自己创建USER来存放数据。当然可以在IMPORT时使用FROMUSER和TOUSER参数来确定要导入的USER,但是要保证TOUSER一定已经存在啦。

    在imp添加参数TABLESPACES 可以改变导入数据的表空间;

    这有2种情况:一种是在数据导入前建好表,把表建到其他表空间上,再导入数据;另一种情况是收回导入用户的unlimited tablespace的权限会导入用户的默认表空间;

    9. EXPORT/IMPORT对SQUENCE的影响

    在两种情况下,EXPORT/IMPORT会对SEQUENCE。

    1) 如果在EXPORT时,用户正在取SEQUENCE的值,可能造成SEQUENCE的不一致。

    2) 另外如果SEQUENCE使用CACHE,在EXPORT时,那些在CACHE中的值就会被忽略的,只是从数据字典里面取当前值EXPORT。

    如果在进行FULL方式的EXPORT/IMPORT时,恰好在用sequence更新表中某列数据,而且不是上面两种情况,则导出的是更新前的数据。

    如果采用常规路径方式,每一行数据都是用INSERT语句,一致性检查和INSERT TRIGGER

    如果采用DIRECT方式,某些约束和trigger可能不触发,如果在trigger中使用sequence.nextval,将会对sequence有影响。

    10. EXP常用选项

    1) FULL,这个用于导出整个数据库,在ROWS=N一起使用时,可以导出整个数据库的结构。例如:

    exp sys file=test.dmp log=test.log full=y rows=n compress=y direct=y

    2) BUFFER和FEEDBACK,在导出比较多的数据时,考虑设置这两个参数。例如:

    exp new file=test.dmp log=test.log feedback=10000 buffer=100000000 tables=test1,test2

    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=trst rows=n

    6) QUERY参数后面跟的是where条件,值得注意的是,整个where子句需要使用""括起来,where子句的写法和SELECT中相同;

    Ø 如果是UNIX平台所有"和'都需要使用\u26469屏蔽它们的特殊含义:

    exp test/test file=1.dmp log=1.log tables=testtable query="where c1=20 and c2=test"

    注意:>,
    可以直接回车;

    系统提示:导出文件: EXPDAT.DMP>
    此处输入导出文件的位置,其路径必须存在,Oracle在这里不会自动建立路径,但可以建立文件名。备份文件以dmp作为后缀。
    输入内容如:e:\work\mas_db_090925v1.dmp 回车

    系统提示: (1)E(完整的数据库),(2)U(用户) 或 (3)T(表): (2)U > u
    此处可以输入u,也可以直接回车,因为系统此时默认的是U

    系统提示:导出权限(yes/no):yes>回车

    系统提示:导出表数据(yes/no):yes>回车

    系统提示:压缩区(yes/no):yes>回车

    系统提示:要导出的用户: (RETURN 以退出) > mas

    系统提示:要导出的用户: (RETURN 以退出) > 回车

    此时系统会自动进行备份
    本文对Oracle数据的导入导出 imp ,exp 两个命令进行了介绍, 并对其相应的参数进行了说明,然后通过一些示例进行演练,加深理解.
    文章最后对运用这两个命令可能出现的问题(如权限不够,不同oracle版本)进行了探讨,并提出了相应的解决方案;
    本文部分内容摘录自网络,感谢网友的经验总结;

    一.说明

    oracle 的exp/imp命令用于实现对数据库的导出/导入操作;
    exp命令用于把数据从远程数据库服务器导出至本地,生成dmp文件;
    imp命令用于把本地的数据库dmp文件从本地导入到远程的Oracle数据库中。

    二.语法

    可以通过在命令行输入 imp help=y 获取imp的语法信息:
    =============================================================================
    C:\Documents and Settings\auduser>imp help=y

    Import: Release 9.0.1.1.1 - Production on 星期二 5月 20 18:21:57 2008

    (c) Copyright 2001 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)

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

    ==============================================
    同样可以通过输入 exp help=y 获取exp的语法信息

    Microsoft Windows XP [版本 5.1.2600]
    (C) 版权所有 1985-2001 Microsoft Corp.

    C:\Documents and Settings\auduser>exp help=y

    Export: Release 9.0.1.1.1 - Production on 星期二 5月 20 18:26:34 2008

    (c) Copyright 2001 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 交叉表一致性 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 模式导出的模板名称

    三.使用示例

    3.1 数据导出:

    1 将数据库SampleDB完全导出,用户名system 密码manager 导出到E:\SampleDB.dmp中

    exp system/manager@TestDB file=E:\sampleDB.dmp full=y

    2 将数据库中system用户与sys用户的表导出

    exp system/manager@TestDB file=E:\sampleDB.dmp owner=(system,sys)

    3 将数据库中的表 TableA,TableB 导出

    exp system/manager@TestDB file=E:\sampleDB.dmp tables=(TableA,TableB)

    4 将数据库中的表tableA中的字段filed1 值为 "王五" 的数据导出

    exp system/manager@TestDB file=E:\sampleDB.dmp tables=(tableA) query=' where filed1='王五'

    如果想对dmp文件进行压缩,可以在上面命令后面 加上 compress=y 来实现。

    3.2 数据的导入

    1 将备份数据库文件中的数据导入指定的数据库SampleDB 中,如果 SampleDB 已存在该表,则不再导入;

    imp system/manager@TEST file=E:\sampleDB.dmp full=y ignore=y

    2 将d:\daochu.dmp中的表table1 导入

    imp system/manager@TEST file=E:\sampleDB.dmp tables=(table1)

    3. 导入一个完整数据库

    imp system/manager file=bible_db log=dible_db full=y ignore=y

    4. 导入一个或一组指定用户所属的全部表、索引和其他对象

    imp system/manager file=seapark log=seapark fromuser=seapark imp
    system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

    5. 将一个用户所属的数据导入另一个用户

    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)

    6. 导入一个表

    imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

    7. 从多个文件导入

    imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
    log=paycheck, filesize=1G full=y

    8. 使用参数文件

    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
    参数文件示例见附录

    9. 增量导入

    imp system./manager inctype= RECTORE FULL=Y FILE=A

    不少情况下要先将表彻底删除,然后导入。

    四.参数说明

    4.1、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'"""
    4.2、8i IMP常用选项
    1、FROMUSER和TOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。
    2、IGNORE、GRANTS和INDEXES,其中IGNORE参数将忽略表的存在,继续导入,这个对于需要调整表的存储参数时很有用,我们可以先根据实际情况用合理的存储参数建好表,然后直接导入数据。而GRANTS和INDEXES则表示是否导入授权和索引,如果想使用新的存储参数重建索引,或者为了加快到入速度,我们可以考虑将INDEXES设为N,而GRANTS一般都是Y。
    另外一个EXP/IMP都有的参数是PARFILE,它是用来定义EXP/IMP的参数文件,也就是说,上面的参数都可以写在一个参数文件中,但我们一般很少使用。
    4.4、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脚本创建需要的索引。

    注意:
    操作者要有足够的权限,权限不够它会提示。
    数据库是否可以连上, 可以用tnsping TestDB 来获得数据库 TestDB 能否连上。

    附录一:
    给用户增加导入数据权限的操作
    第一, 启动sql*puls
    第二,以system/manager登陆
    第三,create user 用户名 IDENTIFIED BY 密码(如果已经创建过用户,这步可以省略)
    第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
    DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
    DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字
    第五, 运行-cmd-进入dmp文件所在的目录,
    imp userid=system/manager full=y file=*.dmp
    或者 imp userid=system/manager full=y file=filename.dmp

    附录二:
    Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.
    先建立import9.par,
    然后,使用时命令如下:imp parfile=/filepath/import9.par
    例 import9.par 内容如下:
    FROMUSER=TGPMS
    TOUSER=TGPMS2 (注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)
    ROWS=Y
    INDEXES=Y
    GRANTS=Y
    CONSTRAINTS=Y
    BUFFER=409600
    file==/backup/ctgpc_20030623.dmp
    log==/backup/import_20030623.log

    关于ignore的问题,通过《如何利用orcale导入工具,将已有的DMP文件还原到orcale数据库中,希望能给予详细的回答,最好是有图有文》、《Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令 详细的 详细的 谢谢》等文章的解答希望已经帮助到您了!如您想了解更多关于ignore的相关信息,请到本站进行查找!

    爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。

    ignore
    如何建立socket连接? LARG来自E_INTEGER TimerNumber; TimerNumber.QuadP换听略罪施仅说每art = -50000000;