导航

15. EXP 和 IMP

Posted on 2009-01-06 15:34  毅无涯  阅读(489)  评论(0编辑  收藏  举报

15.1 EXP 和 IMP 简介

1. 导出(EXPORT)

导出是指利用实用工具EXP 将数据库部份或全部对象的结构及其数据导出并存储到OS文件中的过程。

2. 导入(IMPORT)

导入是指使用实用工具IMP 将OS文件中的对象结构及其数据装载到数据库中的过程。

3. 导出和导入的作用

EXP 和IMP 不仅可以用于实现逻辑备份和逻辑恢复,而且还可以用于实现许多其他功能。

  • 使用导出和导入可以重新组织表。例如,使用EXP 和IMP 可以删除行迁移。
  • 使用导出和导入可以在用户之间移动对象。假如,使用EXP 和IMP 可以将SCOTT 用户的对象移动到SMITH 用户中。
  • 作用导出和导入可以在数据库之间移动对象。例如,使用EXP 和IMP 可以将OLTP 系统的对象移动到DSS 系统中。
  • 使用导出和导入可以升级数据库到其他平台。例如,使用EXP 和IMP 可以将Windows 平台中的数据库对象移动到Solaris 平台中。
  • 使用导出和导入可以升级数据库到更高版本。例如,作用EXP 和IMP 可以将8i 版本的数据库对象升级到9i 数据库中。
  • 使用导出和导入可以实现逻辑备份和恢复。例如,使用EXP 可以导出数据库对象及数据到OS 文件中;而当误删除了数据库对象后,可以使用IMP 将对象及其数据导入到数据库中。

4. 传统导出导入与数据泵导出导入的区别

  • EXP 和IMP 是客户端工具程序,它们既可以在客户端使用,也可以在服务器端使用。
  • EXPDP 和IMPDP 是服务器端的工具程序,它们只能在Oracle 服务器端使用,而不能在Oracle 客户端使用。
  • IMP 只适用于EXP 导出文件,而不适用于EXPDP 导出文件;IMPDP 只适用于EXPDP 导出文件,而不适用于EXP 导出文件。

15.2 使用 EXP

15.2.1 EXP 命令行选项

关键字   说明 (默认值)         关键字      说明 (默认值)
--------------------------------------------------------------------------
USERID   用户名/口令           FULL        导出整个文件 (N)
BUFFER   数据缓冲区大小        OWNER        所有者用户名列表
FILE     输出文件 (EXPDAT.DMP)  TABLES     表名列表
COMPRESS  导入到一个区 (Y)   RECORDLENGTH   IO 记录的长度
GRANTS    导出权限 (Y)          INCTYPE     增量导出类型
INDEXES   导出索引 (Y)         RECORD       跟踪增量导出 (Y)
DIRECT    直接路径 (N)         TRIGGERS     导出触发器 (Y)
LOG      屏幕输出的日志文件    STATISTICS    分析对象 (ESTIMATE)
ROWS      导出数据行 (Y)        PARFILE      参数文件名
CONSISTENT 交叉表的一致性 (N)   CONSTRAINTS  导出的约束条件 (Y)

OBJECT_CONSISTENT    只在对象导出期间设置为只读的事务处理 (N)
FEEDBACK             每 x 行显示进度 (0)
FILESIZE             每个转储文件的最大大小
FLASHBACK_SCN        用于将会话快照设置回以前状态的 SCN
FLASHBACK_TIME       用于获取最接近指定时间的 SCN 的时间
QUERY                用于导出表的子集的 select 子句
RESUMABLE            遇到与空格相关的错误时挂起 (N)
RESUMABLE_NAME       用于标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT    RESUMABLE 的等待时间
TTS_FULL_CHECK       对 TTS 执行完整或部分相关性检查
TABLESPACES          要导出的表空间列表
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TEMPLATE             调用 iAS 模式导出的模板名

15.2.2 调用 EXP

1. 导出表

导出自身方案的表:

C:\>exp scott/tiger file=d:\dump\tab1.dmp tables=emp,dept

Export: Release 10.2.0.1.0 - Production on 星期二 1月 6 13:14:42 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即将导出指定的表通过常规路径...
. . 正在导出表                             EMP导出了          14 行
. . 正在导出表                            DEPT导出了           4 行
成功终止导出, 没有出现警告。

导出非自身方案的表:

C:\>exp system/orcl file=d:\dump\tab2.dmp tables=scott.emp,scott.dept

Export: Release 10.2.0.1.0 - Production on 星期二 1月 6 13:15:04 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即将导出指定的表通过常规路径...
当前的用户已更改为 SCOTT
. . 正在导出表                             EMP导出了          14 行
. . 正在导出表                            DEPT导出了           4 行
成功终止导出, 没有出现警告。

2. 导出方案

导出自身方案:

C:\>exp scott/tiger@orcl file=d:\dump\schema1.dmp

Export: Release 10.2.0.1.0 - Production on 星期二 1月 6 13:17:29 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即将导出指定的用户...
. 正在导出 pre-schema 过程对象和操作
. 正在导出用户 SCOTT 的外部函数库名
…………………………………………………………………………………………
. . 正在导出表                           BONUS导出了           0 行
…………………………………………………………………………………………

. . 正在导出表                           TAB02导出了           2 行
…………………………………………………………………………………………
. 正在导出 post-schema 过程对象和操作
. 正在导出统计信息
成功终止导出, 没有出现警告。

导出非自身方案:

C:\>exp system/orcl@orcl file=d:\dump\schema2.dmp owner=scott

Export: Release 10.2.0.1.0 - Production on 星期二 1月 6 13:18:01 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即将导出指定的用户...
. 正在导出 pre-schema 过程对象和操作
. 正在导出用户 SCOTT 的外部函数库名
…………………………………………………………………………………………
. 即将导出 SCOTT 的表通过常规路径...
. . 正在导出表                           BONUS导出了           0 行
…………………………………………………………………………………………
. . 正在导出表                           TAB02导出了           2 行
. 正在导出同义词
…………………………………………………………………………………………
. 正在导出 post-schema 过程对象和操作
. 正在导出统计信息
成功终止导出, 没有出现警告。

3. 导出数据库

C:\>exp system/orcl@orcl file=d:\dump\full.dmp full=y

Export: Release 10.2.0.1.0 - Production on 星期二 1月 6 13:22:57 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即将导出整个数据库...
. 正在导出表空间定义
. 正在导出概要文件
. 正在导出用户定义
…………………………………………………………………………………………
. 正在导出外部函数库名
. 导出 PUBLIC 类型同义词
. 正在导出专用类型同义词
. 正在导出对象类型定义
. 正在导出系统过程对象和操作

…………………………………………………………………………………………

. 正在导出存储过程
. 正在导出运算符
. 正在导出索引类型
. 正在导出位图, 功能性索引和可扩展索引
…………………………………………………………………………………………
. 正在导出用户历史记录表
. 正在导出默认值和系统审计选项
. 正在导出统计信息
成功终止导出, 没有出现警告。

15.3 使用 IMP

15.3.1 IMP 命令行选项

关键字   说明 (默认值)        关键字      说明 (默认值)
--------------------------------------------------------------------------
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)
FEEDBACK               每 x 行显示进度 (0)
TOID_NOVALIDATE        跳过指定类型 ID 的验证
FILESIZE               每个转储文件的最大大小
STATISTICS             始终导入预计算的统计信息
RESUMABLE              在遇到有关空间的错误时挂起 (N)
RESUMABLE_NAME         用来标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT      RESUMABLE 的等待时间
COMPILE                编译过程, 程序包和函数 (Y)
STREAMS_CONFIGURATION  导入流的一般元数据 (Y)
STREAMS_INSTANTIATION  导入流实例化元数据 (N)

下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
TABLESPACES 将要传输到数据库的表空间
DATAFILES 将要传输到数据库的数据文件
TTS_OWNERS 拥有可传输表空间集中数据的用户

成功终止导入, 没有出现警告。

15.3.2 调用 IMP

1. 导入表

导入到自身方案中:

SQL> host imp scott/tiger@orcl file=d:\dump\tab1.dmp tables=emp,dept

经由常规路径由 EXPORT:V10.02.01 创建的导出文件
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 SCOTT 的对象导入到 SCOTT
. 正在将 SCOTT 的对象导入到 SCOTT
. . 正在导入表                           "EMP"导入了          14 行
. . 正在导入表                          "DEPT"导入了           4 行
即将启用约束条件...
成功终止导入, 没有出现警告。

导入到非自身方案中:

SQL> host imp system/orcl@orcl file=d:\dump\tab1.dmp tables=emp,dept fromuser=sc
ott touser=system

警告: 这些对象由 SCOTT 导出, 而不是当前用户

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 SCOTT 的对象导入到 SYSTEM
. . 正在导入表                           "EMP"导入了          14 行
. . 正在导入表                          "DEPT"导入了           4 行
即将启用约束条件...
成功终止导入, 没有出现警告。

2. 导入方案

导入到自身方案:

C:\>imp scott/tiger@orcl file=d:\dump\schema1.dmp fromuser=scott touser=scott

经由常规路径由 EXPORT:V10.02.01 创建的导出文件
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. . 正在导入表                         "BONUS"导入了           0 行
. . 正在导入表                          "DEPT"导入了           4 行
…………………………………………………………………………………………
. . 正在导入表                         "TAB02"导入了           2 行
即将启用约束条件...
成功终止导入, 但出现警告。

导入到非自身方案:

C:\>imp system/orcl@orcl file=d:\dump\schema1.dmp fromuser=scott touser=system

警告: 这些对象由 SCOTT 导出, 而不是当前用户

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. . 正在导入表                          "DEPT"导入了           4 行
…………………………………………………………………………………………
. . 正在导入表                         "TAB02"导入了           2 行
即将启用约束条件...
成功终止导入, 但出现警告。

3. 导入数据库

imp system/orcl@orcl file=d:\dump\full.dmp full=y

经由常规路径由 EXPORT:V10.02.01 创建的导出文件
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 SYSTEM 的对象导入到 SYSTEM
…………………………………………………………………………………………
. 正在将 SYSMAN 的对象导入到 SYSMAN
成功终止导入, 但出现警告。

15.4 使用EXP 和IMP 搬移表空间

(1) 确定自包含表空间集合。

(2) 生成要搬移的表空间集合。

(3) 传送转储文件和数据文件到目标数据库。

(4) 插入表空间到目标数据库。

C:\>sqlplus system/orcl

SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 1月 6 15:23:40 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> execute sys.dbms_tts.transport_set_check('TBS02',true)

PL/SQL 过程已成功完成。

SQL> select * from sys.transport_set_violations;

未选定行

SQL> alter tablespace tbs02 read only;

表空间已更改。

SQL> host exp 'sys/orcl@orcl as sysdba' transport_tablespace=y tablespaces=tbs02
file=d:\dump\tbs02.dmp

Export: Release 10.2.0.1.0 - Production on 星期二 1月 6 15:27:09 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
注: 将不导出表数据 (行)
即将导出可传输的表空间元数据...
对于表空间 TBS02...
. 正在导出簇定义
. 正在导出表定义
. . 正在导出表                           TAB02
. . 正在导出表                           TAB02
. 正在导出引用完整性约束条件
. 正在导出触发器
. 结束导出可传输的表空间元数据
成功终止导出, 没有出现警告。

SQL> host copy d:\orcl\tbs02.dbf d:\demo\tbs02.dbf
已复制         1 个文件。

SQL> host imp 'sys/demo@demo as sysdba' transport_tablespace=y file=d:\dump\tbs0
2.dmp datafiles=d:\demo\tbs02.dbf

Import: Release 10.2.0.1.0 - Production on 星期二 1月 6 15:29:34 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

经由常规路径由 EXPORT:V10.02.01 创建的导出文件
即将导入可传输的表空间元数据...
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 SYS 的对象导入到 SYS
. 正在将 SYS 的对象导入到 SYS
. 正在将 SYSTEM 的对象导入到 SYSTEM
. . 正在导入表                         "TAB02"
. 正在将 SCOTT 的对象导入到 SCOTT
. . 正在导入表                         "TAB02"
. 正在将 SYS 的对象导入到 SYS
成功终止导入, 没有出现警告。

SQL> alter tablespace tbs02 read write;

表空间已更改。