网站首页 产品中心 解决方案 产品购买 商务合作 服务支持 关于我们

技术知识

Knowledge

ORACLE数据库导出或导入数据(IMP/EXP)

发布时间:2022.08.03
分享到:

1、什么是ORACLE数据库导入/导出?

Oracle Database 10g 以后使用了最新的数据转储(Data Dump,又称:数据泵)技术,使DBA或开发人员可以将数据库元数据(对象定义)和指定数据快速迁移转换到另一个Oracle数据库中。在实际应用中,一般使用场景是:数据库备份、数据库迁移。

数据泵/数据转储含义:
  数据转储是在两个系统之间传输大量数据,通常通过网络连接。例如,可以将数据库转储到另一台网络服务器,在那里它可以被其他软件应用程序使用或由人进行分析。某些网站从外部系统接收数据转储,并将该数据发布到,供访问者查看或使用。


其主要作用如下:
1)对数据库的逻辑备份和逻辑恢复;
2)在两个数据库用户之间移动对象;
3)在个数据库之间移动对象;
4)实现表空间的搬移。
 
在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXP和IMP工具,还提供了数据泵导出导入工具EXPDP和IMPDP。使用EXPDP和IMPDP时应注意并了解:
1)EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务器端使用。
2)EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。
3)IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。



2、ORACLE数据库导出与数据库备份的关系


   

1)从物理与逻辑的角度来分类:
从物理与逻辑的,备份可以分为物理备份和逻辑备份。
物理备份:对数据库操作系统的物理文件(数据文件,控制文件和日志文件)的备份。物理备份又可以分为脱机备份(冷备份)和联机备份(热备份),前者是在关闭数据库的时候进行的,后者是以归档日志的方式对运行的数据库进行备份。可以使用oracle的恢复管理器(RMAN)或操作系统命令进行数据库的物理备份。
逻辑备份:对数据库逻辑组件(如表和存储过程等数据库对象)的备份。逻辑备份的手段很多,如传统的EXP,数据泵(EXPDP),数据库闪回技术等第三方工具,都可以进行数据库的逻辑备份。
 
2)从数据库的备份角度分类:
从数据库的备份角度,备份可以分为完全备份和增量备份和差异备份
完全备份:每次对数据库进行完整备份,当发生数据丢失的灾难时,完全备份无需依赖其他信息即可实现100%的数据恢复,其恢复时间最短且操作最方便。
增量备份:只有那些在上次完全备份或增量备份后被修改的文件才会被备份。优点是备份数据量小,需要的时间短,缺点是恢复的时候需要依赖以前备份记录,出问题的风险较大。
差异备份:备份那些自从上次完全备份之后被修改过的文件。从差异备份中恢复数据的时间较短,因此只需要两份数据---最后一次完整备份和最后一次差异备份,缺点是每次备份需要的时间较长。  

 


3、ORACLE数据库导入与数据库恢复的关系

1) 实例恢复:当oracle实例出现失败后,oracle自动进行的恢复
2)介质恢复:当存放数据库的介质出现故障时所作的恢复。介质恢复又分为完全恢复和不完全恢复
3)完全恢复:将数据库恢复到数据库失败时的状态。这种恢复是通过装载数据库备份并应用全部的重做日志做到的。
4)不完全恢复:将数据库恢复到数据库失败前的某一时刻的状态。这种恢复是通过装载数据库备份并应用部分的重做日志做到的。进行不完全恢复后,必须在启动数据库时用resetlogs选项重设联机重做日志。


4、ORACLE数据库[EXP导出]操作过程

1)采用步骤操作办法,依据提示,一步一步导出,建议新手使用。

指令:exp username/password

2)导出指定的表。

指令:exp username/password@orcl file=inethinkbackup.dump tables=tablename buffer=4096 l

3)导出指定用户下的数据。

指令:exp username/password@orcl file=d:\inethinkbackup.dmp owner=(student) buffer=4096 log=d:\log.log

4)导出表空间。

指令:exp username/password@orcl file=d:\inethinkbackup.dmp tablespaces=(student) buffer=4096 log=d:\log.log

5)导出全部数据。

指令:exp username/password@orcl file=d:\inethinkbackup.dmp full=y buffer=4096 log=d:\log.log

>> EXP导出指令中文说明与释义

USERID----用户名/口令
FULL----导出整个文件
BUFFER----数据缓冲区大小
OWNER----所有者用户名列表
FILE----输出文件
TABLES----表名列表     COMPRESS----导入到一个区
RECORDLENGTHIO----记录的长度
GRANTS----导出权限
INCTYPE----增量导出类型
INDEXES----导出索引
RECORD----跟踪增量导出
DIRECT----直接路径
TRIGGERS----导出触发器
LOG----屏幕输出的日志文件
STATISTICS----分析对象
ROWS----导出数据行
PARFILE----参数文件名
CONSISTENT----交叉表的一致性
CONSTRAINTS----导出的约束条件
OBJECT_CONSISTENT----只在对象导出期间设置为只读的事务处理
FEEDBACK----每 x 行显示进度
FILESIZE----每个转储文件的最大大小
FLASHBACK_SCN----用于将会话快照设置回以前状态的 SCN
FLASHBACK_TIME----用于获取最接近指定时间的 SCN 的时间
QUERY----用于导出表的子集的 select 子句
RESUMABLE----遇到与空格相关的错误时挂起
RESUMABLE_NAME----用于标识可恢复语句的文本字符串
RESUMABLE_TIMEOUTRESUMABLE----等待时间
TTS_FULL_CHECK对 TTS----执行完整或部分相关性检查
TABLESPACES----要导出的表空间列表
TRANSPORT_TABLESPACE----导出可传输的表空间元数据
TEMPLATE----调用 iAS 模式导出的模板名


5、ORACLE数据库[导入]操作过程

1)导入一个完成的数据库

指令:imp username/password@orcl file=d:\inethinkbackup.dmp full=y ignore=y log=d:\log.log

>> IMP导入指令中文说明与释义

USERID----用户名/口令
FULL----导入整个文件
BUFFER----数据缓冲区大小
FROMUSER----所有者用户名列表
FILE----输入文件
TOUSER----用户名列表
SHOW----只列出文件内容
TABLES----表名列表
IGNORE----忽略创建错误
RECORDLENGTHIO----记录的长度
GRANTS----导入权限
INCTYPE----增量导入类型
INDEXES----导入索引
COMMIT----提交数组插入
ROWS----导入数据行
PARFILE----参数文件名
LOG----屏幕输出的日志文件     CONSTRAINTS----导入限制
DESTROY----覆盖表空间数据文件
INDEXFILE----将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES----跳过不可用索引的维护
FEEDBACK----每 x 行显示进度
TOID_NOVALIDATE----跳过指定类型 ID 的验证
FILESIZE----每个转储文件的最大大小
STATISTICS----始终导入预计算的统计信息     RESUMABLE----在遇到有关空间的错误时挂起
RESUMABLE_NAME----用来标识可恢复语句的文本字符串
RESUMABLE_TIMEOUTRESUMABLE----等待时间
COMPILE----编译过程, 程序包和函数
STREAMS_CONFIGURATION----导入流的一般元数据
STREAMS_INSTANTIATION----导入流实例化元数据
DATA_ONLY----仅导入数据
TRANSPORT_TABLESPACE----导入可传输的表空间元数据
TABLESPACES----将要传输到数据库的表空间
DATAFILES----将要传输到数据库的数据文件
TTS_OWNERS----拥有可传输表空间集中数据的用户


6、常见问题

1)在导出数据时,遇到:IMP-00003 错误,提示:创建触发器权限不足错误,此时需要登录sysdba,进行授权操作。指令:grant create trigger to scott;
2)在导出数据时,遇到:IMP-00038 错误,提示:无法转换为环境字符集句柄,造成这种错误的原因一般是数据库版本不匹配。如果版本一致,可以分别尝试用“imp、impdp”导入。
3)在导出/导入操作过程中,会出现一些奇怪的问题,建议:路径、文件名均使用英文,而不要使用中文,会避免很多问题的发生,在Linux上尤其重要!

电话

027 85382713

邮箱

support@inethink.com

TOP