科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道oracle Export and Import 简介

oracle Export and Import 简介

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  1、Export/Import的用处    Oracle Export/Import工具用于在数据库之间传递数据。

作者:中国IT实验室 来源:中国IT实验室 2007年10月4日

关键字: 数据库 ORACLE

  • 评论
  • 分享微博
  • 分享邮件

  1、Export/Import的用处 
  Oracle Export/Import工具用于在数据库之间传递数据。 
  Export从数据库中导出数据到dump文件中Import从dump文件中到入数据导数据库中 
  下面是一般使用他们的情况 
  (1)、两个数据库之间传送数据 
    同一个版本的oracle Server之间 
    不同版本的oracle Server之间 
    同种OS之间 
    不同种OS之间 
  (2)、用于数据库的备份和恢复 
  (3)、从一个SCHEMA传送到另一个SCHEMA 
  (4)、从一个TABLESPACE传送到另一个TABLESPACE 
  
  2、DUMP文件 
  EXPORT到出的是二进制格式的文件,不可以手工编辑,否则会损坏数据。 
  该文件在ORACLE支持的任何平台上都是一样的格式,可以在各平台上通用。 
  
  DUMP文件在IMPORT时采用向上兼容方式,就是说ORALCE7的DUMP文件可以导入到ORACLE8中,但是版本相差很大的版本之间可能有问题。 
  
  3、EXPORT/IMPORT过程 
  EXPORT导出的DUMP文件包含两种基本类型的数据 
  - DDL 
  - Data 
  DUMP文件包含所有重新创建Data Dictionary的DDL语句,基本上是可以读的格式。 
  但是应该注意的是,千万不要用文本编辑器编辑之,oracle说不支持这样做的。
  
  下面列出的是DUMP文件中包括的ORACLE对象,分为TABLE/USER/FULL方式,有些对
  象只是在FULL方式下才有(比如public synonyms, users, roles, rollback segm
  ents等) 
  
   
  
  4、IMPORT时的对象倒入顺序在倒入数据时,ORACLE有一个特定的顺序,可能随数据库版本不同而有所变化, 但是现在是这样的。 
  
  
  
  按这个顺序主要是解决对象之间依赖关系可能产生的问题。TRIGGER最后导入,所以在INSERT数据到数据库时不会激发TRIGGER。在导入后可能会有一些状态是INVALID的PROC
  EDURE,主要是IMPORT时会影响一些数据库对象,而IMPORT并不重新编译PROCEDURE,从而造成这种情况,
  可以重新编译之,就能解决这个问题。 
  
  5、兼容性问题 
  IMPORT工具可以处理EXPORT 5.1.22之后的版本导出的DUMP文件,所以你用ORACLE7的IMPORT 
  处理ORACLE6的DUMP文件,依次类推,但是ORACLE如果版本相差很大有可能不能处理。具体的问题可以参照相应的文档,比如有关参数设置等(COMPATIBLE参数) 
  
  6、EXPORT需要的VIEW EXPORT需要的VIEW是由CATEXP.SQL创建,这些内部VIEW用于EXPORT组织DUMP文件
  中数据格式。 
  大部分VIEW用于收集创建DDL语句的,其他的主要供ORACLE开发人员用。 
  
  这些VIEW在不同ORACLE版本之间有可能不同,每个版本可能都有新的特性加入。
  所以在新的版本里面执行旧的dump文件会有错误,一般可以执行CATEXP.SQL解决这些问题,
  解决向后兼容问题的一般步骤如下:
   导出数据库的版本比目标数据库老的情况: 
   - 在需要导入的目标数据库中执行旧的CATEXP.SQL 
   - 使用旧的EXPORT导出DUMP文件 
   - 使用旧的IMPORT导入到数据库中 
   - 在数据库中执行新的CATEXP.SQL,以恢复该版本的EXPORT VIEW 
  
   导出数据库的版本比目标数据库新的情况: 
   - 在需要导入的目标数据库中执行新的CATEXP.SQL 
   - 使用新的EXPORT导出DUMP文件 
   - 使用新的IMPORT导入到数据库中 
   - 在数据库中执行旧的CATEXP.SQL,以恢复该版本的EXPORT VIEW 
  
  7、碎片整理 
  EXPORT/IMPORT一个很重要的应用方面就是整理碎片。因为如果时初次IMPPORT,
  
  就会重新CREATE TABLE 再导入数据,所以整张表都是连续存放的。另外缺省情况下EXPORT会在生成DUMP文件是“压缩(COMPRESS)”TABLE,但是这种压缩在很多情况下被误解。事实上,COMPRESS是改变STORAGE参数INITIAL的值。比如: 
  
   CREATE TABLE .... STORAGE( INITIAL 10K NEXT 10K..) 
   现在数据已经扩展到100个EXTENT,如果采用COMPRESS=Y来EXPORT数据, 
   则产生的语句时 STORAGE( INITIAL 1000K NEXT 10K) 
  
   我们可以看到NEXT值并没有改变,而INITIAL是所有EXTENT的总和。所以会出现如下情况,表A有4个100M的EXTENT,执行DELETE FROM A,然后再用COMPRESS=Y 导出数据,产生的CREATE TABLE语句将有400M的INITIAL EXTENT。即使这是TABLE中
  已经没有数据!!这是的DUMP文件即使很小,但是在IMPORT时就会产生一个巨大的TABLE. 
  
   另外,也可能会超过DATAFILE的大小。比如,有4个50M的数据文件,其中表A有15个10M的EXTENT,如果采用COMPRESS=Y的方式导出数据,将会有INITIAL=150M,那么在重新导入时,不能分配一个150M的EXTENT,因为单个EXTENT不能跨多个文件。 
  
  
  8、在USER和TABLESPACE之间传送数据一般情况下EXPORT的数据要恢复到它原来的地方去。如果SCOTT用户的表以TABLE或USER方式EXPORT数据,在IMPORT时,如果SCOTT用户不存在,则会报错! 
  
  以FULL方式导出的数据带有CREATE USER的信息,所以会自己创建USER来存放数据。 
  
  当然可以在IMPORT时使用FROMUSER和TOUSER参数来确定要导入的USER,但是要保证TOUSER一定已经存在啦。 
  
  9、EXPORT/IMPORT对SQUENCE的影响在两种情况下,EXPORT/IMPORT会对SEQUENCE。 
  (1)如果在EXPORT时,用户正在取SEQUENCE的值,可能造成SEQUENCE的不一致。
  
  (2)另外如果SEQUENCE使用CACHE,在EXPORT时,那些在CACHE中的值就会被忽略的, 
   只是从数据字典里面取当前值EXPORT。 
  
  如果在进行FULL方式的EXPORT/IMPORT时,恰好在用sequence更新表中某列数据,
  
  而且不是上面两种情况,则导出的是更新前的数据。 
  
  如果采用常规路径方式,每一行数据都是用INSERT语句,一致性检查和INSERT TRIGGER 
  如果采用DIRECT方式,某些约束和trigger可能不触发,如果在trigger中使用sequence.nextval,将会对sequence有影响。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件