电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

exp和imp用法和介绍


发布日期:2019/10/16
 

Export/Import的用处

Oracle Export/Import工具用于在数据库之间传递数据

Export从数据库中导出数据到dump文件中

Import从dump文件中到入数据导数据库中

下面是一般使用他们的情况

两个数据库之间传送数据

同一个版本的oracle Server之间

不同版本的oracle Server之间

同种OS之间

不同种OS之间

用于数据库的备份和恢复

从一个SCHEMA传送到另一个SCHEMA

从一个TABLESPACE传送到另一个TABLESPACE

DUMP文件

EXPORT到出的是二进制格式的文件不可以手工编辑否则会损坏数据

该文件在ORACLE支持的任何平台上都是一样的格式可以在各平台上通用

DUMP文件在IMPORT时采用向上兼容方式就是说ORALCE的DUMP文件可以导入

到ORACLE但是版本相差很大的版本之间可能有问题

EXPORT/IMPORT过程

EXPORT导出的DUMP文件包含两种基本类型的数据

DDL (Data Dictionary Language)

Data

DUMP文件包含所有重新创建Data Dictionary的DDL语句基本上是可以读的格式

但是应该注意的是千万不要用文本编辑器编辑之oracle说不支持这样做的

下面列出的是DUMP文件中包括的ORACLE对象分为TABLE/USER/FULL方式有些对象

只是在FULL方式下才有(比如public synonyms users roles rollback segments等)

Table modeUser Mode Full Database Mode

Table definitions Table definitions Table definitions

Table dataTable dataTable data

Owners table grantsOwners grantsGrants

Owners table indexes Owners indexes Indexes

Table constraints Table constraints Table constraints

Table triggersTable triggersAll triggers

ClustersClusters

Database linksDatabase links

Job queuesJob queues

Refresh groupsRefresh groups

Sequences Sequences

Snapshots Snapshots

Snapshot logs Snapshot logs

Stored procedures Stored procedures

Private synonymsAll synonyms

Views Views

Profiles

Replication catalog

Resource cost

Roles

Rollback segments

System audit options

System privileges

Tablespace definitions

Tablespace quotas

User definitions

IMPORT时的对象倒入顺序

在倒入数据时ORACLE有一个特定的顺序可能随数据库版本不同而有所变化

但是

现在是这样的

Tablespaces Snapshot Logs

Profiles Job Queues

Users Refresh Groups

Roles Cluster Definitions

System Privilege Grants Tables (also grantscommen

ts

Role Grants indexes constraints audi

ting)

Default Roles Referential Integrity

Tablespace Quotas POSTTABLES actions

Resource Costs Synonyms

Rollback Segments Views

Database Links Stored Procedures

Sequences Triggers Defaults and Aud

iting

Snapshots

按这个顺序主要是解决对象之间依赖关系可能产生的问题TRIGGER最后导入所以在INSERT数据到数据库时不会激发TRIGGER在导入后可能会有一些状态是INVALID的PROCEDURE主要是IMPORT时会影响一些数据库对象而IMPORT并不重新编译PROCEDURE从而造成这种情况可以重新编译之就能解决这个问题

兼容性问题

IMPORT工具可以处理EXPORT 之后的版本导出的DUMP文件所以你用ORACLE的IMPORT处理ORACLE的DUMP文件依次类推但是ORACLE如果版本相差很大有可能不能处理具体的问题可以参照相应的文档比如有关参数设置等(COMPATIBLE参数)

EXPORT需要的VIEW

EXPORT需要的VIEW是由CATEXPSQL创建这些内部VIEW用于EXPORT组织DUMP文件中数据格式

大部分VIEW用于收集创建DDL语句的其他的主要供ORACLE开发人员用

这些VIEW在不同ORACLE版本之间有可能不同每个版本可能都有新的特性加入

所以在新的版本里面执行旧的dump文件会有错误一般可以执行CATEXPSQL解决这些问题解决向后兼容问题的一般步骤如下

导出数据库的版本比目标数据库老的情况

在需要导入的目标数据库中执行旧的CATEXPSQL

使用旧的EXPORT导出DUMP文件

使用旧的IMPORT导入到数据库中

在数据库中执行新的CATEXPSQL以恢复该版本的EXPORT VIEW

导出数据库的版本比目标数据库新的情况

在需要导入的目标数据库中执行新的CATEXPSQL

使用新的EXPORT导出DUMP文件

使用新的IMPORT导入到数据库中

在数据库中执行旧的CATEXPSQL以恢复该版本的EXPORT VIEW

碎片整理

EXPORT/IMPORT一个很重要的应用方面就是整理碎片因为如果时初次IMPPORT

就会重新CREATE TABLE 再导入数据所以整张表都是连续存放的另外缺省情况

下EXPORT会在生成DUMP文件是压缩(COMPRESS)TABLE但是这种压缩在很多情

况下被误解事实上COMPRESS是改变STORAGE参数INITIAL的值比如

CREATE TABLE STORAGE( INITIAL K NEXT K)

现在数据已经扩展到个EXTENT如果采用COMPRESS=Y来EXPORT数据则产生的语句时 STORAGE( INITIAL K NEXT K)

我们可以看到NEXT值并没有改变而INITIAL是所有EXTENT的总和所以会出现如下情况表A有M的EXTENT执行DELETE FROM A然后再用COMPRESS=Y 导出数据产生的CREATE TABLE语句将有M的INITIAL EXTENT即使这是TABLE中已经没有数据!!这是的DUMP文件即使很小但是在IMPORT时就会产生一个巨大的TABLE

另外也可能会超过DATAFILE的大小比如M的数据文件其中表A有M的EXTENT如果采用COMPRESS=Y的方式导出数据将会有INITIAL=M那么在重新导入时不能分配一个M的EXTENT因为单个EXTENT不能跨多个文件

在USER和TABLESPACE之间传送数据

一般情况下EXPORT的数据要恢复到它原来的地方去如果SCOTT用户的表以TABLE

或USER方式EXPORT数据在IMPORT时如果SCOTT用户不存在则会报错!

以FULL方式导出的数据带有CREATE USER的信息所以会自己创建USER来存放数据

当然可以在IMPORT时使用FROMUSER和TOUSER参数来确定要导入的USER但是要保证TOUSER一定已经存在啦

EXPORT/IMPORT对SQUENCE的影响在两种情况下EXPORT/IMPORT会对SEQUENCE

)如果在EXPORT时用户正在取SEQUENCE的值可能造成SEQUENCE的不一致

)另外如果SEQUENCE使用CACHE在EXPORT时那些在CACHE中的值就会被忽略的只是从数据字典里面取当前值EXPORT

如果在进行FULL方式的EXPORT/IMPORT时恰好在用sequence更新表中某列数据而且不是上面两种情况则导出的是更新前的数据

如果采用常规路径方式每一行数据都是用INSERT语句一致性检查和INSERT TRIGGER如果采用DIRECT方式某些约束和trigger可能不触发如果在trigger中使用sequencenextval将会对sequence有影响

参数解

E:\>exp help=y

通过输入 EXP 命令和用户名/口令您可以

在用户 / 口令之后的命令:

实例: EXP SCOTT/TIGER

或者您也可以通过输入跟有各种参数的 EXP 命令来控制导出的运行方式

要指定参数您可以使用关键字:

格式: EXP KEYWORD=value 或 KEYWORD=(valuevaluevalueN)

实例: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMPDEPTMGR)

或 TABLES=(T: PT: P)如果 T 是分区表

USERID 必须是命令行中的第一个参数

关键字 说明(默认)

USERID 用户名/口令

FULL 导出整个文件 (N)

BUFFER 数据缓沖区的大小

OWNER 所有者用户名列表

FILE 输出文件 (EXPDATDMP)

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 行 () 的进度

FILESIZE 各转储文件的最大尺寸

QUERY 选定导出表子集的子句

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

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

TABLESPACES 将传输的表空间列表

E:\>imp help=y

可以通过输入 IMP 命令和您的用户名/口令

跟有您的用户名 / 口令的命令:

实例: IMP SCOTT/TIGER

或者 可以通过输入 IMP 命令和各种自变量来控制导入按照不同参数

要指定参数您可以使用关键字:

格式: IMP KEYWORD=value 或 KEYWORD=(valuevaluevlaueN)

实例: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMPDEPT) FULL=N

或 TABLES=(T: PT: P)如果 T 是分区表

USERID 必须是命令行中的第一个参数

关键字 说明(默认)

USERID 用户名/口令

FULL 导入整个文件 (N)

BUFFER 数据缓沖区大小

FROMUSER 所有人用户名列表

FILE 输入文件 (EXPDATDMP)

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 行 () 的进度

TOID_NOVALIDATE 跳过指定类型 id 的校验

FILESIZE 各转储文件的最大尺寸

RECALCULATE_STATISTICS 重新计算统计值 (N)

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

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

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

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

TTS_OWNERS 拥有可传输表空间集中数据的用户

上一篇:ibatis动态多条件组合查询以及模糊查询

下一篇:ntoskrnl.exe文件丢失或损坏的问题解决