精华内容
下载资源
问答
  • Oracle中imp命令详解

    万次阅读 2019-09-14 17:20:10
    oracle中imp命令详解 Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文 件。imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用 法。 1. 获取帮助 imp...
    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. 增量导入(9i中已经取消)
    imp system./manager inctype= RECTORE FULL=Y FILE=A
    
    Oracle imp/exp帮助说明
    C:Documents and Settingsadministrator>exp help=y
    Export: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:04:43 2004
    Copyright (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 用于将会话快照设置回以前状态的 SCN
    FLASHBACK_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=y
    Import: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:06:54 2004
    Copyright (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 拥有可传输表空间集中数据的用户
    成功终止导入,但出现警告。
    
    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.
    
    六.对于有跨schema的index,imp时可能会报
    “Segmentation fault”错误。
    例如schema A中建有基于schema B表的索引,在导入A时会报上述错误,此时通过
    indexes=n来屏蔽导入索引以防止错误,事后可以用以下语句查出这样的索引,最好将
    索引放在和基表在同一个schema。
    SQL>select index_name,owner,table_name,table_owner
    from dba_indexes
     where owner!=table_owner;
    七.导入到不同于原表空间的表空间
    原来的数据在USERS表空间里面,我想把它IMP进APP表空间,我已经修改了目的
    用户的默认表空间,为什么结果还是IMP到USERS表空间中了呢?
    Solution:Oracle并没有提供什么参数来指定要导入哪个表空间,数据默认将导入到原
    本导出时数据所在的表空间中,但是我们可以通过以下的方法来实现导入到不同的表空
    间。
    1.在IMP时候使用INDEXFILE参数
     当给此参数指定了某一文件名,IMP的时候所有的index将不会直接导入到表空间中,
    而是在指定的文件中生成创建index的脚本。
     然后用文本编辑器打开此文件,直接编辑脚本中的storage参数,修改为想要导入的表
    空间名称。
     然后重新执行IMP,使用INDEXS=n参数将除Index之外的Objects导入。
     最后进入SQL*PLUS,直接运行刚才编辑的脚本,生成索引。
     该方法适用于将index以及constraints导入指定的表空间。
    2.改变目的用户的默认表空间
     这就是上面说的经常有人提问的方法。但是上述的问题之所以没有成功,是因为缺少了
    下面的几步。
     首先,收回目的用户的"UNLIMITED TABLESPACE"权限:
     revoke unlimited tablespace from username;
     其次,取消目的用户在原数据导出表空间中的配额,这样才能迫使IMP把数据导入到
    用户的默认表空间中去。
     然后,将希望导入的表空间设为目的用户的默认表空间,并添加配额。
     最后,执行IMP。
    3.使用TOAD
     TOAD是强大的Oracle数据库管理软件,是Quest出品的第三方软件,我们可以使用其
    中的Rebuild Multi Objects工具来实现将多个Object转移到指定的表空间。
     于是我们可以不管三七二十一,先IMP,然后再用TOAD作事后的修改。
    
    关于TOAD的使用,此处不作详细解释。
    八.导入工具imp可能出现的问题
    (1) 数据库对象已经存在
    一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等;
    数据库对象已经存在, 按缺省的imp参数, 则会导入失败
    如果用了参数ignore=y, 会把exp文件内的数据内容导入
    如果表有唯一关键字的约束条件, 不合条件将不被导入
    如果表没有唯一关键字的约束条件, 将引起记录重复
    (2) 数据库对象有主外键约束
     不符合主外键约束时, 数据会导入失败
     解决办法: 先导入主表, 再导入依存表
    disable目标导入对象的主外键约束, 导入数据后, 再enable它们
    (3) 权限不够
    如果要把A用户的数据导入B用户下, A用户需要有imp_full_database权限
    (4) 导入大表( 大于80M ) 时, 存储分配失败
     默认的EXP时, compress = Y, 也就是把所有的数据压缩在一个数据块上.
     导入时, 如果不存在连续一个大数据块, 则会导入失败.
     导出80M以上的大表时, 记得compress= N, 则不会引起这种错误.
    (5) imp和exp使用的字符集不同
     如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里 
    NLS_LANG相关信息.导入完成后再改回来.
    (6) imp和exp版本不能往上兼容
    imp可以成功导入低版本exp生成的文件, 不能导入高版本exp生成的文件
    根据情况我们可以用低版本的oracle客户端的exp导出数据库,然后进行导入操作。
    (7)ROLLBACK段不够
     Export/Import使用过程中, 如果数据量很大会出现'ROLLBACK段不够'的错误. 
    这时要建一个足够大的ROLLBACK段, 使它ONLINE而其他ROLLBACK段
    OFFLINE. 这样, Export/Import使用这个大ROLLBACK段, 从而避免上述现象.
    (8)EXPORT/IMPORT对SQUENCE的影响
    在两种情况下,EXPORT/IMPORT会对SEQUENCE。
    a. 如果在EXPORT时,用户正在取SEQUENCE的值,可能造成SEQUENCE的不
    一致。
    b. 另外如果SEQUENCE使用CACHE,在EXPORT时,那些在CACHE中的值就
    会被忽略 的,只是从数据字典里面取当前值EXPORT。如果在进行FULL方式的
    EXPORT/IMPORT时,恰好在用sequence更新表中某列数据, 而且不是上面两种
    
    情况,则导出的是更新前的数据。如果采用常规路径方式,每一行数据都是用
    INSERT语句,一致性检查和INSERT TRIGGER 如果采用DIRECT方式,某些约
    束和trigger可能不触发,如果在trigger中使用sequence.nextval,将会对sequence
    有影响。
    九.ORACLE获取DDL的几种常用的方法
    大体的分为三种方法:
    1.可以通过toad、plsql develop等第三方工具进行导出DLL操作,用这种办法的好
    处在于操作简单方便,但需要安装,下面简单介绍一下用这两个工具获得DLL语句
    的操作。
    2.直接通过EXP/IMP工具
    Oracle提供的最原始最实用的导入导出工具,我们大体上可以分为三种办法实现导
    出DDL。
    a. 通过imp指定indexfile参数,但这种办法不爽在于有每行前会有REM
    语法大体如下:
    exp userid=... tables=emp rows=n file=emp.dmp
    imp userid=... file=emp.dmp indexfile=emp.sql
    b. 通过imp指定show=y,同时指定log参数,格式上也不是很爽,在格式上很美
    观的还是通过工具导出的比较美观
    语法大体如下:
    exp userid=... tables=emp rows=n file= emp.dmp
    imp userid=... file= emp.dmp show=y log=emp.sql
    c. 利用unix下有strings命令,语法大体如下,这种方法比较野蛮:
    exp userid=... tables=tab1 rows=n file=tab1.dmp
    strings emp.dmp >emp.sql
    emp.sql中就有DLL语句了
    3.通过9i的DBMS_METADATA包得到DLL语句
    基本上用到的语法如下:
    a. 获取单个的建表和建索引的语法
    
    set heading off;
    set echo off;
    Set pages 999;
    set long 90000;
    spool DEPT.sql
    select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from dual;
    select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT') from dual;
    spool off;
    b.获取一个SCHEMA下的所有建表和建索引的语法,以scott为例:
    set pagesize 0
    set long 90000
    set feedback off
    set echo off
    spool scott_schema.sql
    connect scott/tiger;
    SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
     FROM USER_TABLES u;
    SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)
     FROM USER_INDEXES u;
    spool off;
    c. 获取某个SCHEMA的建全部存储过程的语法
    connect brucelau /brucelau;
    spool procedures.sql
    select
     DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name)
    from
     user_objects u
    where
     object_type = 'PROCEDURE';
    spool off;
    另:dbms_metadata.get_ddl('TABLE','TAB1','USER1')
    三个参数中,第一个指定导出DDL定义的对象类型(此例中为表类型),第二个是
    对象名(此例中即表名),第三个是对象所在的用户名。
    十.优化exp和imp的性能
    exp /imp 可配置一些参数,以改进Export和Import的性能。至于性能具体能提升多
    
    高,则取决于要导出或导入的数据,以及数据量的大小。
    导出性能:用以下通用参数改进Export的性能:
    DIRECT:对一个Export,将DIRECT参数设为DIRECT=Y,将数据直接转移
    到Export客户端。这样的转移绕过SQL命令处理层(估值缓冲区),从而避免了
    无谓的数据转换。
    RECORDLENGTH:增大RECORDLENGTH参数值,来改进性能。为该参数
    推荐的值是DB_BLOCK_SIZE的一个整数倍,或者是文件系统I/O块大小的一个
    整数倍。更改这个参数的值会影响写入磁盘前积累的数据量。该参数的最大值为
    64千字节(64 KB)。
    导入性能:用以下通用参数改进Import的性能:
    BUFFER:BUFFER参数指定了缓冲区的大小,数据行将通过这个缓冲区进行转
    移,由此便决定了由Import导入的每个阵列插入中的行数。如配合COMMIT=Y
    参数指定BUFFER参数,则Import会在每一个阵列插入之后进行提交,而不是在
    载入完整的表之后再默认地提交。一个较大的BUFFER参数值有助于改善性能。
    但假如BUFFER值过高,会造成OS分页和换行,反而影响性能。
    INDEXES。INDEXES参数指定是否导入用户生成的索引。如指定
    INDEXES=N,则将提高Import的性能,因为在一个无索引的表中导入数据要快得
    多。注意,如果首先用INDEXFILE=返回Import,来在请求的Import模式下提取
    索引创建命令,再将其写入指定的文件,那么以后仍可重建索引。
    使用INDEXFILE选项时,不会导入数据对象。可对输出文件()进行编辑,
    并将其作为一个SQL脚本使用,以便在Import之后创建索引。
    另外还可以通过调整一下参数提高exp和imp的性能
    . 修改sqlnet.ora在里面增加trace_level_client=off 
    . 执行dbmspool.sql然后SQL>begin 
    SQL> dbms_shared_pool.sizes(300);
    SQL> end;
    SQL> /
    
    . sql>ALTER SYSTEM FLUSH SHARED_POOL 
    . sql>alter system set LOG_CHECKPOINT_INTERVAL = 
    redologfilesizebytes/512bytes=1000 
    也可以修改log_checkpoint_timeout=24000
    
    . sql>alter system set fast_start_mttr_target =24000 
    . sql>alter system set pga_aggregate_target=100M
    
    没有下commit=y所以只有通过
    A.select undtsn,undoblks from v$undostat;的变化来看资料又没有进去了
    B. 在imp时通过设定 FEEDBACK=N笔资料来显示Imp的进度
    重整的时候如果要drop 掉table重建的话,一定要注意该table上有没有FK等
    在EXP /IMP的时候为了加速需要将index=n参数加进exp/imp执行脚本,这样的话在
    做完imp后需要recreate index 其实资料量大的话recreate也很花时间,故可以通过在
    create index 的脚本里面加入parallel 5;来提速
    
    另I/O可以在Windows 的效能的地方看到
    十一.IMPORT时的对象倒入顺序
    在倒入数据时,ORACLE有一个特定的顺序,可能随数据库版本不同而有所变化,
    但是现在是这样的。
     1. Tablespaces 14. Snapshot Logs
     2. Profiles 15. Job Queues
     3. Users 16. Refresh Groups
     4. Roles 17. Cluster Definitions
     5. System Privilege Grants 18. Tables (also grants,comments,
     6. Role Grants indexes, constraints, auditing)
     7. Default Roles 19. Referential Integrity
    8. Tablespace Quotas 20. POSTTABLES actions
    9. Resource Costs 21. Synonyms
    10. Rollback Segments 22. Views
    11. Database Links 23. Stored Procedures
    12. Sequences 24. Triggers, Defaults and Auditing
    13. Snapshots
    按这个顺序主要是解决对象之间依赖关系可能产生的问题。TRIGGER最后导入,所以在
    INSERT数据到数据库时不会激发TRIGGER。在导入后可能会有一些状态是INVALID的
    PROCEDURE,主要是IMPORT时会影响一些数据库对象,而IMPORT并不重新编译
    PROCEDURE,从而造成这种情况,可以重新编译之,就能解决这个问题。
    十二. Imp/exp的模糊导入导出
    前段时间在网上看到一篇关于imp/exp模糊导入导出的文章,甚感兴趣,今
    天中午做了一个测试,感觉Oracle实在是博大,有很多东西不用的话,对
    我们来说永远是一个陌生的地带。揭去面纱,也就那么回事!
    说明:使用通配符导出的最大优点,就是当你的库中有很多表,但你又不想
    全导,只导其中一部分的时候,你可以尽可能的少写部分代码,提供工作效
    率!
    我一般喜欢以示例的方式展现或表达一些东西,这样大家可能了解/掌握的
    更快以下!毕竟很多东西我们大部分同志知其然就可以了!嘿嘿。^|^
    备注:该项特性在9i以后新增
    测试过程如下:
    SQL> conn study/study
    已连接。
    SQL>
    
    SQL> create table toms_test_1 (no int);
    表已创建。
    SQL> create table toms_test_2 (no int);
    表已创建。
    SQL> create table toms_test_3 (no int);
    表已创建。
    SQL> insert into toms_test_1 values(1);
    已创建 1 行。
    SQL> insert into toms_test_2 values(2);
    已创建 1 行。
    SQL> insert into toms_test_3 values(3);
    已创建 1 行。
    SQL> commit;
    提交完成。
    Microsoft Windows XP [版本 5.1.2600]
    (C) 版权所有 1985-2001 Microsoft Corp.
    C:Documents and Settings>e:
    E:>exp study/study tables=(study.toms_test%) file=toms_test.dmp 
    rows=y
    Export: Release 9.2.0.1.0 - Production on 星期三 6月 7 12:42:32 2006
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
    即将导出指定的表通过常规路径 ...
    . . 正在导出表 TOMS_TEST_1 1 行被导出
    . . 正在导出表 TOMS_TEST_2 1 行被导出
    . . 正在导出表 TOMS_TEST_3 1 行被导出
    在没有警告的情况下成功终止导出。
    SQL>
    SQL> drop table toms_test_1;
    表已丢弃。
    SQL> drop table toms_test_2;
    表已丢弃。
    SQL> drop table toms_test_3;
    表已丢弃。
    SQL>
    SQL> select table_name from tabs where table_name like 'TOMS_TEST%';
    未选定行
    SQL>
    
    E:>imp study/study file=toms_test.dmp fromuser=study touser=study
    Import: Release 9.2.0.1.0 - Production on 星期三 6月 7 12:44:01 2006
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    经由常规路径导出由EXPORT:V09.02.00创建的文件
    已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入
    . . 正在导入表 "TOMS_TEST_1" 1行被导入
    . . 正在导入表 "TOMS_TEST_2" 1行被导入
    . . 正在导入表 "TOMS_TEST_3" 1行被导入
    成功终止导入,但出现警告。
    E:>
    SQL> select table_name from tabs where table_name like 'TOMS_TEST%';
    TABLE_NAME
    ------------------------------
    TOMS_TEST_1
    TOMS_TEST_2
    TOMS_TEST_3
    SQL> select * from toms_test_1;
    NO
    ----------
    1
    SQL> select * from toms_test_2;
    NO
    ----------
    2
    SQL> select * from toms_test_3;
    NO
    ----------
    3
    SQL>
    SQL> select table_name from tabs where table_name like '%TEST%';
    TABLE_NAME
    ------------------------------
    TOMS_TEST_1
    TOMS_TEST_2
    TOMS_TEST_3
    SQL>
    E:>exp study/study tables=(study.%test%) file=test.dmp rows=y
    Export: Release 9.2.0.1.0 - Production on 星期三 6月 7 12:51:56 2006
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    
    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
    即将导出指定的表通过常规路径 ...
    . . 正在导出表 TOMS_TEST_1 1 行被导出
    . . 正在导出表 TOMS_TEST_2 1 行被导出
    . . 正在导出表 TOMS_TEST_3 1 行被导出
    在没有警告的情况下成功终止导出。
    E:>
    SQL> drop table toms_test_1;
    表已丢弃。
    SQL> drop table toms_test_2;
    表已丢弃。
    SQL> drop table toms_test_3;
    表已丢弃。
    SQL>
    E:>imp study/study file=test.dmp fromuser=study touser=study
    Import: Release 9.2.0.1.0 - Production on 星期三 6月 7 12:53:11 2006
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    经由常规路径导出由EXPORT:V09.02.00创建的文件
    已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入
    . . 正在导入表 "TOMS_TEST_1" 1行被导入
    . . 正在导入表 "TOMS_TEST_2" 1行被导入
    . . 正在导入表 "TOMS_TEST_3" 1行被导入
    成功终止导入,但出现警告。
    E:>
    SQL> select table_name from tabs where table_name like '%TEST%';
    TABLE_NAME
    ------------------------------
    TOMS_TEST_1
    TOMS_TEST_2
    TOMS_TEST_3
    SQL>
    E:>exp study/study tables=(%test%) file=test.dmp rows=y
    Export: Release 9.2.0.1.0 - Production on 星期三 6月 7 13:08:56 2006
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    
    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
    即将导出指定的表通过常规路径 ...
    . . 正在导出表 TOMS_TEST_1 1 行被导出
    . . 正在导出表 TOMS_TEST_2 1 行被导出
    . . 正在导出表 TOMS_TEST_3 1 行被导出
    在没有警告的情况下成功终止导出。
    E:>
    SQL> conn toms/toms
    已连接。
    SQL> create table stu_1 (no int);
    表已创建。
    SQL> create table stu_2 (no int);
    表已创建。
    SQL> insert into stu_1 values(1);
    已创建 1 行。
    SQL> insert into stu_2 values(2);
    已创建 1 行。
    SQL> commit;
    提交完成。
    E:>exp study/study tables=(%test%,toms.stu%) file=test.dmp rows=y
    Export: Release 9.2.0.1.0 - Production on 星期三 6月 7 13:11:05 2006
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
    即将导出指定的表通过常规路径 ...
    . . 正在导出表 TOMS_TEST_1 1 行被导出
    . . 正在导出表 TOMS_TEST_2 1 行被导出
    . . 正在导出表 TOMS_TEST_3 1 行被导出
    当前的用户已更改为 TOMS
    . . 正在导出表 STU_1 1 行被导出
    . . 正在导出表 STU_2 1 行被导出
    在没有警告的情况下成功终止导出。
    SQL> conn study/study
    已连接。
    SQL> drop table toms_test_1;
    表已丢弃。
    SQL> drop table toms_test_2;
    
    表已丢弃。
    SQL> drop table toms_test_3;
    表已丢弃。
    SQL> select table_name from tabs where table_name like '%TEST%';
    未选定行
    SQL> conn toms/toms
    已连接。
    SQL> drop table stu_1;
    表已丢弃。
    SQL> drop table stu_2;
    表已丢弃。
    SQL> select table_name from tabs where table_name like '%STU%';
    未选定行
    SQL>
    E:>imp study/study file=test.dmp fromuser=study touser=study 
    tables=(%test%)
    Import: Release 9.2.0.1.0 - Production on 星期三 6月 7 13:15:22 2006
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    经由常规路径导出由EXPORT:V09.02.00创建的文件
    已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入
    . . 正在导入表 "TOMS_TEST_1" 1行被导入
    . . 正在导入表 "TOMS_TEST_2" 1行被导入
    . . 正在导入表 "TOMS_TEST_3" 1行被导入
    成功终止导入,但出现警告。
    SQL> conn study/study
    已连接。
    SQL> select table_name from tabs where table_name like '%TEST%';
    TABLE_NAME
    ------------------------------
    TOMS_TEST_1
    TOMS_TEST_2
    TOMS_TEST_3
    SQL> select * from toms_test_1;
    NO
    ----------
    1
    SQL> select * from toms_test_2;
    NO
    ----------
    2
    
    SQL> select * from toms_test_3;
    NO
    ----------
    3
    SQL>
    E:>imp study/study fromuser=toms touser=toms file=test.dmp 
    tables=(stu%)
    Import: Release 9.2.0.1.0 - Production on 星期三 6月 7 13:23:49 2006
    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    经由常规路径导出由EXPORT:V09.02.00创建的文件
    已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入
    . 正在将TOMS的对象导入到 TOMS
    . . 正在导入表 "STU_1" 1行被导入
    . . 正在导入表 "STU_2" 1行被导入
    成功终止导入,但出现警告。
    展开全文
  • ORACLE EXP命令

    千次阅读 2019-03-31 14:04:13
    ORACLE EXP命令 本文对Oracle数据的导入导出 imp ,exp 两个命令进行了介绍, 并对其对应的參数进行了说明,然后通过一些演示样例进行演练,加深理解. 文章最后对运用这两个命令可能出现的问题(如权限不够,不同oracle...

    ORACLE EXP命令

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


    一.说明

       oracle 的exp/imp命令用于实现对数据库的导出/导入操作;
       exp命令用于把数据从远程数据库server导出至本地,生成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 命令和您的username/口令
      后接username/口令的命令:

      例程: IMP SCOTT/TIGER

      或者, 能够通过输入 IMP 命令和各种參数来控制“导入”
      依照不同參数。要指定參数,您能够使用keyword:

      格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)
      例程: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
      或 TABLES=(T1: P1,T1: P2),假设 T1 是分区表

      USERID 必须是命令行中的第一个參数。

      keyword  说明(默认)        keyword      说明(默认)
      --------------------------------------------------------------------------
      USERID   username/口令           FULL         导入整个文件 (N)
      BUFFER   数据缓冲区大小         FROMUSER     全部人username列表
      FILE     输入文件 (EXPDAT.DMP)    TOUSER       username列表
      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)

      下列keyword仅用于可传输的表空间
      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 命令和username/口令,您能够
      后接username/口令的命令:

      例程: EXP SCOTT/TIGER

      或者,您也能够通过输入跟有各种參数的 EXP 命令来控制“导出”
      依照不同參数。要指定參数,您能够使用keyword:

      格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
      例程: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
      或 TABLES=(T1: P1,T1: P2),假设 T1 是分区表

      USERID 必须是命令行中的第一个參数。

      keyword  说明(默认)        keyword      说明(默认)
      --------------------------------------------------------------------------
      USERID   username/口令           FULL         导出整个文件 (N)
      BUFFER   数据缓冲区大小         OWNER     全部者username列表
      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全然导出,usernamesystem passwordmanager 导出到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 username IDENTIFIED BY password (假设已经创建过用户,这步能够省略)
     第四,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 username字
     第五, 执行-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

    展开全文
  • 详细介绍ORACLE sqlplus命令,详细介绍ORACLE sqlplus命令
  • oracle中imp命令详解

    千次阅读 2015-05-13 21:44:55
    oracle中imp命令详解 Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文件。imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用法。 1. 获取帮助 imp ...

    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. 增量导入(9i中已经取消)

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


    Oracle imp/exp帮助说明

    C:Documents and Settingsadministrator>exp help=y

    Export: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:04:43 2004

    Copyright (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 用于将会话快照设置回以前状态的 SCN

    FLASHBACK_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=y

    Import: Release 9.2.0.1.0 - Production on 星期三 7月 28 17:06:54 2004

    Copyright (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 拥有可传输表空间集中数据的用户

    成功终止导入,但出现警告。


    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.


    六.对于有跨schema的index,imp时可能会报
    “Segmentation fault”错误。

    例如schema A中建有基于schema B表的索引,在导入A时会报上述错误,此时通过
    indexes=n来屏蔽导入索引以防止错误,事后可以用以下语句查出这样的索引,最好将
    索引放在和基表在同一个schema。

    SQL>select index_name,owner,table_name,table_owner

    from dba_indexes

     where owner!=table_owner;

    七.导入到不同于原表空间的表空间

    原来的数据在USERS表空间里面,我想把它IMP进APP表空间,我已经修改了目的
    用户的默认表空间,为什么结果还是IMP到USERS表空间中了呢?

    Solution:Oracle并没有提供什么参数来指定要导入哪个表空间,数据默认将导入到原
    本导出时数据所在的表空间中,但是我们可以通过以下的方法来实现导入到不同的表空
    间。

    1.在IMP时候使用INDEXFILE参数

     当给此参数指定了某一文件名,IMP的时候所有的index将不会直接导入到表空间中,
    而是在指定的文件中生成创建index的脚本。

     然后用文本编辑器打开此文件,直接编辑脚本中的storage参数,修改为想要导入的表
    空间名称。

     然后重新执行IMP,使用INDEXS=n参数将除Index之外的Objects导入。

     最后进入SQL*PLUS,直接运行刚才编辑的脚本,生成索引。

     该方法适用于将index以及constraints导入指定的表空间。

    2.改变目的用户的默认表空间

     这就是上面说的经常有人提问的方法。但是上述的问题之所以没有成功,是因为缺少了
    下面的几步。

     首先,收回目的用户的"UNLIMITED TABLESPACE"权限:

     revoke unlimited tablespace from username;

     其次,取消目的用户在原数据导出表空间中的配额,这样才能迫使IMP把数据导入到
    用户的默认表空间中去。

     然后,将希望导入的表空间设为目的用户的默认表空间,并添加配额。

     最后,执行IMP。

    3.使用TOAD

     TOAD是强大的Oracle数据库管理软件,是Quest出品的第三方软件,我们可以使用其
    中的Rebuild Multi Objects工具来实现将多个Object转移到指定的表空间。

     于是我们可以不管三七二十一,先IMP,然后再用TOAD作事后的修改。


    关于TOAD的使用,此处不作详细解释。

    八.导入工具imp可能出现的问题

    (1) 数据库对象已经存在

    一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等;

    数据库对象已经存在, 按缺省的imp参数, 则会导入失败

    如果用了参数ignore=y, 会把exp文件内的数据内容导入

    如果表有唯一关键字的约束条件, 不合条件将不被导入

    如果表没有唯一关键字的约束条件, 将引起记录重复

    (2) 数据库对象有主外键约束

     不符合主外键约束时, 数据会导入失败

     解决办法: 先导入主表, 再导入依存表

    disable目标导入对象的主外键约束, 导入数据后, 再enable它们

    (3) 权限不够

    如果要把A用户的数据导入B用户下, A用户需要有imp_full_database权限

    (4) 导入大表( 大于80M ) 时, 存储分配失败

     默认的EXP时, compress = Y, 也就是把所有的数据压缩在一个数据块上.

     导入时, 如果不存在连续一个大数据块, 则会导入失败.

     导出80M以上的大表时, 记得compress= N, 则不会引起这种错误.

    (5) imp和exp使用的字符集不同

     如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里
    NLS_LANG相关信息.导入完成后再改回来.

    (6) imp和exp版本不能往上兼容

    imp可以成功导入低版本exp生成的文件, 不能导入高版本exp生成的文件

    根据情况我们可以用低版本的oracle客户端的exp导出数据库,然后进行导入操作。

    (7)ROLLBACK段不够

     Export/Import使用过程中, 如果数据量很大会出现'ROLLBACK段不够'的错误.
    这时要建一个足够大的ROLLBACK段, 使它ONLINE而其他ROLLBACK段
    OFFLINE. 这样, Export/Import使用这个大ROLLBACK段, 从而避免上述现象.

    (8)EXPORT/IMPORT对SQUENCE的影响

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

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

    b. 另外如果SEQUENCE使用CACHE,在EXPORT时,那些在CACHE中的值就
    会被忽略 的,只是从数据字典里面取当前值EXPORT。如果在进行FULL方式的
    EXPORT/IMPORT时,恰好在用sequence更新表中某列数据, 而且不是上面两种


    情况,则导出的是更新前的数据。如果采用常规路径方式,每一行数据都是用
    INSERT语句,一致性检查和INSERT TRIGGER 如果采用DIRECT方式,某些约
    束和trigger可能不触发,如果在trigger中使用sequence.nextval,将会对sequence
    有影响。

    九.ORACLE获取DDL的几种常用的方法

    大体的分为三种方法:

    1.可以通过toad、plsql develop等第三方工具进行导出DLL操作,用这种办法的好
    处在于操作简单方便,但需要安装,下面简单介绍一下用这两个工具获得DLL语句
    的操作。

    2.直接通过EXP/IMP工具

    Oracle提供的最原始最实用的导入导出工具,我们大体上可以分为三种办法实现导
    出DDL。

    a. 通过imp指定indexfile参数,但这种办法不爽在于有每行前会有REM

    语法大体如下:

    exp userid=... tables=emp rows=n file=emp.dmp

    imp userid=... file=emp.dmp indexfile=emp.sql

    b. 通过imp指定show=y,同时指定log参数,格式上也不是很爽,在格式上很美
    观的还是通过工具导出的比较美观

    语法大体如下:

    exp userid=... tables=emp rows=n file= emp.dmp

    imp userid=... file= emp.dmp show=y log=emp.sql

    c. 利用unix下有strings命令,语法大体如下,这种方法比较野蛮:

    exp userid=... tables=tab1 rows=n file=tab1.dmp

    strings emp.dmp >emp.sql

    emp.sql中就有DLL语句了

    3.通过9i的DBMS_METADATA包得到DLL语句

    基本上用到的语法如下:

    a. 获取单个的建表和建索引的语法


    set heading off;

    set echo off;

    Set pages 999;

    set long 90000;

    spool DEPT.sql

    select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from dual;

    select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT') from dual;

    spool off;

    b.获取一个SCHEMA下的所有建表和建索引的语法,以scott为例:

    set pagesize 0

    set long 90000

    set feedback off

    set echo off

    spool scott_schema.sql

    connect scott/tiger;

    SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)

     FROM USER_TABLES u;

    SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)

     FROM USER_INDEXES u;

    spool off;

    c. 获取某个SCHEMA的建全部存储过程的语法

    connect brucelau /brucelau;

    spool procedures.sql

    select

     DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name)

    from

     user_objects u

    where

     object_type = 'PROCEDURE';

    spool off;

    另:dbms_metadata.get_ddl('TABLE','TAB1','USER1')

    三个参数中,第一个指定导出DDL定义的对象类型(此例中为表类型),第二个是
    对象名(此例中即表名),第三个是对象所在的用户名。

    十.优化exp和imp的性能

    exp /imp 可配置一些参数,以改进Export和Import的性能。至于性能具体能提升多


    高,则取决于要导出或导入的数据,以及数据量的大小。

    导出性能:用以下通用参数改进Export的性能:

    DIRECT:对一个Export,将DIRECT参数设为DIRECT=Y,将数据直接转移
    到Export客户端。这样的转移绕过SQL命令处理层(估值缓冲区),从而避免了
    无谓的数据转换。

    RECORDLENGTH:增大RECORDLENGTH参数值,来改进性能。为该参数
    推荐的值是DB_BLOCK_SIZE的一个整数倍,或者是文件系统I/O块大小的一个
    整数倍。更改这个参数的值会影响写入磁盘前积累的数据量。该参数的最大值为
    64千字节(64 KB)。

    导入性能:用以下通用参数改进Import的性能:

    BUFFER:BUFFER参数指定了缓冲区的大小,数据行将通过这个缓冲区进行转
    移,由此便决定了由Import导入的每个阵列插入中的行数。如配合COMMIT=Y
    参数指定BUFFER参数,则Import会在每一个阵列插入之后进行提交,而不是在
    载入完整的表之后再默认地提交。一个较大的BUFFER参数值有助于改善性能。
    但假如BUFFER值过高,会造成OS分页和换行,反而影响性能。

    INDEXES。INDEXES参数指定是否导入用户生成的索引。如指定
    INDEXES=N,则将提高Import的性能,因为在一个无索引的表中导入数据要快得
    多。注意,如果首先用INDEXFILE=返回Import,来在请求的Import模式下提取
    索引创建命令,再将其写入指定的文件,那么以后仍可重建索引。

    使用INDEXFILE选项时,不会导入数据对象。可对输出文件()进行编辑,
    并将其作为一个SQL脚本使用,以便在Import之后创建索引。

    另外还可以通过调整一下参数提高exp和imp的性能

    . 修改sqlnet.ora在里面增加trace_level_client=off
    . 执行dbmspool.sql然后SQL>begin
    SQL> dbms_shared_pool.sizes(300);

    SQL> end;

    SQL> /


    . sql>ALTER SYSTEM FLUSH SHARED_POOL
    . sql>alter system set LOG_CHECKPOINT_INTERVAL =
    redologfilesizebytes/512bytes=1000
    也可以修改log_checkpoint_timeout=24000


    . sql>alter system set fast_start_mttr_target =24000
    . sql>alter system set pga_aggregate_target=100M


    没有下commit=y所以只有通过

    A.select undtsn,undoblks from v$undostat;的变化来看资料又没有进去了

    B. 在imp时通过设定 FEEDBACK=N笔资料来显示Imp的进度

    重整的时候如果要drop 掉table重建的话,一定要注意该table上有没有FK等

    在EXP /IMP的时候为了加速需要将index=n参数加进exp/imp执行脚本,这样的话在
    做完imp后需要recreate index 其实资料量大的话recreate也很花时间,故可以通过在
    create index 的脚本里面加入parallel 5;来提速


    另I/O可以在Windows 的效能的地方看到

    十一.IMPORT时的对象倒入顺序

    在倒入数据时,ORACLE有一个特定的顺序,可能随数据库版本不同而有所变化,

    但是现在是这样的。

     1. Tablespaces 14. Snapshot Logs

     2. Profiles 15. Job Queues

     3. Users 16. Refresh Groups

     4. Roles 17. Cluster Definitions

     5. System Privilege Grants 18. Tables (also grants,comments,

     6. Role Grants indexes, constraints, auditing)

     7. Default Roles 19. Referential Integrity

    8. Tablespace Quotas 20. POSTTABLES actions

    9. Resource Costs 21. Synonyms

    10. Rollback Segments 22. Views

    11. Database Links 23. Stored Procedures

    12. Sequences 24. Triggers, Defaults and Auditing

    13. Snapshots

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

    十二. Imp/exp的模糊导入导出

    前段时间在网上看到一篇关于imp/exp模糊导入导出的文章,甚感兴趣,今
    天中午做了一个测试,感觉Oracle实在是博大,有很多东西不用的话,对
    我们来说永远是一个陌生的地带。揭去面纱,也就那么回事!

    说明:使用通配符导出的最大优点,就是当你的库中有很多表,但你又不想
    全导,只导其中一部分的时候,你可以尽可能的少写部分代码,提供工作效
    率!

    我一般喜欢以示例的方式展现或表达一些东西,这样大家可能了解/掌握的
    更快以下!毕竟很多东西我们大部分同志知其然就可以了!嘿嘿。^|^

    备注:该项特性在9i以后新增

    测试过程如下:

    SQL> conn study/study

    已连接。

    SQL>


    SQL> create table toms_test_1 (no int);

    表已创建。

    SQL> create table toms_test_2 (no int);

    表已创建。

    SQL> create table toms_test_3 (no int);

    表已创建。

    SQL> insert into toms_test_1 values(1);

    已创建 1 行。

    SQL> insert into toms_test_2 values(2);

    已创建 1 行。

    SQL> insert into toms_test_3 values(3);

    已创建 1 行。

    SQL> commit;

    提交完成。

    Microsoft Windows XP [版本 5.1.2600]

    (C) 版权所有 1985-2001 Microsoft Corp.

    C:Documents and Settings>e:

    E:>exp study/study tables=(study.toms_test%) file=toms_test.dmp
    rows=y

    Export: Release 9.2.0.1.0 - Production on 星期三 6月 7 12:42:32 2006

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

    With the Partitioning, OLAP and Oracle Data Mining options

    JServer Release 9.2.0.1.0 - Production

    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

    即将导出指定的表通过常规路径 ...

    . . 正在导出表 TOMS_TEST_1 1 行被导出

    . . 正在导出表 TOMS_TEST_2 1 行被导出

    . . 正在导出表 TOMS_TEST_3 1 行被导出

    在没有警告的情况下成功终止导出。

    SQL>

    SQL> drop table toms_test_1;

    表已丢弃。

    SQL> drop table toms_test_2;

    表已丢弃。

    SQL> drop table toms_test_3;

    表已丢弃。

    SQL>

    SQL> select table_name from tabs where table_name like 'TOMS_TEST%';

    未选定行

    SQL>


    E:>imp study/study file=toms_test.dmp fromuser=study touser=study

    Import: Release 9.2.0.1.0 - Production on 星期三 6月 7 12:44:01 2006

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

    With the Partitioning, OLAP and Oracle Data Mining options

    JServer Release 9.2.0.1.0 - Production

    经由常规路径导出由EXPORT:V09.02.00创建的文件

    已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入

    . . 正在导入表 "TOMS_TEST_1" 1行被导入

    . . 正在导入表 "TOMS_TEST_2" 1行被导入

    . . 正在导入表 "TOMS_TEST_3" 1行被导入

    成功终止导入,但出现警告。

    E:>

    SQL> select table_name from tabs where table_name like 'TOMS_TEST%';

    TABLE_NAME

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

    TOMS_TEST_1

    TOMS_TEST_2

    TOMS_TEST_3

    SQL> select * from toms_test_1;

    NO

    ----------

    1

    SQL> select * from toms_test_2;

    NO

    ----------

    2

    SQL> select * from toms_test_3;

    NO

    ----------

    3

    SQL>

    SQL> select table_name from tabs where table_name like '%TEST%';

    TABLE_NAME

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

    TOMS_TEST_1

    TOMS_TEST_2

    TOMS_TEST_3

    SQL>

    E:>exp study/study tables=(study.%test%) file=test.dmp rows=y

    Export: Release 9.2.0.1.0 - Production on 星期三 6月 7 12:51:56 2006

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

    With the Partitioning, OLAP and Oracle Data Mining options

    JServer Release 9.2.0.1.0 - Production

    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

    即将导出指定的表通过常规路径 ...

    . . 正在导出表 TOMS_TEST_1 1 行被导出

    . . 正在导出表 TOMS_TEST_2 1 行被导出

    . . 正在导出表 TOMS_TEST_3 1 行被导出

    在没有警告的情况下成功终止导出。

    E:>

    SQL> drop table toms_test_1;

    表已丢弃。

    SQL> drop table toms_test_2;

    表已丢弃。

    SQL> drop table toms_test_3;

    表已丢弃。

    SQL>

    E:>imp study/study file=test.dmp fromuser=study touser=study

    Import: Release 9.2.0.1.0 - Production on 星期三 6月 7 12:53:11 2006

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

    With the Partitioning, OLAP and Oracle Data Mining options

    JServer Release 9.2.0.1.0 - Production

    经由常规路径导出由EXPORT:V09.02.00创建的文件

    已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入

    . . 正在导入表 "TOMS_TEST_1" 1行被导入

    . . 正在导入表 "TOMS_TEST_2" 1行被导入

    . . 正在导入表 "TOMS_TEST_3" 1行被导入

    成功终止导入,但出现警告。

    E:>

    SQL> select table_name from tabs where table_name like '%TEST%';

    TABLE_NAME

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

    TOMS_TEST_1

    TOMS_TEST_2

    TOMS_TEST_3

    SQL>

    E:>exp study/study tables=(%test%) file=test.dmp rows=y

    Export: Release 9.2.0.1.0 - Production on 星期三 6月 7 13:08:56 2006

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

    With the Partitioning, OLAP and Oracle Data Mining options

    JServer Release 9.2.0.1.0 - Production

    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

    即将导出指定的表通过常规路径 ...

    . . 正在导出表 TOMS_TEST_1 1 行被导出

    . . 正在导出表 TOMS_TEST_2 1 行被导出

    . . 正在导出表 TOMS_TEST_3 1 行被导出

    在没有警告的情况下成功终止导出。

    E:>

    SQL> conn toms/toms

    已连接。

    SQL> create table stu_1 (no int);

    表已创建。

    SQL> create table stu_2 (no int);

    表已创建。

    SQL> insert into stu_1 values(1);

    已创建 1 行。

    SQL> insert into stu_2 values(2);

    已创建 1 行。

    SQL> commit;

    提交完成。

    E:>exp study/study tables=(%test%,toms.stu%) file=test.dmp rows=y

    Export: Release 9.2.0.1.0 - Production on 星期三 6月 7 13:11:05 2006

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

    With the Partitioning, OLAP and Oracle Data Mining options

    JServer Release 9.2.0.1.0 - Production

    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

    即将导出指定的表通过常规路径 ...

    . . 正在导出表 TOMS_TEST_1 1 行被导出

    . . 正在导出表 TOMS_TEST_2 1 行被导出

    . . 正在导出表 TOMS_TEST_3 1 行被导出

    当前的用户已更改为 TOMS

    . . 正在导出表 STU_1 1 行被导出

    . . 正在导出表 STU_2 1 行被导出

    在没有警告的情况下成功终止导出。

    SQL> conn study/study

    已连接。

    SQL> drop table toms_test_1;

    表已丢弃。

    SQL> drop table toms_test_2;


    表已丢弃。

    SQL> drop table toms_test_3;

    表已丢弃。

    SQL> select table_name from tabs where table_name like '%TEST%';

    未选定行

    SQL> conn toms/toms

    已连接。

    SQL> drop table stu_1;

    表已丢弃。

    SQL> drop table stu_2;

    表已丢弃。

    SQL> select table_name from tabs where table_name like '%STU%';

    未选定行

    SQL>

    E:>imp study/study file=test.dmp fromuser=study touser=study
    tables=(%test%)

    Import: Release 9.2.0.1.0 - Production on 星期三 6月 7 13:15:22 2006

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

    With the Partitioning, OLAP and Oracle Data Mining options

    JServer Release 9.2.0.1.0 - Production

    经由常规路径导出由EXPORT:V09.02.00创建的文件

    已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入

    . . 正在导入表 "TOMS_TEST_1" 1行被导入

    . . 正在导入表 "TOMS_TEST_2" 1行被导入

    . . 正在导入表 "TOMS_TEST_3" 1行被导入

    成功终止导入,但出现警告。

    SQL> conn study/study

    已连接。

    SQL> select table_name from tabs where table_name like '%TEST%';

    TABLE_NAME

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

    TOMS_TEST_1

    TOMS_TEST_2

    TOMS_TEST_3

    SQL> select * from toms_test_1;

    NO

    ----------

    1

    SQL> select * from toms_test_2;

    NO

    ----------

    2


    SQL> select * from toms_test_3;

    NO

    ----------

    3

    SQL>

    E:>imp study/study fromuser=toms touser=toms file=test.dmp
    tables=(stu%)

    Import: Release 9.2.0.1.0 - Production on 星期三 6月 7 13:23:49 2006

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

    With the Partitioning, OLAP and Oracle Data Mining options

    JServer Release 9.2.0.1.0 - Production

    经由常规路径导出由EXPORT:V09.02.00创建的文件

    已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入

    . 正在将TOMS的对象导入到 TOMS

    . . 正在导入表 "STU_1" 1行被导入

    . . 正在导入表 "STU_2" 1行被导入

    成功终止导入,但出现警告。

    E:>

    SQL> conn toms/toms

    已连接。

    SQL> select table_name from tabs where table_name like '%STU%';

    TABLE_NAME

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

    STU_1

    STU_2

    SQL> select * from stu_1;

    NO

    ----------

    1

    SQL> select * from stu_2;

    NO

    ----------

    2

    SQL>

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yjq8116/archive/2009/03/26/4025847.aspx

    展开全文
  • Oracle 删除命令详解

    2020-12-08 18:35:03
    Oracle 删除表方式分为三种: 第一种:drop 命令 drop table 表名; 实战: drop table erms_biz_accep_management; drop table ERMS_BIZ_ARCH_COMPANY_SPEC; drop table ERMS_BIZ_SUP_QUAL_AND_SAFETY; drop ...

    Oracle 删除表方式分为三种:

    第一种:drop 命令

    drop table  表名;
    
    实战:
    drop table erms_biz_accep_management;
    drop table ERMS_BIZ_ARCH_COMPANY_SPEC;
    drop table ERMS_BIZ_SUP_QUAL_AND_SAFETY;
    drop table ERMS_BUS_ENG_SPEC;
    
    注意:
        1.用drop删除表数据,不但会删除表中的数据,连表结构也被删除了!
    
    

    第二种:truncate 命令

     truncate table 表名;
    
    实战
    truncate table erms_biz_accep_management;
    truncate table ERMS_BIZ_ARCH_COMPANY_SPEC;
    truncate table ERMS_BIZ_CONS_MARKET;
    truncate table erms_biz_traffic_facility;
                   
    
    注意:
        1.用truncate删除表数据,只是删除表中的数据,表结构不会被删除!
    
        2.删除整个表的数据时,过程是系统一次性删除数据,效率比较高
    
        3.truncate删除释放空间

    第三种:delete 命令

    delete  表名;
    
    实战
    delete  erms_biz_accep_management;
    delete  ERMS_BIZ_ARCH_COMPANY_SPEC;
    delete  ERMS_BIZ_CONS_MARKET;
    delete  erms_biz_traffic_facility;
    
    注意:
        1.用delete删除表数据,只是删除表中的数据,表结构不会被删除!
    
        2.虽然也是删除整个表的数据,但是过程是系统一行一行地删,效率比truncate低
    
        3.delete删除是不释放空间的

     

    展开全文
  • Oracle常用命令

    千次阅读 2013-09-23 21:42:43
    Oracle 安装自动生成sys用户和system用户 sys 超级用户 具有最高权限 具有sysDBA角色,有create database权限 该用户默认密码是change_in_install  system 管理操作员 权限也比较大,具有sysoper角色,...
  • Oracle exp命令常用用法

    千次阅读 2011-01-12 12:23:00
    Oracle exp命令常用用法文章分类:数据库Oracle exp命令常用用法  1 将数据库TEST完全导出,用户名system 密码manager 导出到D:/daochu.dmp   exp system/manager@TEST file=d:/daochu.dmp full=...
  • oracle 学习日志--ORACLE EXP命令

    万次阅读 2011-07-06 14:28:43
    本文对Oracle数据的导入导出 imp ,exp 两个命令进行了介绍, 并对其相应的参数进行了说明,然后通过一些示例进行演练,加深理解.文章最后对运用这两个命令可能出现的问题(如权限不够,不同oracle版本)进行了探讨,并提出...
  • oracle中exp/imp命令详解

    2009-02-18 22:59:00
    ORACLE数据库有两类备份方法。第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下... 数据库逻辑备份方法 ORACLE数据库的逻辑备份分为三种模式:表备份、用户
  • oracle的sqlldr命令

    千次阅读 2011-11-29 13:53:13
    oracle的sqlldr和db2的load不大一样,db2可以一句话执行,但是oracle分为执行语句和控制文件两部分的。 首先: sqlldr username/password@sid control="control file path" direct=true【false】 log="log path...
  • oracle Shrink命令的使用

    千次阅读 2007-06-26 19:33:00
    从10g开始,oracle开始提供Shrink的命令,假如我们的表空间支持自动段空间管理 (ASSM),就可以使用这个特性缩小段,即降低HWM。  segment shrink分为两个阶段:    1、数据重组(compact):通过一系列...
  • ORACLE 10g命令大全

    千次阅读 2017-11-02 12:43:08
    ORACLE 10g命令大全 构件与体系结构  常用的环境变量 ORACLE_HOME:将要安装oracle软件的目录,指向oracle二进制文件应该安装到的位置。 ORACLE_BASE:主机服务器上用于oracle软件的顶级目录 ORACLE...
  • Oracle数据库逻辑增量备份之exp/imp 一、实现需求  由于一个库在云平台上,虽然做了RMAN备份,但是RMAN备份在云本地磁盘上,同时库备份数据量比较大,无法转移到其他的空间上。由于该库应用的性质比较特殊,大...
  • oracle基本命令集合(1)--基本操作

    千次阅读 2017-05-07 20:54:36
    测试机oracle参数 版本:oracle 11g 用户/密码:sys/orcl,system/manager,scott/tiger 序: SQL语言是数据库的核心语言。全称是“结构化查询语言(Structured Query Language)”,最早的是IBM的圣约瑟研究...
  • Oracle常用dump命令

    千次阅读 2015-03-25 09:58:58
    Oracle常用dump命令    Memory Dumps 1).Global Area ALTER SESSION SET EVENTS 'immediatetrace name global_area level n'; 1 包含PGA 2包含SGA 4 包含UGA 8 包含indrect memory 2).Library
  • oracle rac常用的命令

    千次阅读 2014-08-25 17:19:45
    oracle rac常用的命令 节点层:olsnodes 网络层: oifcfg 集群层:crsctl,ocrcheck,ocrdump,ocrconfig 应用层:srvctl,onsctl,crs_stat 一.节点层: olsnodes 用来显示集群点列表,可以混用 [root@rac1 ...
  • oracle服务 linux启动命令

    千次阅读 2018-12-22 14:20:24
     Linux下启动Oracle分为两步:  1)启动监听;  2)启动数据库实例;   1.登录服务器,切换到oracle用户,或者以oracle用户登录 [admin@dataserver ~]$ su - oracle 密码: [oracle@dataserver ~]$ 2....
  • oracle Exp/IMP命令详解

    2010-03-25 11:34:00
    exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。oracle Exp命令详解1...
  • 24-Oracle入门之Linux下的Oracle命令大全

    千次阅读 2017-01-08 16:27:54
    一,启动 ...1.#su - oracle 切换到oracle用户且切换到它的环境 2.$lsnrctl status 查看监听及数据库状态 3.$lsnrctl start 启动监听 4.$sqlplus / as sysdba 以DBA身份进入sqlplus
  • Oracle数据库导入导出命令

    千次阅读 2012-09-13 15:24:34
    功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。   大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。  Oracle有个好处,虽然你的电脑不是服务器,但是你装了...
  • oracle认证方式分为操作系统认证和口令文件认证2种方式,操作系统认证有时候也叫本地认证。这2种认证我是这么理解的:--操作系统认证:即oracle认为操作系统用户是可靠的,即既然能登陆到操作系统那么oracle数据库...
  • oracle imp/exp命令详解

    万次阅读 2012-05-02 17:21:38
    oracle中imp命令详解 Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文 件。imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用 法。 1. 获取...
  • 一、Linux下启动Oracle Linux下启动Oracle分为两步: 1)启动监听; 2)启动数据库实例;1.登录服务器,切换到oracle用户,或者以oracle用户登录[admin@dataserver ~]$ su - oracle 密码: [oracle@dataserver ~]...
  • Oracle数据库备份命令Exp/Imp

    千次阅读 2011-05-26 16:20:00
    数据库逻辑备份方法 ORACLE数据库的逻辑备份分为三种模式:表备份、用户备份和完全备份。 ORACLE数据库有两类备份方法。第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下
  • oracle 跟踪文件和转储命令详解

    千次阅读 2011-10-11 22:25:33
     Oracle跟踪文件分为三种类型:  一种是后台报警日志文件,记录数据库在启动、关闭和运行期间后台进程的活动情况,如表空间创建、回滚段创建、某些alter命令、日志切换、错误消息等。在数据库出现故障时,应首先...
  • Oracle RAC 常用维护工具和命令

    万次阅读 2010-03-09 01:02:00
     Oracle Clusterware的命令集可以分为以下4种:节点层:osnodes网络层:oifcfg集群层:crsctl, ocrcheck,ocrdump,ocrconfig应用层:srvctl,onsctl,crs_stat下面分别来介绍这些命令。 一. 节点层只有一个命令:...
  • oracle数据库使用sqlldr命令导入数据分为以下几步: 1. 准备工作:建立表空间,并在表空间内建立相应的表格。  数据库、表空间与表的关系:Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,222
精华内容 23,688
关键字:

oracle中的命令分为