oracle export命令使用浅解,Oracle Export下令使用浅解

Oracle Export命令使用浅解

Oracle

Export

命令顾名思义就是导出数据库信息用的,既可以导出表结构,也可以导出数据,

表空间,或者按用户导出等等。按照通常的说法,该命令主要是用于数据库的迁移或者备份的。下面就介绍一下该命令的部分参数。

1.

认识

exp

命令

执行

export

操作需要执行的命令是

exp, exp

导出数据的一个优点就是快,但导出的结果文件均为二进制文件,而且要求不能手动修改。

exp

在设定执行参数的值的时候,支持的格式为

EXP KEYWORD=value

KEYWORD=(value1,value2,...,valueN),

例如

:

EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)

exp

命令支持多个参数,要查看这些参数的说明可以执行如下命令来看帮助。

exp help=y

但是给出的参数的信息比较粗略。有必要对常用参数进行一下具体说明。

2.

参数说明

USERID:

用户名

/

口令。格式为

用户名

/

密码

@

待连接的数据库。该参数必须为

exp

命令的第一个参数。

BUFFER

:数据缓冲区大小。该参数指定查询数据库记录时的缓冲区大小,单位为

byte

,如果该参数设为

0

,那么获取数据库记录时每次读取一行。该参数需要配合参数

direct=N

来使用。

FILE:

输出文件。导出的目标文件名,如果不设定该参数的话,命令会采用默认文件名——EXPDAT.DMP

TABLES:

表名列表。需要导出的表名,可以是一个,也可以是多个。单个表名格式为:tables=test_tab,

多个表名格式:tables=(test_tab_1,test_tab_2)

。在这提示一点,在linux

、unix

环境下多个表名时用到的括号需要转义,如下tables=\(test_tab_1,test_tab_2\)

COMPRESS

导入到一个区。这个参数是最容易让人误解的了,很容易理解简单压缩的意思。接下来我需要引用一段别人文章中的描述来解释了。

事实上,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

不能跨多个文件。

RECORDLENGTH

IO

记录的长度。和DIRECT=Y

配合使用的是RECORDLENGTH

参数,它定义了Export I/O

缓冲的大小,作用类似于常规路径导出使用的BUFFER

参数。建议设置RECORDLENGTH

参数为最大I/O

缓冲,即65535(64kb)

INDEXES:

导出索引。导入过程中建立用户定义的索引,特别是表上有多个索引或者数据表特别庞大时,需要耗费大量时间。某些情况下,需要以最快的时间导入数据,而索引允许后建,我们就可以使用

INDEXES=N

只导入数据不创建索引,从而加快导入速度。

DIRECT

直接路径。该参数设定为

Y

时,

oracle

将采用直接读取数据库存储文件的方式获取数据,而不再通过查询数据库的方式,省去了执行

sql

的时间,提高了导出速度。

LOG

屏幕输出的日志文件。

ROWS

导出数据行。默认为

Y

,导出表中数据。设定

N

,则只会导出表结构。这个参数就让我给误会了,我看到这个参数还以为是指定行数呢,这个参数太无厘头了。

CONSISTENT

交叉表的一致性。这个参数是指定在数据导出过程中,是否维持数据库表一致性。默认为N

,如果设定为Y

的话,在导出过程中外部系统同样可以查询数据库相关表,并且获取到一致性的数据,在导出之前更新或者修改的数据不会被外部系统感知。这样也就需要占用数据库的回滚段。如果主机资源紧张,可以将参数设定为N

,这样既可以少占用回滚段资源,更主要的是这样导出速度也会提升。

FILESIZE:

每个转储文件的最大大小。单位为bytes,

设定了该参数后,当导出的数据文件超过最大值时,会重新写入到新文件中,以此类推。但是每次写入新文件的时候,命令会转为交互状态,需要用户数据新的文件名。

QUERY

用户导出表的子集的select

子句。在只希望导出某表的一部分符合条件的数据时,这个参数就能派上用场了。整个参数需要用

” ”

括起来。这个参数通过输入where

条件可以只导出预期的数据。如果是导出针对的是多个表,那么在输入where

条件时需要保证该子句对导出的任何一张表都是有效的。

CONSTRAINTS

导出约束条件。是否导出表中已有的constraint

GRANTS

是否导出授权信息。

STATISTICS

分析对象 。指定导出过程中是否统计导出信息。选项包括:

NONE

COMPUTE

ESTIMATE

。我习惯上把它设定为

NONE,

这样可以提高导出速度。

常用的参数基本上就这些了。

3.

举例

下面简单列举了一个导出命令的语句,加深下直观印象。

exp scott/scottpwd@TESTDB file=E:\data\test20111107.dmp buffer=100000 tables=(etl_test_0,etl_test_1,etl_test_2) compress=N indexes=N direct=N rows=Y grants=Y consistent=N constraints=Y log=E:\ data\ exp.log query=”where id > 10”

关于

exp

命令就写这些了,与

exp

相对的一个命令就是

imp

,也就是导入(

import

)命令,有导出就得有导入,这个下一篇再做介绍吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值