Oracle导入导出程序Exp的使用Word文件下载.docx
《Oracle导入导出程序Exp的使用Word文件下载.docx》由会员分享,可在线阅读,更多相关《Oracle导入导出程序Exp的使用Word文件下载.docx(14页珍藏版)》请在冰点文库上搜索。
PUBLIC'
SPOOLOFF
5.导出一个或多个指定表
expseapark/seaparkfile=tanklog=tanktables=tank
expsystem/managerfile=tanklog=tanktables=seapark.tank
expsystem/managerfile=tanklog=tanktables=(seapark.tank,amy.artist)
6.估计导出文件的大小
全部表总字节数:
SELECTsum(bytes)
FROMdba_segments
WHEREsegment_type='
TABLE'
seapark用户所属表的总字节数:
SELECTsum(bytes)
FROMdba_segments
WHEREowner='
ANDsegment_type='
seapark用户下的aquatic_animal表的字节数:
ANDsegment_name='
AQUATIC_ANIMAL'
7.导出表数据的子集(oracle8i以上)
NT系统:
expsystem/managerquery='
Wheresalad_type='
FRUIT'
tables=amy.salad_type
file=fruitlog=fruit
UNIX系统:
expsystem/managerquery=\"
Wheresalad_type=\'
FRUIT\'
\"
8.用多个文件分割一个导出文件
expsystem/manager
file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck,filesize=1Gtables=hr.paycheck
9.使用参数文件
expsystem/managerparfile=bible_tables.par
bible_tables.par参数文件:
#ExportthesampletablesusedfortheOracle8iDatabaseAdministrator'
sBible.
file=bible_tables
log=bible_tables
tables=(
amy.artist
amy.books
seapark.checkup
seapark.items
)
10.增量导出
•
“完全”增量导出(complete),即备份整个数据库
expsystem/managerinctype=completefile=990702.dmp
“增量型”增量导出(incremental),即备份上一次备份后改变的数据
expsystem/managerinctype=incrementalfile=990702.dmp
“累计型”增量导出(cumulative),即备份上一次“完全”导出之后改变的数据
expsystem/managerinctype=cumulativefile=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
允许导入一个指定的表或一列表
EXP导出选项
关键字
内容
USERID
运行导出命令的帐号的用户名/口令
BUFFEER
用来取数据行的缓冲区的大小
FILE
导出转储文件的名字
COMPRESS
导出是否应该压缩有碎片的段成一个范围,这将会影响STORAGE子句
GRANTS
导出时否要导出数据库对象上的授权
INDEXES
是否要导出表上的索引
ROWS
是否应导出行。
如它为‘N’,那么在导出文件中仅生成数据库对象的DDL
CONSSTRAINTS
是否导出表旧的约定条件
FULL
如设为‘Y’,那么将执行一个整个数据库导出操作
OWNER
要导出的一系列数据库帐号,然后执行这些帐号的USER导出操作
TABLES
要导出的一系列表;
执行这些表的TABLE导出操作
RECORDLENGTH
转储导出文件日志的长度(以字节为单位),通常都使用缺省,除非要在两个不同操作系统中传递导出文件
INCTYPE
正在执行的导出操作的类型(有效值有COMPLETE(缺省值),CUMULATIVE和IVCREMENTAL)
RECORD
在增量导出类型中的一个标记,标明是否将日志存储到数据字典中日志导出的表中
PARFILE
要传递给导出的参数文件的名字。
这个文件将包含所有参数的入口项
ANALYZE
标明是否将移对象的统计信息写入导出转储文件中
CONSISTENT
标明是否保留所有导出对象的读取一致复制
LOG
导出日志将要写入的文件的名字
MLS
标明是否要导出MLS标号
MLS_LABEL
规定了MLS标号的格式
IMP导入选项
运行导入命令的帐号的用户名/口令
导入转储文件的名字
SHOW
规定文件内容是否被显示,而不是被执行
EGNORE
标明在执行‘CREATE’命令时,是否忽略遇到的错误。
如果正在导入的对象已经存在时,应使用这个参数
如设为‘Y’,那么将执行一个整个数据库导入操作
FROMUSER
在FULL=N的情况下,才有参数。
它是一系列的数据库帐号,其对象应从导出转储文件中读取
TOUSER
一系列数据库帐号,导出转储文件扣的对象将要导入这些帐号
导入时否要导入数据库对象上的授权
是否要导入表上的索引
是否应导入行。
如它为‘N’,那么在导入文件中执行数据库对象的DDL
要导入的一系列表
转储导入文件日志的长度(以字节为单位),通常都使用缺省,除非要在两个不同操作系统中传递导入文件
正在执行的导入操作的类型(有效值有COMPLETE(缺省值),CUMULATIVE和IVCREMENTAL)
要传递给导入的参数文件的名字。
标明是否将移对象的统计信息写入导入转储文件中
导入日志将要写入的文件的名字
标明是否要导入MLS标号
INDEXFILE
不执行导入动作,只生成建索引的文本
贰:
一.导出工具exp
1.它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/bin
exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移
它有三种模式:
a.
用户模式:
导出用户所有对象以及对象中的数据;
b.
表模式:
导出用户所有表或者指定的表;
c.
整个数据库:
导出数据库中所有对象。
2.导出工具exp交互式命令行方式的使用的例子
$exp[email=test/test123@appdb]test/test123@appdb[/email]
Enterarrayfetchbuffersize:
4096>
回车
Exportfile:
expdat.dmp>
m.dmp
生成导出的文件名
(1)E(ntiredatabase),
(2)U(sers),or(3)T(ables):
(2)U>
3
Exporttabledata(yes/no):
yes>
Compressextents(yes/no):
ExportdoneinZHS16GBKcharactersetandZHS16GBKNCHARcharacterset
AbouttoexportspecifiedtablesviaConventionalPath...
Table(T)orPartition(T:
P)tobeexported:
(RETURNtoquit)>
cmamenu
要导出的表名
..exportingtable
CMAMENU
4336rowsexported
要导出的表名n
Exportterminatedsuccessfullywithoutwarnings.
3.导出工具exp非交互式命令行方式的例子
$expscott/tigertables=emp,deptfile=/directory/scott.dmpgrants=y
说明:
把scott用户里两个表emp,dept导出到文件/directory/scott.dmp
$expscott/tigertables=empquery=/"
wherejob=/'
salesman/'
andsal/<
1600/"
file=/directory/scott2.dmp
在exp里面加上导出emp的查询条件job='
salesman'
andsal<
1600
(但我个人很少这样用,还是把满足条件的记录生成临时表后,再exp会方便一些)
$expparfile=username.parfile=/directory1/username_1.dmp,/directory1/username_2.dmpfilesize=2000Mlog=/directory2/username_exp.log
参数文件username.par内容
userid=username/userpassword
buffer=8192000
compress=n
grants=y
username.par为导出工具exp用的参数文件,里面具体参数可以根据需要去修改
filesize指定生成的二进制备份文件的最大字节数
(可用来解决某些OS下2G物理文件的限制及加快压缩速度和方便刻历史数据光盘等)
4.命令参数说明
关键字说明(默认)
---------------------------------------------------
USERID用户名/口令
FULL导出整个文件(N)
BUFFER数据缓冲区的大小
OWNER所有者用户名列表
FILE输出文件(EXPDAT.DMP)
TABLES表名列表
COMPRESS导入一个范围(Y)
RECORDLENGTHIO记录的长度
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将传输的表空间列表
二.导入工具imp
imp导入工具将EXP形成的二进制系统文件导入到数据库中.
只有拥有IMP_FULL_DATABASE和DBA权限的用户才能做整个数据库导入
imp步骤:
(1)createtable
(2)insertdata
(3)createindex(4)createtriggers,constraints
2.导入工具imp交互式命令行方式的例子
$imp
Import:
Release8.1.6.0.0-Productionon星期五12月717:
01:
082001
(c)Copyright1999OracleCorporation.
Allrightsreserved.
用户名:
test
口令:
****
连接到:
Oracle8iEnterpriseEditionRelease8.1.6.0.0-64bitProduction
WiththePartitioningoption
JServerRelease8.1.6.0.0-Production
导入文件:
expdat.dmp>
/tmp/m.dmp
输入插入缓冲区大小(最小为8192)30720>
经由常规路径导出由EXPORT:
V08.01.06创建的文件
警告:
此对象由TEST导出,而不是当前用户
已经完成ZHS16GBK字符集和ZHS16GBKNCHAR字符集中的导入
只列出导入文件的内容(yes/no):
no>
由于对象已存在,忽略创建错误(yes/no):
yes
导入权限(yes/no):
yes>
导入表数据(yes/no):
导入整个导出文件(yes/no):
.正在将TEST的对象导入到SCOTT
..正在导入表
"
CMAMENU"
4336行被导入
成功终止导入,但出现警告。
3.导入工具imp非交互式命令行方式的例子
$impsystem/managerfromuser=jonestables=(accts)
$impsystem/managerfromuser=scotttables=(emp,dept)
$impsystem/managerfromuser=scotttouser=joetables=emp
$impscott/tigerfile=expdat.dmpfull=y
$impscott/tigerfile=/mnt1/t1.dmpshow=nbuffer=2048000ignore=ncommit=ygrants=yfull=ylog=/oracle_backup/log/imp_scott.log
$impsystem/managerparfile=params.dat
params.dat内容
file=dba.dmpshow=nignore=ngrants=yfromuser=scotttables=(dept,emp)
4.导入工具imp可能出现的问题
(1)数据库对象已经存在
一般情况,导入数据前应该彻底删除目标数据下的表,序列,函数/过程,触发器等;
数据库对象已经存在,按缺省的imp参数,则会导入失败
如果用了参数ignore=y,会把exp文件内的数据内容导入
如果表有唯一关键字的约束条件,不合条件将不被导入
如果表没有唯一关键字的约束条件,将引起记录重复
(2)数据库对象有主外键约束
不符合主外键约束时,数据会导入失败
解决办法:
先导入主表,再导入依存表
disable目标导入对象的主外键约束,导入数据后,再enable它们
(3)
权限不够
如果要把A用户的数据导入B用户下,A用户需要有imp_full_database权限
(4)
导入大表(大于80M)时,存储分配失败
默认的EXP时,compress=Y,也就是把所有的数据压缩在一个数据块上.
导入时,如果不存在连续一个大数据块,则会导入失败.
导出80M以上的大表时,记得compress=N,则不会引起这种错误.
(5)imp和exp使用的字符集不同
如果字符集不同,导入会失败,可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.
导入完成后再改回来.
(6)imp和exp版本不能往上兼容
imp可以成功导入低版本exp生成的文件,不能导入高版本exp生成的文件
根据情况我们可以用
$imp[email=username/password@connect_string]username/password@connect_string[/email]
connect_string是在/ORACLE_HOME/network/admin/tnsnames.ora
定义的本地或者远端数据库的名称
5.命令参数说明
关键字说明(默认)
----------------------------------------------
FULL导入整个文件(N)
BUFFER数据缓冲区大小
FROMUSER所有人用户名列表
FILE输入文件(EXPDAT.DMP)
TOUSER用户名列表
SHOW只列出文件内容(N)
IGNORE忽略创建错误(N)
GRANTS导入权限(Y)
INCTYPE增量导入类型
INDEXES导入索引(Y)
COMMIT提交数组插入(N)
ROWS导入数据行(Y)
CONSTRAINTS导入限制(Y)
DESTROY覆盖表空间数据文件(N)
INDEXFILE将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES跳过不可用索引的维护(N)
ANALYZE执行转储文件中的ANALYZE语句(Y)
r/>
F