问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何利用orcale导入工具,将已有的DMP文件还原到orcale数据库中,希望能给予详细的回答,最好是有图有文

发布网友 发布时间:2022-04-07 23:44

我来回答

2个回答

热心网友 时间:2022-04-08 01:13

Oracle Export/Import工具使用介绍
Oracle Export/Import工具使用介绍

Oracle Exp/Imp工具是一个操作简单、方便灵活的备份恢复和数据迁移工具,它可以实施全库级、用户级、表级的数据备份和恢复。对于数据量在G级或G级以内,强调高可用性,可以容忍少量数据丢失的数据库系统,Exp/Imp是普遍使用的逻辑备份方式。

Ø Export从数据库中导出数据到mp文件中

Ø Import从mp文件中到入数据导数据库中

1. 使用到Exp/Imp工具的的场景:

1) 两个数据库之间传送数据

a 同一个版本的oracle Server之间

a 不同版本的oracle Server之间

a 同种OS之间

a 不同种OS之间

2) 用于数据库的备份和恢复

3) 从一个SCHEMA传送到另一个SCHEMA

4) 从一个TABLESPACE传送到另一个TABLESPACE

2. DUMP文件介绍

EXPORT到出的是二进制格式的文件,不可以手工编辑,否则会损坏数据。该文件在ORACLE支持的任何平台上都是一样的格式,可以在各平台上通用。

DUMP文件在IMPORT时采用向上兼容方式,就是说ORALCE8的DUMP文件可以导入到ORACLE9中,但是版本相差很大的版本之间可能有问题。

3. Oracle9i EXP功能描述

Oracle9i EXP在原有的基础上新增了部分新的参数,按功能主要分为以下几个部分:

1) OBJECT_CONSISTENT - 用于设置EXP对象为只读以保持对象的一致性。默认是N。

2) FLASHBACK_SCN和FLASHBACK_TIME - 用于支持FLASHBACK功能而新增。

3) RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT - 用于支持RESUMABLE空间分配而新增。

4) TTS_FULL_CHECK - 用于在传输表空间时使用依赖性检查。

5) TEMPLATE - 用于支持iAS。

6) TABLESPACES - 设置表空间导出模式。个人觉得对于一般用户而言,这个才是新增参数中最实用的一个,可以让用户在原来的FULL、OWNER、TABLES的基础上多了一种选择,使得EXP更加灵活。

4. EXPORT/IMPORT过程 (DUMP文件包含的数据对象)

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 mode User Mode Full Database Mode

---------------------- ---------------------- ----------------------

Table definitions Table definitions Table definitions

Table data Table data Table data

Owner's table grants Owner's grants Grants

Owner's table indexes Owner's indexes Indexes

Table constraints Table constraints Table constraints

Table triggers Table triggers All triggers

Clusters Clusters

Database links Database links

Job queues Job queues

Refresh groups Refresh groups

Sequences Sequences

Snapshots Snapshots

Snapshot logs Snapshot logs

Stored proceres Stored proceres

Private synonyms All synonyms

Views Views

Profiles

Replication catalog

Resource cost

Roles

Rollback segments

System audit options

System privileges

Tablespace definitions

Tablespace quotas

User definitions

5. IMPORT时的对象倒入顺序

1.Tablespaces

2.Profiles

3.Users

4.Roles

5.SystemPrivilegeGrants

6.RoleGrants

7.DefaultRoles

8.TablespaceQuotas

9.ResourceCosts

10.RollbackSegments

11.DatabaseLinks

12.Sequences

13.Snapshots

14.SnapshotLogs

15.JobQueues

16.RefreshGroups

17.ClusterDefinitions

18.Tables(alsogrants,comments,indexes,constraints,auditing)

19.ReferentialIntegrity

20.POSTTABLESactions

21.Synonyms

22.Views

23.StoredProceres

24.Triggers,DefaultsandAuditing

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

6. 兼容性问题

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

² EXPORT需要的VIEW

EXPORT需要的VIEW是由CATEXP.SQL创建,这些内部VIEW用于EXPORT组织DUMP文件中数据格式。大部分VIEW用于收集创建DDL语句的,其他的主要供ORACLE开发人员用。这些VIEW在不同ORACLE版本之间有可能不同,每个版本可能都有新的特性加入。所以在新的版本里面执行旧的mp文件会有错误,一般可以执行CATEXP.SQL解决这些问题,

² 解决向后兼容问题的一般步骤如下:

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

Ø 在需要导入的目标数据库中执行旧的CATEXP.SQL

Ø 使用旧的EXPORT导出DUMP文件

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

Ø 在数据库中执行新的CATEXP.SQL,以恢复该版本的EXPORT VIEW

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

Ø 在需要导入的目标数据库中执行新的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一定已经存在啦。

在imp添加参数TABLESPACES 可以改变导入数据的表空间;

这有2种情况:一种是在数据导入前建好表,把表建到其他表空间上,再导入数据;另一种情况是收回导入用户的unlimited tablespace的权限会导入用户的默认表空间;

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有影响。

10. EXP常用选项

1) FULL,这个用于导出整个数据库,在ROWS=N一起使用时,可以导出整个数据库的结构。例如:

exp sys file=test.dmp log=test.log full=y rows=n compress=y direct=y

2) BUFFER和FEEDBACK,在导出比较多的数据时,考虑设置这两个参数。例如:

exp new file=test.dmp log=test.log feedback=10000 buffer=100000000 tables=test1,test2

3) FILL和LOG,这两个参数分别指定备份的DMP名称和LOG名称,包括文件名和目录;需要说明的是,EXP可以直接备份到磁带中,即使用FILE=/dev/rmt0(磁带设备名),但是一般我们都不这么做,原因有二:一、这样做的速度会慢很多,二、现在一般都是使用磁带库的,不建议直接对磁带进行操作。至于没有使用磁带库的朋友可以考虑和UNIX的TAR结合使用。如果你真想使用EXP直接到磁带,你可以参考Metalink文章“EXPORTING TO TAPE ON UNIX SYSTEMS”(文档号:30428.1),该文中有详细解释。

4) COMPRESS参数将在导出的同时合并碎块,尽量把数据压缩到initial的EXTENT里,默认是N,一般建议使用。DIRECT参数将告诉EXP直接读取数据,而不像传统的EXP那样,使用SELECT来读取表中的数据,这样就减少了SQL语句处理过程。一般也建议使用。不过有些情况下DIRECT参数是无法使用的。

5) 如何使用SYSDBA执行EXP/IMP

这是一个很现实的问题,有时候我们需要使用SYSDBA来执行EXP/IMP,如进行传输表空间的EXP/IMP,以及在9i下用SYS用户来执行EXP/IMP时,都需要使用SYSDBA才可。我们可以使用下面方式连入EXP/IMP:

exp "'sys/sys as sysdba'" file=1.dmp tables=trst rows=n

6) QUERY参数后面跟的是where条件,值得注意的是,整个where子句需要使用""括起来,where子句的写法和SELECT中相同;

Ø 如果是UNIX平台所有"和'都需要使用\u26469屏蔽它们的特殊含义:

exp test/test file=1.dmp log=1.log tables=testtable query="where c1=20 and c2=test"

注意:>,<,单引号等特殊字符需要转译

exp test/test file=1.dmp log=1.log tables=testtable query="where c1\>20 and c2=to_date\(\'20090506\',\'yyyymmdd\'\)"

Ø 如果是windows平台,则使用下面的格式:

exp c/c@ncn file=c.dmp log=c.log tables=t query="""where id=1 and name='gototop'"""(使用unix下格式也是可以的,具体情况测试一下即可)

exp导出时,加where条件:

exp scott/tiger TABLES=(emp,bonus) QUERY="WHERE job='SALESMAN' and sal<1600"

*:

1.The parameter QUERY cannot be specified for full, user, or tablespace mode exports.

参数query不能使用在完全导出,用户导出和表空间导出方式

2.The parameter QUERY must be applicable to all specified tables.

参数query指定的内容必须对所有指定的表都有效

3.The parameter QUERY cannot be specified in a direct path export (DIRECT=y)

参数query不能与direct路径导出同时使用

4.The parameter QUERY cannot be specified for tables with inner nested tables.

参数query不能导出内嵌表

5.You cannot determine from the contents of the export file whether the data is the result of a QUERY export.

用query参数导出的数据与同其他方式导出的数据是一样的,无法根据导出文件进行分辨

11. IMP常用选项

1) FROMUSER和TOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中;

2) IGNORE、GRANTS和INDEXES,其中IGNORE参数将忽略表的存在,继续导入,这个对于需要调整表的存储参数时很有用,我们可以先根据实际情况用合理的存储参数建好表,然后直接导入数据。而GRANTS和INDEXES则表示是否导入授权和索引,如果想使用新的存储参数重建索引,或者为了加快到入速度,我们可以考虑将INDEXES设为N,而GRANTS一般都是Y。

3) 另外一个EXP/IMP都有的参数是PARFILE,它是用来定义EXP/IMP的参数文件,也就是说,上面的参数都可以写在一个参数文件中,但我们一般很少使用。

12. 在进行并行EXP/IMP的时候,如果IMP过程建索引的话不建议同时运行5个以上的IMP,如果你想加快速度,可以在IMP的时候不建索引,这样只要内存允许,可以多跑几个,然后是SQL脚本创建需要的索引。

13. 整理出来的实例供大家参考

Export/Import有三个级别: 表级, 用户级和全数据库级.

1) table model(按表处理的模式)

Ø backup one user's table(备份一个用户下的表)

exp test/test rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=exp_table_yyyymmdd.dmp log=exp_table_yyyymmdd.log tables=test_table1,test_table2

Ø recover all table(导入全部备份的表)

imp test2/test2 fromuser=test touser=test2 rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 file=exp_table_yyyymmdd.dmp log=imp_table_yyyymmdd.log

Ø recover some table of all table(导入备份的部分表)

imp test2/test2 fromuser=test touser=test2 rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 file=exp_table_yyyymmdd.dmp log=imp_table_yyyymmdd.log tables=test_table1

2) user model(用户模式)

Ø backup all someone's object(备份一个用户的所有的数据对象)

exp test/test rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 owner=test file=exp_user_yyyymmdd.dmp log=exp_user_yyyymmdd.log

Ø recover all someone's object

imp test2/test2 fromuser=test touser=test2 rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 file=exp_user_yyyymmdd.dmp log=imp_user_yyyymmdd.log

Ø recover some table of all someone's object

imp test2/test2 fromuser=test touser=test2 rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 file=exp_user_yyyymmdd.dmp log=imp_user_yyyymmdd.log tables=test_table1,test_table2,test_table3

3) full model

Ø backup the full db for all

exp system/manager rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 full=y inctype=complete file=exp_fulldb_yyyymmdd.dmp log=exp_fulldb_yyyymmdd.log

Ø backup the full db for increment

exp system/manager rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 full=y inctype=incremental file=exp_fulldb_zl_yyyymmdd.dmp log=exp_fulldb_zl_yyyymmdd.log

注意:inctype是8i的9i已经不用了

Ø recover all date for full backup

imp system/manager rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 full=y file=exp_fulldb_yyyymmdd.dmp log=imp_fulldb_yyyymmdd.log

Ø recover all date for increment backup

imp system/manager rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y vol

size=0 full=y inctype=restore file=exp_fulldb_zl_yyyymmdd.dmp log=imp_fulldb_zl_yyyymmdd.log

热心网友 时间:2022-04-08 02:31

就用Imp命令啊 操作简单 导入速度快
今天准备用plsql客户端导入一个dmp文件,可是为什么会报这种错误呢 如下...

看看安装时是否安装了工具集 看看Oracle_Home和Oracle_Base是否设定错误

mysql数据库的SQL语句和oracle的有什么区别?详细点

首先是大体一致的,只是分页查询时oracle用的伪列(rownum),mysql用的是limit,具体的可以百度一下分页;另外oracle对sql语句要求更为严格,而且oracle里变量较mysql更多点,oracle中有number型,有大数据类型,mysql没得;另外举个例子,oracle不能插入为空列,而mysql是可以的(个人觉得,不知道正确与否)...

oracle数据库备份 oracle数据库 eclipse怎么导入文件 eclipse导入文件夹项目 qq下载的文件在哪个文件夹 orcale执行查询的多条sql oracle回滚 电脑文件怎么导入手机 oracle
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求游戏《寂静岭》中好听的游戏配乐,最好是纯音乐 A8 6500 最高支持什么显卡 加条内存组成双通道 对游戏有多大提升... ...追了四个多月了、她也喜欢我。我们俩个在一起也上了床…但是我是... 和喜欢7年的女孩表白后女生说给她点时间,但是又没说什么时间回复我。她... 说一个人很有气质`是什么样的呢` 邢台周边地区的苹果是什么价格 太行百果园地址在哪里? ...时最后香的形状是两边低中间高,这代表什么意思呀?麻烦知..._百度知... 染色体的组成为( )A.DNA和蛋白质B.蛋白质和糖类C.基因和蛋白质D.基 ... 监控器被接入后黑屏的原因 想买一部拍照效果好的手机 想要一款拍照功能好点的手机,请各位推荐一下 想买个拍照效果好一点的手机大家有推荐的波? 想买个拍照好点的手机? 本科自考我没从大专读起,直接读的自考本科,毕业时毕业证可否在学信网查到? 自考大专学历在中国高等教育学生信息网上查的那个报告编号是什么... 毕业证查询:1995年高等教育自学考试毕业证书如何查? 可不可以过两次生日? 在哪能查自考大专毕业证真假 吉林大学自考毕业证书是1998年的大专证,在网上怎么查询? iPhone6s怎么制作动态壁纸 无线网卡号是不是可以申请 手机卡怎么申请 网卡能不能注册 新卡怎么申请? 上网卡怎么申请 海尔G8071812S洗衣机的外型尺寸,谢谢 一般的滚筒洗衣机长宽高是多少尺寸? 但愿人长久歌词王菲,然后张碧晨下一秒的歌词来填空:好想能看到,____________? 但愿人长久是谁演唱的。歌词 84年阴历9月十七今年多大 I want to see Japanese AV mother and son Who can tell me where to download I like oldwoman granny 趣头条刷阅读量和赞的好工具,有人知道吗? 刷趣头条自媒体阅读量自动脚本工具用着怎样?哪个最好用 云手机批量群控自动刷百度阅读脚本工具哪里能找到?怎么下载 抖音刷阅读量和赞用什么工具? 谁有朋友圈的文章自动阅读而且更换ip地址的 刷自媒体阅读量用那个软件比较好? 炒干豆腐为什么放小苏打 尖椒干豆腐是哪个地方的名菜 一歌一曲一生舞,一刀一剑一乾坤。一笔一画一仙境,一天一地一个人。 合租医仙主人公阴阳刀剑谱的全部口诀是什么刀山剑雨厉锋芒 说胜英的四句诗是怎么说的?一口单刀压绿林,甩头一子定乾坤,后面是什么? 尖椒干豆腐是最经济实惠的菜肴么? 赞美关羽的句子有哪些? 有关刘备,关羽,张飞他们三人的故事 赞美关羽的诗句或语言… 曾经和关羽张飞兄弟二人打的不分上下的第一武将是谁 威震乾坤第一功,辕门画鼓响咚咚。云长停盏施英勇,酒尚温时斩华雄。 温酒斩华雄是关羽吗?我记得是孙坚啊 怎么都说关羽杀的 陈寿三国志明明说是孙坚杀的么