Oracle数据库对于我们审计人员来讲,应该是既熟悉又陌生,熟悉的是在计算机辅助审计中,常常要从被审计单位的Oracle数据库中导出数据,然后再导入到自己电脑的Oracle数据库中,通过如ACCSE、EXCEL、SQL等调用ODBC数据源,进行数据再加工处理。然而Oracle的导入(Imp)、导出(Exp)实用程序的使用方法对于不从事数据库管理的人员来说不易掌握。这里就向各位详细介绍Oracle8i和Oracle9i的两个实用程序的使用方法,以帮助审计人员熟练掌握。
一、Oracle8i 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名称,包括文件名和目录,例子见上面。
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'"""
二、Oracle8i 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。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因为目前使用得较少,不作详细解释。关于EXP/IMP的详细参数信息你可以通过EXP/IMP HELP=Y来获得。
在进行并行EXP/IMP的时候,如果IMP过程建索引的话不建议同时运行5个以上的IMP,如果你想加快速度,可以在IMP的时候不建索引,这样只要内存允许,可以多跑几个,然后是SQL脚本创建需要的索引
分享到:
相关推荐
ORACLE导入导出详解\ ORACLE导入导出详解 ORACLE导入导出详解
oracle数据库导入导出命令imp exp impdp expdp的使用详解,很有用!
远程工具连接到 Linux 进行操作,进行 Linux 上 dmp 文件的导入导出。 正文 a. 将用户 system 用户表导出到指定路径 D 盘 exp system/password@SID file=d:/daochu.dmp full=y b. 将用户 system 与 sys 用户的表...
### Oracle数据库的导入导出详解 Oracle数据库作为企业级应用中的关键组件之一,在数据迁移、备份与恢复等场景中扮演着重要角色。本文将详细介绍Oracle数据库的导入导出操作,并通过具体的命令行示例帮助读者更好地...
### Oracle 导入(IMP)与导出(EXP)命令详解 #### 一、概述 在Oracle数据库管理中,导入(Import,IMP)与导出(Export,EXP)是两个非常重要的工具,用于数据迁移、备份恢复等场景。本文将详细介绍这两个命令的...
一、Oracle导入导出工具 Oracle提供了两个主要的实用程序来实现数据的导入导出:`expdp`(Export Data Pump)和`impdp`(Import Data Pump)。这两个工具是Oracle Data Pump技术的一部分,相较于传统的`exp`和`imp`...
Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和稳定性深受企业青睐。在数据库管理中,数据导出和导入是常见的操作,用于备份、迁移、恢复或者在不同环境间转移数据。本文将详细介绍Oracle数据库的...
### Oracle导入导出知识点 #### 一、Oracle 导入导出工具简介 在Oracle数据库管理中,数据的备份与恢复是一项重要的工作。Oracle提供了多种工具来实现这一目标,其中最为常用的便是`exp`(Export)和`imp`(Import...
Oracle 导入导出 DMP 文件详解 Oracle 是一种广泛使用的关系型数据库管理系统,导入导出 DMP 文件是 Oracle 数据库管理员和开发者经常遇到的一个重要任务。下面将详细介绍 Oracle 导入导出 DMP 文件的步骤和相关...
#### 一、Oracle导入导出工具简介 Oracle数据库提供了两种强大的工具来处理数据的导入导出需求:`exp.exe` 和 `imp.exe`。这两种工具位于`Oracle_home/bin`目录下,适用于各种场景下的数据迁移任务。 - **exp.exe*...
### Oracle导入导出概述 Oracle提供了多种工具和技术用于管理数据的导入导出。这些工具主要包括`exp`(导出)和`imp`(导入)。这些命令行工具允许用户将数据从一个Oracle数据库转移到另一个数据库。在实际应用中,...
### Oracle数据库导入导出命令详解 #### 一、Oracle 导入导出命令概述 Oracle 数据库提供了强大的数据导入导出功能,通过 `exp` 和 `imp` 命令来实现数据的备份与恢复。这些命令对于日常的数据库管理来说至关重要...
Oracle 数据导入导出是...Oracle 数据导入导出的详细操作不仅涉及到命令的正确使用,还需要考虑备份策略、存储安排以及业务连续性等因素。在实际操作中,应结合数据库的规模、业务需求和资源限制来定制合适的备份计划。
### Oracle导入导出命令详解 Oracle数据库作为一款广泛使用的数据库管理系统,在数据迁移、备份与恢复等方面具有非常重要的作用。在日常运维工作中,我们经常会用到Oracle的导入(Import)和导出(Export)命令来...
Oracle数据库导入导出命令详解 Oracle数据库导入导出命令是数据库管理员和开发人员必备的技能之一。今天,我们将详细介绍如何使用命令行来操作Oracle数据库的导入和导出。 备份数据 备份数据是数据库管理员的重要...
### Oracle 导入导出 DMP 文件详解 #### 一、引言 Oracle 数据库管理系统是一种广泛使用的数据库软件,提供了强大的功能来管理大量的数据。在日常运维或迁移场景中,经常需要将数据库中的数据导出为文件或将外部...