Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2517717
  • 博文数量: 540
  • 博客积分: 11289
  • 博客等级: 上将
  • 技术积分: 6160
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-11 20:27
个人简介

潜龙勿用,见龙在田

文章分类

全部博文(540)

文章存档

2018年(2)

2013年(5)

2012年(24)

2011年(104)

2010年(60)

2009年(217)

2008年(128)

分类: Oracle

2009-03-30 17:24:09

1 exp/imp作用

   用于在之间传递数据。exp从数据库中导出数据到dump文件中,imp从dump文件中把数据导入到数据库.一般我们用来作数据的和恢复.

   exp导出的是二进制格式的文件,不可以手工编辑,否则会损坏数据。该文件在ORACLE支持的任何平台通用。dump文件在imp时向上兼容.

2. 如何运行

    一般exp/imp命令在$ORACLE_HOME/bin目录下

     我们可以在sqlplus或命令行下执行,有交互式和非交互式.

     注意:要有足够的权限;确保数据库可以连接(可以用tnspng测试)

3. exp

     导出工具.将数据库中数据备份压缩成一个二进制系统文件,可以在不同OS间迁移.

     三种模式:

      A:用户模式:导出用户所有对象以及对象中的数据

      B:表模式:导出用户所有表或指定表

      C:整个数据库:导出数据库中所有数据对象

      exp里加导出的查询条件query=   可以选定导出表的子集

参数:
关键字   说明(默认)  
----------------------------------------------
USERID   用户名/口令
FULL   导出整个文件 (N)
BUFFER   数据缓冲区的大小
OWNER   所有者用户名列表
FILE   输出文件 (EXPDAT.DMP)
TABLES   表名列表
COMPRESS  导入一个范围 (Y)
RECORDLENGTH  IO 记录的长度
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   选定导出表子集的子句

4.imp

    导入工具.将exp形成的二进制文件(dump文件)导入到数据库中.

    跟exp一样,有三种模式.

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

    导入数据时,ORACLE有一个特定的顺序,可能随数据库版本不同而有所变化.一般是

1. Tablespaces 
2. Profiles
3. Users
4. Roles
5. System Privilege Grants
6. Role Grants indexes, constraints, audi ting)
7. Default Roles
8. Tablespace Quotas
9. Resource Costs
10. Rollback Segments
11. Database Links
12. Sequences
13. Snapshots 
14. Snapshot Logs 
 15. Job Queues
 16. Refresh Groups 
 17. Cluster Definitions
18. Tables (also grants,comments,
19. Referential Integrity
20. POSTTABLES actions
21. Synonyms
22. Views   
 23. Stored Procedures
24. Triggers, Defaults and Auditing

    参数:
关键字   说明(默认)  
----------------------------------------------
USERID   用户名/口令
FULL   导入整个文件 (N)
BUFFER   数据缓冲区大小
FROMUSER  所有人用户名列表
FILE   输入文件 (EXPDAT.DMP)
TOUSER   用户名列表
SHOW   只列出文件内容 (N)
TABLES   表名列表
IGNORE   忽略创建错误 (N)
RECORDLENGTH  IO 记录的长度
GRANTS   导入权限 (Y)
INCTYPE   增量导入类型
INDEXES   导入索引 (Y)
COMMIT   提交数组插入 (N)
ROWS   导入数据行 (Y)
PARFILE   参数文件名
LOG   屏幕输出的日志文件
CONSTRAINTS  导入限制 (Y)
DESTROY   覆盖表空间数据文件 (N)
INDEXFILE  将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)
ANALYZE   执行转储文件中的 ANALYZE 语句 (Y)
FEEDBACK  显示每 x 行 (0) 的进度
TOID_NOVALIDATE  跳过指定类型 id 的校验
FILESIZE  各转储文件的最大尺寸
RECALCULATE_STATISTICS 重新计算统计值 (N)

5. 可能出现的问题

    A:imp和exp版本问题

       exp出现ora-00942错误:这是由于装载的表或视图不存在,多半是CATEXP.SQL还没有运行,无法执行Export视图,假如CATEXP.SQL已经运行,则可能是版本错误。

       exp出现exp--00003错误:no storage definition found for segment :一般也是执行$ORACLE_HOME/rdbms/admin/catexp.sql可以解决.低版本的exp导出高版本的数据库时也会出现这种错 误.

       imp可以成功导入低版本exp生成的文件, 不能导入高版本exp生成的文件.

     B:imp和exp使用的字符集不同
      如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里NLS_LANG相关信息,导入完成后再改回来.

     C:数据库对象有主外键约束,不符合主外键约束时, 数据会导入失败.可以先导入主表, 再导入依存表,disable目标导入对象的主外键约束, 导入数据后, 再enable.

     D:数据库对象已经存在
      如果用了参数ignore=y, 会把exp文件内的数据内容导入
      如果表有唯一关键字的约束条件, 不合条件将不被导入
      如果表没有唯一关键字的约束条件, 将引起记录重复

     E:导入到指定用户或表空间时,确定目标用户或表空间已存在,并有足够的空间     

     F:导入用户自定义的一些类型时可能会失败

      G:导入trigger,sequence也可能会出现错误
阅读(1296) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~