1.1 exp 使用方法及实例
exp/imp 为一种数据库备份恢复工具也可以作为不同数据库之间传递数据的工具两个数据库所在的操作系统可以不同exp 可以将数据库数据导出为二进制文件imp 可以将导出的数据文件再导入到相同的数据库或不同的数据库
数据库导出有四种模式full(全库导出), owner(用户导出), table(表导出), tablespace(表空间导出).
full( 全库导出): 导出除ORDSYS,MDSYS,CTXSYS,ORDPLUGINS,LBACSYS 这些系统用户之外的所有用户的数据.
owner( 用户导出): 导出某个或某些用户的所有权限和数据.
tables( 表导出): 导出某些表(可以是不同用户的)的结构和数据.
tablespace( 表空间导出):表空间导出数据.
执行exp 有三种方法:交互式,命令行和参数文件
交互式:直接输入exp 命令用户可以按照exp 提示的信息一步一步操作,比较简单.
命令行:输入命令行exp username/password parameter=value.
参数文件:输入命令行exp username/password parfile=filename exp 所需的参数从参数文件引入.
参数是可以重复的优先级为命令行优于参数文件后面的参数值覆盖于前面的参数值.
下面介绍一些常用的参数没有标明的表示exp/imp 都适用imp 的参数不再单独介绍.
1.1.1 参数介绍
buffer 缓冲区大小如果此值设为0 则一次只导入一条记录对数据量大的导出可以设置较大一般缺省值即可.
file 导出的文件列表可以指定一个或多个文件名缺省扩展名为.dmp 缺省导出文件名为expdat.dmp.
filesize exp 导出文件的最大字节数超出时从文件列表中获取下一个文件名,没有,则提示输入新的文件名.
help 显示export 参数帮助信息
inctype 增量备份的类型:complete(完全),cumulative(累积)和incremental (增量).
只可以在全库导出模式下才可以做完全累积或增量导出累积导出只导出自上次累积导出或完全导出以来已经修改的表增量导出只导出自上次增量累积或完全导出以来已经修改的表完全导出将数据库中全部对象都导出不管是否以及何时被修改.
log:日志文件,一般如果以命令行导入时,将log 设置上比较好可以看,到所有的导入信息,导入信息哪儿出错,导入了那些数据库对象.
show(imp):只是用来显示备份数据文件的内容.
full:为Y 时表示在全库方式下导出缺省为N.
tables:导出的表列表可以指定一个或多个表名.
fromuser(imp):可以将导出文件中的一个用户模式的数据对象导入为另一个用户模式的对象此参数表示导出文件中的用户模式.
touser(imp):此参数表示导入到数据库中时使用的用户模式对象譬如使用全库或者用户模式导出cams 用户的所有对象到一个文件中导入时需要将用户模式名称改为cams1,此时fromuser 为cams,touser 为cams1.
1.1.2 典型用法
1. 交互式-用户导出
交互式导出比较简单,这里只举用户导出一种用法进行说明,全库导出和表导出比较简单不再列出.
[oracle@localhost script]$ exp
Export: Release 8.1.7.4.0 - Production on Fri Feb 6 15:01:07 2004
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Username: cams --此处输入启动导出的用户
Password: --此处输入相应的密码
Connected to: Oracle8i Enterprise Edition Release 8.1.7.4.0 -Production
JServer Release 8.1.7.4.0 - Production
Enter array fetch buffer size: 4096 >--此处需要输入buffer 值交互式导出时大多数参数都有缺省值,如果选用缺省值,直接回车即可.
Export file: expdat.dmp > 20040206.dmp --此处输入导出文件名
(1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > --此处输入导出模式,全库导出,用户导出还是表导出,缺省为用户导出.
Export grants (yes/no): yes > --是否导出授权通常选择yes
Export table data (yes/no): yes > --是否导出表中数据如果选择no则只导出表的结构通常选择yes
Compress extents (yes/no): yes > --选择yes
Export done in ZHS16CGB231280 character set and ZHS16CGB231280 NCHAR
character set
About to export specified users ...
User to be exported: (RETURN to quit) > cams --此处输入需要导出的用户,如果需要导出多个用户的数据,exp 会一直提示用户,直至用户输入了..
User to be exported: (RETURN to quit) > .. --此处输入".."
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user CAMS
. exporting object type definitions for user CAMS
About to export CAMS's objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export CAMS's tables via Conventional Path ...
. . exporting table TBL_BILLDETAIL_SWITCH 23 rows exported
. . exporting table TBL_BLACKLIST 0 rows exported
. . exporting table TBL_CHARGE_CARD 11 rows exported
. . exporting table TBL_ERROR_CODE 37 rows exported
. . exporting table TBL_EXPORT 2 rows exported
. . exporting table TBL_LOG 3008 rows exported
......
. exporting synonyms
. exporting views
. exporting stored procedures
. exporting operators
. exporting referential integrity constraints
. exporting triggers
. exporting indextypes
. exporting bitmap, functional and extensible indexes
. exporting posttables actions
. exporting snapshots
. exporting snapshot logs
. exporting job queues
. exporting refresh groups and children
. exporting dimensions
. exporting post-schema procedural objects and actions
. exporting statistics
Export terminated successfully without warnings.
说明:
(1) 在交互式导出或导入时,如果输错值,不再想进行下面的步骤,但不知如何退出此时请用". "
2. 命令行-全库导出
exp userid=cams/cams@cams full=y file=(/tmp/2004020601.dmp,
/tmp/2004020602.dmp, /tmp/2004020603.dmp) filesize=2GB
log=/tmp/20040206.log
该命令导出全库数据,导出到多个文件中,每个文件最大2GB, exp 只生成最少的导出文件,譬如导出的数据不足2GB, exp 只生成/tmp/2004020601.dmp 如果file 列表中的文件太少,不能存放所有的导出数据,exp 会提示用户输入文件名,导出过程记录日志.
说明:
(1) 由于linux 文件系统最大只支持2G 的文件,所以如果数据库数据量大超过2G 时导出将会出错,所以file 参数可以设置多个文件.
3. 命令行用户导出
exp userid=cams/cams@cams owner=cams file=(/tmp/2004020601.dmp,
/tmp/2004020602.dmp, /tmp/2004020603.dmp) filesize=2GB
log=/tmp/20040206.log
该命令导出cams 用户数据导出到多个文件中每个文件最大2GB 导出过程记录日志
4. 命令行表导出
exp userid=cams/cams@cams tables=(tbl_log, tbl_user_log)
file=(/tmp/2004020601.dmp, /tmp/2004020602.dmp) filesize=2GB
log=/tmp/20040206.log
该命令导出cams 用户的两个表的数据,导出到多个文件中,每个文件最大2GB,导出过程记录日志.
5. 命令行-完全导出
exp userid=cams/cams@cams full=y inctype=complete
file=(/tmp/2004020601.dmp, /tmp/2004020602.dmp, /tmp/2004020603.dmp)
filesize=2GB log=/tmp/20040206.log
该命令完全导出全库数据,导出到多个文件中每个文件最大2GB,导出过程记录日志.
说明:
(1) 全库导出时,增量导出类型缺省为(complete)完全,所以例5 和例2导出的结果是完全一样的.
6. 命令行-累积导出
exp userid=cams/cams@cams full=y inctype=cumulative
file=(/tmp/2004020601.dmp, /tmp/2004020602.dmp) filesize=2GB
log=/tmp/20040206.log
该命令累积导出全库数据,导出到多个文件中,每个文件最大2GB,导出过程记录日志.
说明:
(1) 如果选择了增量导出类型,则必需选择full=y,即只能在全库导出模式下进行完全累积或增量导出.
7. 命令行-增量导出
exp userid=cams/cams@cams full=y inctype=incremental
file=(/tmp/2004020601.dmp, /tmp/2004020602.dmp) filesize=2GB
log=/tmp/20040206.log
该命令累积导出全库数据,导出到多个文件中,每个文件最大2GB,导出过程记录日志.
8. 参数文件-用户导出
exp parfile=cams_exp.par
cams_exp.par文件的内容如下:
userid=cams/cams@cams
owner=cams
file=(/tmp/2004020601.dmp,/tmp/2004020602.dmp, tmp/2004020603.dmp)
filesize=1GB
log=/tmp/cams_exp.log
该命令使用了参数文件,导出cams用户的所有数据,导出到多个文件中,每个文件最大2GB,导出过程记录日志.
说明:
(1) cams 用户保存了CAMS 系统的重要数据,为了不暴露cams用户的密码,可以将上面的userid 的值写为cams@cams,此时exp 会提示用户输入密码,输入的密码不会显示出来.