Oracle的导出实用程序(Export utility)允许从数据库提取数据,并且将数据写入操作系统文件。exp使用的基本格式:exp[username[/password[@service]]],以下例举exp常用用法。
1. 获取帮助
 exp help=y
2. 导出一个完整数据库
 exp system/manager file=bible_db log=dible_db full=y
3. 导出数据库定义而不导出数据
 exp system/manager file=bible_db log=dible_db full=y rows=n
4. 导出一个或一组指定用户所属的全部表、索引和其他对象
 exp system/manager file=seapark log=seapark owner=seapark exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)
注意:在导出用户时,尽管已经得到了这个用户的所有对象,但是还是不能得到这些对象引用的任何同义词。解决方法是用以下的SQL*Plus命令创建一个脚本文件,运行这个脚本文件可以获得一个重建seapark所属对象的全部公共同义词的可执行脚本,然后在目标数据库上运行该脚本就可重建同义词了。
 SET LINESIZE 132 SET PAGESIZE 0 SET TRIMSPOOL ON SPOOL c:\seapark.syn SELECT 'Create public synonym '||synonym_name ||' for '||table_owner||'.'||table_name||';' FROM dba_synonyms WHERE table_owner = 'SEAPARK' AND owner = 'PUBLIC'; SPOOL OFF
5. 导出一个或多个指定表
 exp seapark/seapark file=tank log=tank tables=tank exp system/manager file=tank log=tank tables=seapark.tank exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)
6. 估计导出文件的大小
全部表总字节数:
SELECT sum(bytes)
FROM dba_segments
WHERE segment_type = 'TABLE';
seapark用户所属表的总字节数:
SELECT sum(bytes)
FROM dba_segments
WHERE owner = 'SEAPARK'
AND segment_type = 'TABLE';

seapark
用户下的aquatic_animal表的字节数:
SELECT sum(bytes)
FROM dba_segments
WHERE owner = 'SEAPARK'
AND segment_type = 'TABLE'
AND segment_name = 'AQUATIC_ANIMAL';
7. 导出表数据的子集(oracle8i以上)
NT系统:
exp system/manager query='Where salad_type=''FRUIT''' tables=amy.salad_type file=fruit log=fruit
UNIX系统:
exp system/manager query=\"Where salad_type=\'FRUIT\'\" tables=amy.salad_type file=fruit log=fruit
8. 用多个文件分割一个导出文件
 exp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck, filesize=1G tables=hr.paycheck
9. 使用参数文件
 exp system/manager parfile=bible_tables.par
bible_tables.par参数文件:
 #Export the sample tables used for the Oracle8i Database Administrator's Bible. file=bible_tables log=bible_tables tables=( amy.artist amy.books seapark.checkup seapark.items ) 
10. 增量导出
·        "完全"增量导出(complete),即备份整个数据库
exp system/manager inctype=complete file=990702.dmp
·        "增量型"增量导出(incremental),即备份上一次备份后改变的数据
exp system/manager inctype=incremental file=990702.dmp
·        "累计型"增量导出(cumulative),即备份上一次"完全"导出之后改变的数据
exp system/manager inctype=cumulative file=990702.dmp
附:常用参数说明
参数 说明

file
指定导出文件名。默认值是file=expdat.dmp。默认的文件扩展名是.dmp

filesize
允许使用多个文件分布式导出数据。默认值为filesize=0,表示所有的数据被写入一个文件。可以选filesize=1024(1K,1M,1G)

full
full=y时,表示整个数据库将被导出。默认值为full=n

help
控制帮助屏幕的显示。它的参数是help=y;没有help=n选项

inctype
指定增量导出选项
1. complete:完全
2. incremental:增量 (导出上次任何导出后改变的所有数据库对象)
3. cumulative:累计 (导出上次cumulative,complete导出后改变的所有数据库对象)

indexes
指定索引是否被导出。默认值为indexes=y。如果不希望索引被导出,用indexes=n

log
指定收集导出信息(包括任何错误信息)的逻辑文件名。默认的文件扩展名是.log

owner
允许为指定用户或一列用户导出数据和对象

parfile
允许从一个文件读取导出参数

query
指定从一个或更多的表中导出行的一个子集。它的参数值在where语句中,并且被应用于select语句,在这里export不导出每一个表

rows
控制表数据是否被导出。默认值为rows=y,表示数据被导出。rows=n表示只想导出表定义,而不想导出表的数据

tables
允许导入一个指定的表或一列表

 

E:\>exp help=y

通过输入 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)
ROWS 导出数据行 (Y)
PARFILE 参数文件名
CONSTRAINTS 导出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕输出的日志文件
STATISTICS 分析对象 (ESTIMATE)
DIRECT 直接路径 (N)
TRIGGERS 导出触发器 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句

下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TABLESPACES 将传输的表空间列表


E:\>imp help=y

可以通过输入 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)
ANALYZE 执行转储文件中的 ANALYZE 语句 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
TOID_NOVALIDATE 跳过指定类型 id 的校验
FILESIZE 各转储文件的最大尺寸
RECALCULATE_STATISTICS 重新计算统计值 (N)

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

posted on 2008-05-09 19:19  Fred2111  阅读(1389)  评论(0编辑  收藏  举报