oracleexpimp导入导出工具的使用Word格式.docx

上传人:b****6 文档编号:20868562 上传时间:2023-01-26 格式:DOCX 页数:12 大小:23.10KB
下载 相关 举报
oracleexpimp导入导出工具的使用Word格式.docx_第1页
第1页 / 共12页
oracleexpimp导入导出工具的使用Word格式.docx_第2页
第2页 / 共12页
oracleexpimp导入导出工具的使用Word格式.docx_第3页
第3页 / 共12页
oracleexpimp导入导出工具的使用Word格式.docx_第4页
第4页 / 共12页
oracleexpimp导入导出工具的使用Word格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

oracleexpimp导入导出工具的使用Word格式.docx

《oracleexpimp导入导出工具的使用Word格式.docx》由会员分享,可在线阅读,更多相关《oracleexpimp导入导出工具的使用Word格式.docx(12页珍藏版)》请在冰豆网上搜索。

oracleexpimp导入导出工具的使用Word格式.docx

cmamenu要导出的表名

..exportingtableCMAMENU4336rowsexported

要导出的表名n

Exportterminatedsuccessfullywithoutwarnings.3.导出工具exp非交互式命令行方式的例子$expscott/tigertables=(emp,dept)file=/directory/scott.dmpgrants=y说明:

把scott用户里两个表emp,dept导出到文件/directory/scott.dmp$expscott/tigertables=empquery=\"

wherejob=\'

salesman\'

andsal\&

lt;

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物理文件的限制及加快压缩速度和方便刻历史数据光盘等)二.导入工具imp1.它是操作系统下一个可执行的文件存放目录/ORACLE_HOME/binimp导入工具将EXP形成的二进制系统文件导入到数据库中.它有三种模式:

只有拥有IMP_FULL_DATABASE和DBA权限的用户才能做整个数据库导入

imp步骤:

(1)createtable

(2)insertdata(3)createindex(4)createtriggers,constraints2.导入工具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生成的文件

根据情况我们可以用

$impusername/password@connect_string

说明:

connect_string是在/ORACLE_HOME/network/admin/tnsnames.ora

定义的本地或者远端数据库的名称

注意事项:

UNIX:

/etc/hosts要定义本地或者远端数据库服务器的主机名

win98:

windows\hosts和IP地址的对应关系win2000:

winnt\system32\drivers\etc\hosts

ORACLEEXP/IMP的使用详解

  导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理冲突等中有不小的功劳。

当然,我们也可以把它作为小型数据库的物理备份后的一个逻辑辅助备份,也是不错的建议。

对于越来越大的数据库,特别是TB级数据库和越来越多数据仓库的出现,EXP/IMP越来越力不从心了,这个时候,数据库的备份都转向了RMAN和第三方工具。

下面说明一下EXP/IMP的使用。

  如何使exp的帮助以不同的字符集显示:

setnls_lang=simplifiedchinese_china.zhs16gbk,通过设置环境变量,可以让exp的帮助以中文显示,如果setnls_lang=American_america.字符集,那么帮助就是英文的了程序代码

EXP的所有参数(括号中为参数的默认值):

USERID用户名/口令如:

USERID=duanl/duanl

FULL导出整个数据库(N)

BUFFER数据缓冲区的大小

OWNER所有者用户名列表,你希望导出哪个用户的对象,就用owner=username

FILE输出文件(EXPDAT.DMP)

TABLES表名列表,指定导出的table名称,如:

TABLES=table1,table2

COMPRESS导入一个extent(Y)

RECORDLENGTHIO记录的长度

GRANTS导出权限(Y)

INCTYPE增量导出类型

INDEXES导出索引(Y)

RECORD跟踪增量导出(Y)

ROWS导出数据行(Y)

PARFILE参数文件名,如果你exp的参数很多,可以存成参数文件.

CONSTRAINTS导出约束(Y)

CONSISTENT交叉表一致性

LOG屏幕输出的日志文件

STATISTICS分析对象(ESTIMATE)

DIRECT直接路径(N)

TRIGGERS导出触发器(Y)

FEEDBACK显示每x行(0)的进度

FILESIZE各转储文件的最大尺寸

QUERY选定导出表子集的子句

下列关键字仅用于可传输的表空间

TRANSPORT_TABLESPACE导出可传输的表空间元数据(N)

TABLESPACES将传输的表空间列表程序代码

IMP的所有参数(括号中为参数的默认值):

USERID用户名/口令

FULL导入整个文件(N)

BUFFER数据缓冲区大小

FROMUSER所有人用户名列表

FILE输入文件(EXPDAT.DMP)

TOUSER用户名列表

SHOW只列出文件内容(N)

TABLES表名列表

IGNORE忽略创建错误(N)

GRANTS导入权限(Y)

INCTYPE增量导入类型

INDEXES导入索引(Y)

COMMIT提交数组插入(N)

ROWS导入数据行(Y)

PARFILE参数文件名

CONSTRAINTS导入限制(Y)

DESTROY覆盖表空间数据文件(N)

INDEXFILE将表/索引信息写入指定的文件

SKIP_UNUSABLE_INDEXES跳过不可用索引的维护(N)

ANALYZE执行转储文件中的ANALYZE语句(Y)

TOID_NOVALIDATE跳过指定类型id的校验

RECALCULATE_STATISTICS重新计算统计值(N)

TRANSPORT_TABLESPACE导入可传输的表空间元数据(N)

TABLESPACES将要传输到数据库的表空间

DATAFILES将要传输到数据库的数据文件

TTS_OWNERS拥有可传输表空间集中数据的用户关于增量参数的说明:

exp/imp的增量并不是真正意义上的增量,所以最好不要使用。

使用方法:

Expparameter_name=valueorExpparameter_name=(value1,value2&

#8230;

&

只要输入参数help=y就可以看到所有帮助.EXP常用选项

1.FULL,这个用于导出整个数据库,在ROWS=N一起使用时,可以导出整个数据库的结构。

例如:

expuserid=test/testfile=./db_str.dmplog=./db_str.logfull=yrows=ncompress=ydirect=y

2.OWNER和TABLE,这两个选项用于定义EXP的对象。

OWNER定义导出指定用户的对象;

TABLE指定EXP的table名称,例如:

expuserid=test/testfile=./db_str.dmplog=./db_str.logowner=duanl

expuserid=test/testfile=./db_str.dmplog=./db_str.logtable=nc_data,fi_arap

3.BUFFER和FEEDBACK,在导出比较多的数据时,我会考虑设置这两个参数。

expuserid=test/testfile=yw97_2003.dmplog=yw97_2003_3.logfeedback=10000buffer=100000000tables=WO4,OK_YT

4.FILE和LOG,这两个参数分别指定备份的DMP名称和LOG名称,包括文件名和目录,例子见上面。

5.COMPRESS参数不压缩导出数据的内容。

用来控制导出对象的storage语句如何产生。

默认值为Y,使用默认值,对象的存储语句的initextent等于当前导出对象的extent的总和。

推荐使用COMPRESS=N。

6.FILESIZE该选项在8i中可用。

如果导出的dmp文件过大时,最好使用FILESIZE参数,限制文件大小不要超过2G。

如:

expuserid=duanl/duanlfile=f1,f2,f3,f4,f5filesize=2Gowner=scott

这样将创建f1.dmp,f2.dmp等一系列文件,每个大小都为2G,如果导出的总量小于10G

EXP不必创建f5.bmp.IMP常用选项

1、FROMUSER和TOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。

假设我们做exp时导出的为test的对象,现在我们想把对象导入用户:

impuserid=test1/test1file=expdat.dmpfromuser=test1touser=test1

2、IGNORE、GRANTS和INDEXES,其中IGNORE参数将忽略表的存在,继续导入,这个对于需要调整表的存储参数时很有用,我们可以先根据实际情况用合理的存储参数建好表,然后直接导入数据。

而GRANTS和INDEXES则表示是否导入授权和索引,如果想使用新的存储参数重建索引,或者为了加快到入速度,我们可以考虑将INDEXES设为N,而GRANTS一般都是Y。

impuserid=test1/test1file=expdat.dmpfromuser=test1touser=test1indexes=N表空间传输

表空间传输是8i新增加的一种快速在数据库间移动数据的一种办法,是把一个数据库上的格式数据文件附加到另外一个数据库中,而不是把数据导出成Dmp文件,这在有些时候是非常管用的,因为传输表空间移动数据就象复制文件一样快。

关于传输表空间有一些规则,即:

#183;

源数据库和目标数据库必须运行在相同的硬件平台上。

源数据库与目标数据库必须使用相同的字符集。

源数据库与目标数据库一定要有相同大小的数据块

目标数据库不能有与迁移表空间同名的表空间

SYS的对象不能迁移

必须传输自包含的对象集

有一些对象,如物化视图,基于函数的索引等不能被传输

可以用以下的方法来检测一个表空间或一套表空间是否符合传输标准:

execsys.dbms_tts.transport_set_check(&

#8216;

tablespace_name&

#8217;

true);

select*fromsys.transport_set_violation;

如果没有行选择,表示该表空间只包含表数据,并且是自包含的。

对于有些非自包含的表空间,如数据表空间和索引表空间,可以一起传输。

以下为简要使用步骤,如果想参考详细使用方法,也可以参考ORACLE联机帮助。

1.设置表空间为只读(假定表空间名字为APP_Data和APP_Index)

altertablespaceapp_datareadonly;

altertablespaceapp_indexreadonly;

2.发出EXP命令

SQL&

hostexpuserid=&

#8221;

sys/passwordassysdba&

transport_tablespace=ytablespace=(app_data,app_index)

以上需要注意的是

为了在SQL中执行EXP,USERID必须用三个引号,在UNIX中也必须注意避免&

#8220;

/&

的使用

在816和以后,必须使用sysdba才能操作

这个命令在SQL中必须放置在一行(这里是因为显示问题放在了两行)

3.拷贝数据文件到另一个地点,即目标数据库

可以是cp(unix)或copy(windows)或通过ftp传输文件(一定要在bin方式)

4.把本地的表空间设置为读写

5.在目标数据库附加该数据文件

impfile=expdat.dmpuserid=&

transport_tablespace=y&

datafile=(c:

\temp\app_data,c:

\temp\app_index)&

6.设置目标数据库表空间为读写

altertablespaceapp_datareadwrite;

altertablespaceapp_indexreadwrite;

优化EXP/IMP的方法:

当需要exp/imp的数据量比较大时,这个过程需要的时间是比较长的,我们可以用一些方法来优化exp/imp的操作。

exp:

使用直接路径direct=y

oracle会避开sql语句处理引擎,直接从数据库文件中读取数据,然后写入导出文件.

可以在导出日志中观察到:

exp-00067:

tablexxxwillbeexportedinconventionalpath

如果没有使用直接路径,必须保证buffer参数的值足够大.

有一些参数于direct=y不兼容,无法用直接路径导出可移动的tablespace,或者用query参数导出数据库子集.

当导入导出的数据库运行在不同的os下时,必须保证recordlength参数的值一致.imp:

通过以下几个途径优化

1.避免磁盘排序

将sort_area_size设置为一个较大的值,比如100M

2.避免日志切换等待

增加重做日志组的数量,增大日志文件大小.

3.优化日志缓冲区

比如将log_buffer容量扩大10倍(最大不要超过5M)

4.使用阵列插入与提交

commit=y

注意:

阵列方式不能处理包含LOB和LONG类型的表,对于这样的table,如果使用commit=y,每插入一行,就会执行一次提交.

5.使用NOLOGGING方式减小重做日志大小

在导入时指定参数indexes=n,只导入数据而忽略index,在导完数据后在通过脚本创建index,指定NOLOGGING选项导出/导入与字符集

进行数据的导入导出时,我们要注意关于字符集的问题。

在EXP/IMP过程中我们需要注意四个字符集的参数:

导出端的客户端字符集,导出端数据库字符集,导入端的客户端字符集,导入端数据库字符集。

我们首先需要查看这四个字符集参数。

查看数据库的字符集的信息:

select*fromnls_database_parameters;

PARAMETERVALUE

--------------------------------------------------------------------------------------------------------------

NLS_LANGUAGEAMERICAN

NLS_TERRITORYAMERICA

NLS_CURRENCY$

NLS_ISO_CURRENCYAMERICA

NLS_NUMERIC_CHARACTERS.,

NLS_CHARACTERSETZHS16GBK

NLS_CALENDARGREGORIAN

NLS_DATE_FORMATDD-MON-RR

NLS_DATE_LANGUAGEAMERICAN

NLS_SORTBINARY

NLS_TIME_FORMATHH.MI.SSXFFAM

NLS_TIMESTAMP_FORMATDD-MON-RRHH.MI.SSXFFAM

NLS_TIME_TZ_FORMATHH.MI.SSXFF

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1