`
garydo
  • 浏览: 159437 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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脚本创建需要的索引。 


分享到:
评论

相关推荐

    oracle导入导出(imp,exp本机或异机恢复)-详细笔记文档总结

    本文档总结了 Oracle 数据库的完全导入导出、imp 和 exp 命令的使用方法,以及本机和异机恢复的步骤。 一、数据库的完全导入导出 Oracle 的数据库导入导出可以使用 exp 和 imp 两个命令来实现。exp 命令用于将...

    Oracle11G导入导出(imp和exp)少表解决方法

    Oracle 11G 导入导出(imp 和 exp)少表解决方法 Oracle 11G 是一个功能强大且复杂的数据库管理系统,它提供了多种方式来导入和导出数据。然而,在使用 Oracle 11G 时,用户可能会遇到一些问题,例如无法导出空表...

    oracle imp/exp命令和举例

    ### Oracle IMP/EXP 命令详解与实例 在Oracle数据库管理中,`IMP`(Import)和`EXP`(Export)是两个非常...掌握这些命令的使用方法对于Oracle数据库管理员来说是非常必要的,能够有效提高数据库管理的效率和安全性。

    oracle的expimp使用方法学习

    Oracle数据库的备份是确保数据安全的关键操作,而`exp`和`imp`是Oracle数据库中用于逻辑备份的主要工具。这两个命令允许用户将数据库中的数据导出(exp)到文件,然后在需要时导入(imp)回数据库。逻辑备份在某些...

    Oracle数据库逻辑增量备份之exp/imp

    本文将深入探讨Oracle数据库中使用exp/imp工具进行逻辑增量备份的方法及其恢复策略。 1一、实现需求 在Oracle数据库环境中,确保数据安全性和可用性是关键。逻辑增量备份的主要目标是在最小化系统停机时间和资源...

    oracle imp exp几点应用技巧

    标题和描述均提到了“oracle imp exp几点应用技巧”,这暗示了文章主要聚焦于Oracle数据库的导入(import,简称imp)和导出(export,简称exp)操作的实用技巧。以下是对这一主题的深入探讨: ### Oracle Imp Exp ...

    Oracle11G导入导出(imp和exp)少表解决方法.docx

    Oracle 11G 的导入导出工具 exp 和 imp 是数据库管理员进行数据迁移、备份和恢复的重要工具。然而,在11G R2 版本中,由于一个新特性,空表在没有数据的情况下不会分配 segment,导致无法通过 exp 导出。这个问题...

    oracle 10g exp.exe

    Oracle 10g的`exp.exe`是Oracle Data Pump Export工具的一部分,用于从数据库中导出数据和对象。当你遇到“exp.exe已停止工作”的错误时,这通常意味着在尝试执行数据导出过程中遇到了问题。以下是一些可能导致该...

    Imp和Exp命令详解

    使用方法与Exp类似,只需将`exp`替换为`imp`即可。导入成功后,系统会给出相应的提示。 **创建用户及授权**: 1. 创建用户: ``` CREATE USER PAFIRC IDENTIFIED BY PAFIRC DEFAULT TABLESPACE USERTABLE ...

    oracle数据库exp_imp命令详解[参考].pdf

    Oracle 数据库 exp/imp 命令详解 Oracle 数据库 exp/imp 命令是 Oracle 中最常用的命令之一。...exp/imp 命令是 Oracle 数据库备份和恢复的重要工具,了解其使用方法和参数可以帮助我们更好地备份和恢复数据库。

    oracle11g-exp文件

    在给定的“oracle11g-exp”文件中,重点涉及了Oracle数据库的数据导出和导入工具,即EXP(Export)和IMP(Import)。这两个实用程序是数据库管理员和开发人员日常工作中不可或缺的部分,主要用于数据迁移、备份和...

    imp_exp示例

    本文将深入解析Oracle的imp和exp命令的使用方法及示例,帮助读者理解如何有效地利用这些工具进行数据管理。 ### Oracle EXP(Export) `exp`命令用于将Oracle数据库中的数据导出到一个二进制文件中,这个过程被...

    Oracle11g64bit下的bin目录,包含导入导出用的imp.exe以及exp.exe文件,可用于plsql导入导出

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,尤其在企业级应用中占据主导地位。在Oracle11g 64位版本中,`bin`...熟悉并掌握这些工具的使用方法,对于任何Oracle数据库的使用者来说都是至关重要的。

    oracle命令 exp&imp命令详解

    在《exp&imp命令详解.pdf》这份文档中,你应该能够找到关于这些命令的详细使用方法、示例以及最佳实践,包括如何处理各种复杂情况和问题。通过深入学习和实践,你将能够熟练掌握Oracle数据库的数据导入和导出,为你...

    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份

    本文将详细介绍 imp/exp 的工作原理、应用场景以及具体的命令使用方法。 #### 二、Oracle imp/exp 概述 Oracle 数据库中的 imp/exp 是两个非常实用的工具,它们分别代表“导入”和“导出”。通过使用 exp 命令,...

    Oracle10g-10.1.0.2客户端的exp.exe文件

    Oracle 10g是一款历史悠久但仍然广泛使用的数据库管理系统,它提供了强大的数据管理和处理能力。在本文中,我们将深入探讨Oracle10g客户端与服务端之间的兼容性问题,以及如何解决因版本不一致导致的导入导出问题。 ...

    oracle exp imp详解

    Oracle EXP 和 IMP 是 Oracle 数据库中用于数据导入导出的传统工具。虽然随着技术的发展,这些工具在处理大规模数据库时逐渐被 RMAN 和其他更现代的技术所取代,但在中小型数据库环境中仍然非常有用。 #### 二、EXP...

    Oracle exp imp命令详解

    本文将详细介绍这两个命令的参数和使用方法,帮助读者更好地理解和掌握它们。 #### 一、Oracle exp 命令详解 **1.1 基本语法** ``` exp [username/password] [keyword=value] ``` 其中,`username/password`是...

    oracle_exp_imp_详解

    Oracle的`exp`和`imp`工具是数据库管理员在管理Oracle...总的来说,`exp`和`imp`是Oracle数据库管理中的基础工具,虽然在现代数据库管理中可能不再是首选,但了解它们的用法和参数对于数据库管理员来说仍然至关重要。

Global site tag (gtag.js) - Google Analytics