dmp文件格式说明 oracle_oracle导入dmp 文件名不能包含路径说明 - CSDN
精华内容
参与话题
  • Oracle dmp文件结构探秘

    千次阅读 2020-08-21 16:10:12
    前几天接手了一个解析oracle dmp文件的任务(目前我已离职)。oracledmp文件实际上是一堆16进制的代码,它用于oracle数据库的导入和导出。我们的需求是找出其中的规律,并抓取出其中的建表语句和insert语句。目前...

    前几天接手了一个解析oracle dmp文件的任务(目前我已离职)。oracle的dmp文件实际上是一堆16进制的代码,它用于oracle数据库的导入和导出。我们的需求是找出其中的规律,并抓取出其中的建表语句和insert语句。目前该解析器初步实现,11g下能跑出结果。下面就来揭示出oracle dmp文件结构的一些秘密吧。

    上图所示的便是oracle dmp文件的部分内容(需要说明的一点是,我是用Nodepad++打开的文件,但是默认情况下其打开是一堆乱码,需要下载其十六进制编辑器插件,在Nodepad++中是HEX-Editor),最左边一列是地址指针,之后的列便是其具体的内容。其中两个十六进制数是一对,表示一个字节。可以看出,不管是地址指针还是数据都是用十六进制表示的。

    其文件表结构大致如下所示:

    由上可知,红色的部分便是我们需要的数据,剩下的无用数据并不是真的无用数据,只是对于我们而言是不关心的数据而已。其中包括一些表的元数据、索引的建立等等。有一点需要说明的是,除了文件头部的固定头之外,上述图演示的是一张表的结构示意图。如果一个oracle dmp文件有多张表,则会有多个上述图所演示的表结构片段(不包括固定头)。这点需要留意。

    该解析器是使用RandomAccessFile来进行读取的,其中的readLine方法并不是每次读取一行数据,而是以“0a”作为分隔,每次读出两个“0a”之间的内容。这点需要特别留意。首先需要跳过一个0x90 * 0x10 + 0xD的固定头,来到下一个“0a”处。跳过之后来到下图红框之后的位置处:

    此时调用三次readLine方法分别获得表声明表创建insert批处理语句(从最后面的描述列也可以略知一二)。接下来就是拼接具体的insert语句了。抓到真实的数据字段,和insert批处理语句进行拼接即可。在我们调用了三次readLine方法后,当前指针来到了下面红框的位置:

    之后我们需要找到“00 00 00 00 00”,五个“00”这样结构的位置处,在其之后便是真实的数据字段位置了。在上图中便是蓝框框中的内容处。之后我们读两个字节,这里是“24 00”,该数据表示之后插入数据的字节数比如说“24 00”换成十进制是36(经过实测,“00 24”和“24 00”都代表十进制的36,这里需要进一步分析总结),表示之后插入数据是36个字节,如上面所示便是向后数的36个字节。之后继续读两个字节,也就是“10 00”,十进制是16,之后读取16个字节…以此类推。

    那么什么时候是一行数据读取完呢?当我们遇到两个“00”也就是“00 00”的时候,代表着一行数据的结束。上述所说过程如下图所示,其中红框是此时需要插入值的前后校验位、黄框是插入的真实数据、蓝框框中的便是一行结束的位置:

    之后便开始了下一行数据的解析,和之前的过程一样,这里不再赘述。那么什么时候是一张表的所有插入语句都结束的位置呢?当遇到“00 00 ff ff 0a”这样的结构时,则代表当前表的插入过程都结束了。如下所示:

    另外需要说明的一点是当我们在“00 00”后读到的下一字节是“fe”时,代表该位置是一个空字段。这点需要留意。

    此时我们有了insert的批处理语句,也有了真实的插入数据的语句。就可以将这两者结合,拼接出真正的insert语句了。比如说我们有了批处理语句:“INSERT INTO "TABLE1" ("A", "B")  VALUES (:1, :2)”和对应的两行真实数据:“'q1'、'q2'”和“'q3'、'q4'”,我们就可以使用正则来将这二者拼接,得到两条insert语句:“INSERT INTO "TABLE1" ("A", "B")  VALUES ('q1', 'q2')”和“INSERT INTO "TABLE1" ("A", "B")  VALUES ('q3', 'q4')”。

    至此,我们完成了一张表的解析工作。接下来,继续去寻找下一次表的创建语句、批处理语句和真实数据语句。不断读取数据,找出第一句是“TABLE”开头和第二句是“CREATE TABLE”开头的语句。如果有这样的结构,则表示下一张表的解析工作就此开始。之后的解析过程和上述所说的内容一样,这里也不再做讲解了。

    那么,什么时候才是一个dmp文件真正解析结束呢?请看下图:

    当我们不断readLine时读取出的字符串是“EXIT”时,此时代表着文件解析的结束。

    至此,一张oracle dmp文件解析的全过程就完成了。但是需要注意的是,上述我所说的文件结构只是最一般的情况,有时也会有特例出现。比如:一张表插入真实数据的结束不仅可以用“00 00 ff ff 0a”来表示,也可以用“00 00 3F 3F 0A”来表示;有时候明明两个字符的校验位是“0c 00”,也就是十进制的12,表示后面的12个字节是一个数据段,但通过查看发现,后面的24个字段其实是作为一个整体的(我感觉是跟中文的编码集有关,一个中文对应两个字节,但有些中文却不是这样的规则。待考证)。同时,对于Blob、Clob字段的解析,我们暂时是没有实现的。有兴趣的同学可以查看,Blob和Clob字段首先会跟着一堆的“00”,且个数不固定,然后是跟着一些十六进制数。这跟我们现有的解析规则发生了冲突(看来Oracle对于Blob和Clob字段有着特殊的处理)。尽管如此,上述的解析过程也可以让我们对oracle的dmp文件有了一个初步的认识。下面是我解析出上面这个oracle dmp文件结果的部分截图,感兴趣的同学可以自行尝试实现一下:

    GitHub源码:https://github.com/MonkeyOneCool/OracleDmpParser

    展开全文
  • oracle数据库导入、导出dmp文件

    万次阅读 2017-10-24 14:19:43
    今天碰到一个问题,需要在另外一台机器(经过核实,本机器上已经安装过oracle数据库)上导入oracle的后缀名是DMP的数据文件,但是不知道机器上oracle的相关用户的用户名和密码,(还好经过尝试sysdba的用户名密码没有被...

    dmp文件导出

        dmp文件导出用的比较多的一般是三种,他们分别是:导出整个数据库实例下的所有数据、导出指定用户的所有表、导出指定表。

     

        这里已我的数据库为例,进行介绍,我的Oracle数据库实例为"ORACLE",查看自己数据库实例可以从"任务管理器-->服务"中进行查看,如下图


     


     


    打开命令行:


    1,将数据库ORACLE完全导出,用户名system密码manager 导出到c:\daochu.dmp中

       exp system/manager@ORACLE  file=c:\daochu.dmp full=y

     

    2,将数据库中RFD用户与,JYZGCX用户的表导出

       exp system/manager@ORACLE  file=d:\daochu.dmpowner=(RFD,JYZGCX)

     

    3,将数据库中的表T_USERT_ROLE导出

        expJYZGCX/JYZGCX@ORACLEfile= d:\data\newsmgnt.dmp tables=(T_USER,T_ROLE)

     

        上面的system为用户名,manager为密码,ORACLE为数据库实例名,其实不一定非的用system用户,只要是拥有管理员权限的用户都可以。


    dmp文件导入

    步骤如下:

    机器环境是windows条件下,win7:

    1.打开“开始”--->输入cmd,打开cmd命令窗口,输入:sqlplus / as sysdba;然后使用conn / as sysdba;这样就可以以超级管理员的最高权限登录,当然这决定于init.ora 文件中的数据库初始化参数,可以参考:

    http://blog.chinaunix.net/uid-43642-id-2124603.html


    2.上面以sysdba登录后,就可以创建表空间和用户了。(打开“开始”-->输入cmd—> sqlplus /nolog;输入 conn / as sysdba管理员账户登录;

    由于目前有dmp文件,可以用notepad++(或者Editplus或者UltraEdit)打开dmp文件(UltraEdit或者Editplus打开效果更好,没有乱码,因为是二进制文件嘛,不过其他方面我更喜欢notepad++),使用快捷键ctrl+F,查找tablespace ,可以找到这个dmp文件所对应数据库的表空间,我查找我的表空间的名称是USERS,下面创建语句创建的表空间的名称就是USERS,创建语句不太明白的,可以百度一下。

    2.1然后创建表空间,命令如下:

    create tablespace USERS   
    logging   
    datafile 'D:\oracle\product\10.2.0\oradata\orcl\USERS.dbf'   
    size 32m   
    autoextend on   
    next 32m maxsize 2048m   
    extent management local;

    2.2创建用户,命令如下:

    创建test用户,密码也是test222,使用上面创建的表空间

    create user test identified by test222  
    default tablespace USERS  


    3.给创建的test用户分配权限,这里我比较懒,直接分配了dba权限,命令如下:

    grant dba to test; 

    这样前期工作准备就绪了,然后可以关掉刚刚这个命令窗口了。


    4.打开“开始”-->输入cmd(记住:这里是cmd窗口,不是sqlplus窗口!!!)

    由于在上面几个步骤中,创建了test这个用户,所以往test用户导入数据:

    直接输入如下语句:imp test/test222@localhost/orcl file="C:\Users\zhengyi\Desktop\test20140221.DMP"  full=y;

    上述语句说明如下:

    test是上面创建的登录数据库用户名;

    test222是登录数据库的密码;

    localhost:代表当前数据库的地址是本机,如果是远程导入,替换成对应的ip地址就行

    orcl:是实例名称(这个如果不知道实例名称的话,应该可以查,如果不能查,额,我还不知道咋弄,我先试试!)

    file:后面的是你当前dmp文件存放的路径

    full=y,这个貌似是全部导入,我再查查核实一下!


    这样,oracle下导入dmp文件的方法基本就说明完了,祝大家好运!

    展开全文
  • 导入dmp文件需要确定一下几点 1.确定用户名表空间是否与导出dmp文件一致 例如: 如果对方导出dmp文件使用用户名与表空间不一致 则会导入时报ORA-00959:表空间不存在 ORA-01918:用户不存在  2.确定对方导出...

    导入dmp文件需要确定一下几点

    1.确定用户名表空间是否与导出dmp文件一致

    例如:

    如果对方导出dmp文件使用用户名与表空间不一致

    则会导入时报ORA-00959:表空间不存在   ORA-01918:用户不存在

     2.确定对方导出方式来使用命令导入

    例如:

    如果对方使用expdm导出则用impdb导入

    则会报IMP-00038:无法转换为环境字符集句柄  IMP-00000:未成功终止导入

    3.使用create directory创建对象后如果对方使用expdm导出我们使用impdb导入,

    Dumpfile=不能有路径描述  

    例如:

    impdp Nwdy/tangboTest@orcl directory=DBBACKS dumpfile=D:\path\xxx.dmp

    则会报ORA-39001:参数值无效 ORA-39000: 转储文件说明错误 ORA-39088:文件名不能包含路径说明

    解决方法:

    使用dbbacks创建对象后将dmp文件放在与dbbacks创建的对象同一目录下然后直接通过

    dumpfile=xxx.dmp 即可。

    注意:

    create directory需要先把路径目录创建为xxx这个对象

    如:create directory xxx as ‘D:\path’

    导入dmp文件

    1.授权给用户创建目录权限

    grant connect,resource,dba to 用户名

    2.将自己定义的目录创建为xxx对象

    create directory xxx as D:\path;

    3.查询创建的xxx对象是否能查询到

    select * from dba_directories;

    4.给用户赋予读写权限

    grant read,write on directory dbbacksto 用户名

    5.导入dmp文件

    impdp 用户名/密码@服务名 directory=xxx创建的目录对象 dumpfile=dmp文件名

    或者

    imp 用户名/密码@服务名 file=D:\path\xxx.dmp fromuser=用户名 touser=用户名

    以上蓝色标识需用命令执行;

    绿色标识需用命令窗口使用:

    Sqlplus/nolog

    connect system/orcl(服务名)as sysdba登陆后执行

    展开全文
  • 2010年5月12日 SQL> alter user scott account unlock; ...SQL> alter user scott ...exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。

    2010年5月12日

    SQL> alter user scott account unlock;

    SQL> alter user scott identified by pan;

    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。

    执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,

    DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径,

    该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。

    oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。 SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。

    下面介绍的是导入导出的实例。 数据导出:

    1 将数据库TEST完全导出,用户名system 密码sql 导出到D:\daochu.dmp中

    exp system/sql@TEST file=d:\daochu.dmp full=y

    2 将数据库中system用户与sys用户的表导出

    exp system/sql@TEST file=d:\daochu.dmp owner=(system,sys)

    3 将数据库中的表table1、table2导出

    exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=( table1、table2)

    4 将数据库中的表table1中的字段filed1以"00"打头的数据导出

    exp system/sql@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"

    上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。

    也可以在上面命令后面 加上 compress=y 来实现。

    数据的导入:

    1 将D:\daochu.dmp 中的数据导入 TEST数据库中。

    imp system/sql@TEST file=d:\daochu.dmp

    imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp ignore=y

    上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

    在后面加上 ignore=y 就可以了。

    2 将d:\daochu.dmp中的表table1 导入

    imp system/sql@TEST file=d:\daochu.dmp tables=(table1)

    基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。

    2010年5月12日

    析Oracle用户解锁命令的两则实现方法 2009-11-3 作者: 编辑:崔晓帆 点击进入论坛

    关键词:Oracle 解锁

    在安装完Oracle 10g之后,想打开sql*plus来学习,然后按照书上的步骤用scott用户来连接数据库,可输了好几次都提示一个错误。

    error: the account is locked

    然后上网查了一下之后发现这个用户被锁定了,至于它为什么被锁定,可能是下面几个原因。

    1.尝试多次登录未成功.(可能密码不正确)

    2.此用户被管理员手工锁定.

    3.用户密码到期.未按时修改密码.等等...

    这个用户肯定是登陆不了了,然后我用system这个用户登录,可是登了半天都没有进去,又去网上查,网上面大都是关于 oracle 9i的用户和密码,后来我记得在安装的时候就提示输入了,用那个试了一下就连接上了,所以在oracle 10g的system这个用户的密码不是默认的,而是安装的时候自己设定的。

    拿system登录进去之后,执行下面的命令:

    SQL> alter user scott account unlock;

    用户已更改。

    这样就完成解锁的操作。接下来,你还可以重新给scott这个用户设定密码

    修改scott的登录密码

    SQL> alter user scott identified by pan;

    用户已更改。

    ok了,你再拿scott 和 pan来登录就可以了!

    SQL> conn scott/pan

    2010年5月12日

    已连接。

    新装完Oracle 10g后,用system/password可以正常登录,而使用scott/tiger用户却不能登录:

    conn scott/tiger error:Oracle 10g the account is locked Oracle 10g the password has expired

    原因:默认Oracle 10g的scott不能登陆。被禁用了。

    解决方法:

    首先确认已经安装oracle 数据库和客户端

    .在客户端DOS下执行如下语句:

    注意提示符号

    c:\sqlplus /nolog sqlp\ conn sys/system@oracle10 as sysdba // sys为当前的oracle 用户 system 为该用户密码 oracle10 为SID # alter user soctt account lock; // 把 scott用户锁定 # alter user scott account unlock; //把scott用户解锁 # alter user scott identified by scott //修改scott用户密码为 scott,scott用户默认密码为 tiger

    1 Dos下输入C:\sqlplus /nolog

    2 以DBA的身份登录

    conn sys/password as sysdba;

    3 解锁

    alter user scott account unlock;

    4 弹出一个修改密码的对话框,修改密码

    conn scott/tiger SQL> conn sys/sys as sysdba; Connected. SQL> alter user scott account unlock; User altered. SQL> commit; Commit complete. SQL> conn scott/tiger//请输入新密码,并确认后OK Password changed Connected.

    oracle 10g数据泵之impdp

    2010年5月12日

    (2008-08-18 08:47:50)

    转载

    标签: 分类: 数据库

    程序

    it

    要了解impdp,请先了解导出,我之前作过导出的笔记:oracle 10g数据泵之expdp。这两个笔记也许只对程序员有用,通常用于把正式区的数据导入到测试区,对数据库管理员也许帮助不大,他们使用这些工具大多是用于数据备份。

    impdp可以将数据加载到整个数据库、特定的方案(也就是用户)、特定的表空间或者特定的表,也可以将表空间传输到数据库。impdp支持网络模式操作,即从另一个数据库加载数据。

    使用impdp导入数据

    1.指定转储文件(存放导出数据的文件)存放的目录

    SQL>connect sys/password as sysdba;

    SQL>create directory dump_dir as ?d:\dump?;

    2.使用impdp命令

    开始-->运行-->cmd

    impdp username/password parameter1[,parameter2,….]

    其中,username表示用户名;password表示用户密码;parameter1和parameter2表示参数。参数的类型有近40个,可以使用命令impdp help=y查看所有参数和参数的含义。下面介绍一些对导入数据库和表需要的常用参数,它们的含义和在expdp中的含义完全相同。

    content :指定导入的内容。语法格式:content={all| data_only|metadate_only}。其中all表示导入对象定义及其数据,data_only表示只导入对象数据,metadate_only表示只导入对象定义。默认为all

    directory:指定转储文件和日志文件所在的默认位置(也就是保存数据的文件位置)。语法格式:directory=direcotry_object。direcotry_object 是create directory语句创建的目录对象。

    dumpfile:指定转储文件的名称。语法格式:dumpfile=[ direcotry_object:]file_name[,….]。direcotry_object默认为上面directory参数指定的目录对象。file_name默认名称是expdat.dmp。如果导入文件过大,可以指定多个文件名,如direcotry_object:mydb_%U.dmp。”%U”是一个占位符,使用这种方式不会出现同名的文件。

    logfile:指定日志文件的名称。语法格式:logfile=[ direcotry_object:]file_name。direcotry_object默认为directory参数指定的目录对象。file_name日志文件,默认名称是export.log。

    exclude:导入时要排除的对象。语法格式: exclude=object_type[:name_clause][,….]。object_type表示对象类型,如table、view、index、function、preocedure,name_clause表示使用SQL语句,指定对象名的筛选条件,如table:”like ?emp%?”表示排除emp开始的任何表。

    include:导入时要包含的对象。语法格式:include =object_type[:name_clause][,….]。object_type

    2010年5月12日

    和name_clause含义同exclude参数解释一样。include和exclude不可以同时使用。当一个对象被包含时,所有相关对象也被包含。

    network_link:指定网格导入时的数据库链接名。语法格式:network_link=database_link。database_link表示远程数据库链接名。

    query:指定导入数据的where条件。语法格式:query=[schema.][table_name:]query_clause。其中schema表示方案名,也就是用户名,table_name表示表名,query_clause表示条件子句,即where子句。

    tables:指定导入表。语法格式:tables=[schema.]table_name[,….]。schema表示方案名,table_name表示表名

    full:指定是否将整个数据库导入。语法格式:full={y|n}。y表示执行数据库导入,n表不执行。默认为n。

    parfile:指定导入参数文件名。把impdp命令所需的参数写在一个文件中,执行impdp命令时指定这个文件,而不用指定各种参数

    导入实例

    顺便把expdp命令也写进来,以方便对比。为了不和上一篇导出笔记重复,这里以导入远程数据库的数据到本地数据库为例。

    导出远程数据库

    1.估算转储文件大小

    如果数据库很大,这个过程也许会执行很久。在导出数据库之前,最好先估算一下转储文件(导出到的文件)的大小,以便确定合适filesize参数值,和确定是否有足够的磁盘空间。使用语法:

    expdp username/password@234DB full=y estimate_only=y nologfile=y;

    其中estimate_only=y表示只估算转储文件的占的磁盘空间,不执行导出操作;@234DB表示远程数据库,它是在tnsnames.ora文件中定义的。

    2.导出数据库

    expdp username/password@234DB directory=dump_dir dumpfile=mydb_%U.dmp logfile=mydb.log filesize=200m full=y

    其中dump_dir表示导出文件的目录,由于这里是导出远程数据库,所以这个目录是在远程机子中的;%U是一个占位符,表示01~99的两位数,这时执行会创建如MYDB_21.DMP之类的文件

    3.导入整个数据库

    impdp username/password directory=dump_dir dumpfile=mydb_%U.dmp full=y;

    其中dump_dir表示入出文件的目录,这里要把远程导出的文件拷贝到本地机子上

    导入远程表

    2010年5月12日

    1.导出表

    expdp username/password@234DB directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp

    其中schemas表示方案(即用户),emp表示远程数据库名。使用这种方式转储文件将保存在远程服务器的操作系统中。如果要把转储文件保存到本地机子,使用以下语法:

    expdp

    username/password directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp network_link=to234db

    其中username/password分别是本机数据库用户名和密码,to234db是本地数据库指向远程数据库的database link。这种方式可以把数据保存到本机中,但是会产生网络流量。

    2.导入表

    impdp username/password directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp

    其中schemas要和远程用户名相同,也就是说如果本地没有这个用户,要先创建用户,格式如:

    grant connect,resource to schemas identified by password。emp是要导入的表,如果本地schemas方案已经存在要导入的表,可以指定tables_exists_action参数,使用格式是tables_exists_action={skip|append|truncate|replace}这四个参数值分别表示忽略这个表、把记录追加到该表后面、先删除表数据再追加记录和使用新表替代已经存在的表。

    向Oracle数据库导入DMP文件

    说明:dmp文件为Oracle数据库备份文件。

    命令: imp:导入

    1. 获取帮助

    imp help=y

    2. 导入一个完整数据库

    imp system/manager file=bible_db log=dible_db full=y ignore=y

    3. 导入一个或一组指定用户所属的全部表、索引和其他对象

    imp system/manager file=seapark log=seapark fromuser=seapark imp

    system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

    4. 将一个用户所属的数据导入另一个用户

    imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy

    imp system/manager file=tank log=tank fromuser=(seapark,amy)

    touser=(seapark1, amy1)

    5. 导入一个表

    2010年5月12日 imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

    6. 从多个文件导入

    imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck, filesize=1G full=y

    7. 使用参数文件

    imp system/manager parfile=bible_tables.par

    bible_tables.par 参数文件:

    #Import the sample tables used for the Oracle8i Database Administrator's

    Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import

    8. 增量导入

    imp system./manager inctype= RECTORE FULL=Y FILE=A

    C:Documents and Settingsadministrator>exp help=y

    Export: Release 9.2.0.1.0 - Production on 星期三 7 月 28 17:04:43 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

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

    后接用户名 / 口令的命令 :

    例程 : EXP SCOTT/TIGER

    或者,您也可以通过输入跟有各种参数的 EXP 命令来控制 “ 导出 ” 按照不同参数。要指定参数,您可以使用关键字 :

    格式 : EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN) 例程 : EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR) 或 TABLES=(T1: P1,T1: P2) ,如果 T1 是分区表

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

    关键字 说明 ( 默认 ) 关键字 说明 ( 默认 )

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

    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 参数文件名

    2010年5月12日 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 模式导出的模板名

    在没有警告的情况下成功终止导出。

    ==================================================

    C:Documents and Settingsadministrator>imp help=y

    Import: Release 9.2.0.1.0 - Production on 星期三 7 月 28 17:06:54 2004

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

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

    后接用户名 / 口令的命令 :

    例程 : IMP SCOTT/TIGER

    或者 , 可以通过输入 IMP 命令和各种参数来控制 “ 导入 ”

    按照不同参数。要指定参数,您可以使用关键字 :

    格式 : IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)

    例程 : IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N

    或 TABLES=(T1: P1,T1: P2) ,如果 T1 是分区表

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

    关键字 说明(默认) 关键字 说明(默认)

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

    USERID 用户名 / 口令 FULL

    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。

    2010年5月12日

    执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,

    DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径,

    该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。

    oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。 SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。

    下面介绍的是导入导出的实例。 数据导出:

    1 将数据库TEST完全导出,用户名system 密码sql 导出到D:\daochu.dmp中

    exp system/sql@TEST file=d:\daochu.dmp full=y

    2 将数据库中system用户与sys用户的表导出

    exp system/sql@TEST file=d:\daochu.dmp owner=(system,sys)

    3 将数据库中的表table1、table2导出

    exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=( table1、table2)

    4 将数据库中的表table1中的字段filed1以"00"打头的数据导出

    exp system/sql@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"

    上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。

    也可以在上面命令后面 加上 compress=y 来实现。

    数据的导入:

    1 将D:\daochu.dmp 中的数据导入 TEST数据库中。

    imp system/sql@TEST file=d:\daochu.dmp

    imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp ignore=y

    上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

    在后面加上 ignore=y 就可以了。

    2 将d:\daochu.dmp中的表table1 导入

    imp system/sql@TEST file=d:\daochu.dmp tables=(table1)

    基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。

    数据泵导入:

    指令 impdp

    一:数据库所有对象的导入:

    impdp system/tiger dumpfile=pump_dir:mydatabase_%.dat

    filesize=100m nologfile=y job_name=zhang full=y estimate_only

    二:用户数据的导入:

    2010年5月12日

    impdp system/tiger dumpfile=pump_dir:mydatabase_%.dat

    filesize=100m nologfile=y job_name=zhang schemas=scott

    三:导入特定的表:

    impdp system/tiger dumpfile=pump_dir:mydatabase_%.dat

    filesize=100m nologfile=y job_name=zhang tables=scott.emp,scott.dept

    数据泵导出:

    指令 expdp

    一:数据库所有对象的导出:

    expdp system/tiger dumpfile=pump_dir:mydatabase_%.dat

    filesize=100m nologfile=y job_name=zhang full=y estimate_only

    二:用户数据的导出:

    expdp system/tiger dumpfile=pump_dir:mydatabase_%.dat

    filesize=100m nologfile=y job_name=zhang schemas=scott

    三:导出特定的表:

    expdp system/tiger dumpfile=pump_dir:mydatabase_%.dat

    filesize=100m nologfile=y job_name=zhang tables=scott.emp,scott.dept 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。

    2010年5月12日

    !!!若导入时出现有个别表不能成功导入时,只能在数据库里新建表结构,再通过imp命令导入。

    1. 根据导入表时在SQL*PLUS中的提示,会说什么表不能正确创建,在列出相应表的所有表结构。

    2. 在SQL*PLUS里复制表结构到TXT文档,设置好格式,放在C:\1.txt下。

    3. 在SQL*PLUS里通过@ C:\1.txt 运行,提示表创建结构成功。

    4. 向新创建的表导入数据。Imp system/sql@orcl file=d:\0955.dmp tables=(table1,table2,table3)

    ignore=y

    5. 观察提示,成败在此一举。

    注意:

    操作者要有足够的权限,权限不够它会提示。

    数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

    附录一: 给用户增加导入数据权限的操作

    第一,启动sql*puls

    第二,以system/sql登陆

    第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)

    第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,

    DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,

    DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字

    第五, 运行-cmd-进入dmp文件所在的目录,

    imp userid=system/sql full=y file=*.dmp

    或者 imp userid=system/sql full=y file=filename.dmp

    执行示例:

    F:\Work\Oracle_Data\backup>imp userid=test/test full=y file=inner_notify.dmp

    屏幕显示

    Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006

    (c) Copyright 2000 Oracle Corporation. All rights reserved.

    连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production

    With the Partitioning option

    JServer Release 8.1.7.0.0 - Production

    经由常规路径导出由EXPORT:V08.01.07创建的文件

    已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入

    导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换)

    . 正在将AICHANNEL的对象导入到 AICHANNEL

    . . 正在导入表 "INNER_NOTIFY" 4行被导入

    准备启用约束条件...

    成功终止导入,但出现警告

    原文:http://www.niubb.net/a/2015/09-27/1015489.html

    展开全文
  • oracle11g数据库导入导出方法教程

    万次阅读 多人点赞 2020-06-23 08:25:10
    oracle11g数据库导入导出: ①:传统方式——exp(导出)和(imp)导入: ②:数据泵方式——expdp导出和(impdp)导入;...数据库导入:把.dmp 格式文件从本地导入到数据库服务器中(本地oracle测试数据库中...
  • Oracle学习——dmp文件(表)导入与导出

    万次阅读 2014-12-27 19:33:13
     关于dmp我们用的还是比较多的,dmp文件它是作为oracle导入和导出表使用的文件格式,今天就将dmp文件导出和导入进行学习。   dmp文件导出    dmp文件导出用的比较多的一般是三种,他们分别是:导出整个数据库...
  • 今天碰到一个问题,需要在另外一台机器(经过核实,本机器上已经安装过oracle数据库)上导入oracle的后缀名是DMP的数据文件,但是不知道机器上oracle的相关用户的用户名和密码,(还好经过尝试sysdba的用户名密码没有被...
  • PL SQL导入dmp文件

    万次阅读 2016-09-26 15:40:49
    1.system用户登陆plsql客户端 进入创建表空间  create tablespace tds_tde  datafile 'E:/ORACLE/ORADATA/ORCLTEST/tds_tde.dbf' size 600M reuse   autoextend on next 10M maxsize unlimited extent managem
  • Oracle 常用命令(导入dmp文件)

    万次阅读 2018-08-24 17:54:21
    sqlplus / as sysdba; --查询实例名 select instance_name from v$instance; --获取版本号 返回具体的版本号 例:11.2.0.1.0 select version from product_component_version;...show parameter local_liste...
  • Oracle imp/impdp 导入dmp文件到数据库

    万次阅读 2018-09-04 10:13:45
    EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。 IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。 注意:EXP不会...
  • 在开发和项目部署过程中,我们经常会碰到要将别人的dmp数据库导入到我们自己电脑上来,那么这个应该怎么导入呢?下面有一些简单的步骤:先进入盘符,例如你的oracle装在D盘,就先进入到D盘去, 然后找到你的oracle...
  • 使用过oralce很多种导入导出的方式,pde,sql(导出不支持blog格式),dmp格式,觉得.dmp最为方便,可以导出所有的表结构、数据、SEQ及存储过程等,下面就开始具体流程,并说明到如果表中没有数据时如何导入。...
  • Oracle 导入表导出表

    千次阅读 2018-04-28 00:25:56
    dmp文件是作为oracle导入和导出表使用的文件格式dmp文件导出dmp文件导出用的比较多的一般是三种,他们分别是:1.导出整个数据库实例下的所有数据2.导出指定用户的所有表3.导出指定表。打开命令行:1,将数据库ORACLE...
  • Oracle如何导出dmp文件

    千次阅读 2018-10-21 14:36:14
    导出dmp文件 进入目录:/home/oracle/20181021 执行命令: exp 导入数据库用户名/密码 file=导出的dmp文件 log=日志名称 owner=导出的数据库名 截图如下:   exp aibs/aibs file=aibs_20181021.dmp log=...
  • 使用PDE文件导出数据和传统EXP/IMP方式的区别 oracle数据库导出导入常用的有两种方式:    其一是:使用命令行调用exp和imp命令来实现。可以通过设定命令参数来...这里导出的文件dmp格式文件。其运行原理在附录。
  • 1.imp.exe或impdp.exe损坏,验证cmd-->imp或imp.exe(如果不行使用cmd后把目录切换到imp.exe所在的文件目录E:\tools\oracle\product\11.2.0\dbhome_1\BIN 然后imp或impdp),如果出现 用户名: 说明两个文件正常 ...
  • PL/SQL Developer导入导出Oracle数据库方法

    万次阅读 热门讨论 2014-05-30 17:53:44
    前一篇博客介绍了Navicat工具备份Oralce
  • 问题描述: C:\Users\Administrator>impdp olap_ft2013/hhdtest@orcl directory=ftdata dump...OLAP_FT2015_20150430.dmp remap_schema=olap_ft2013:olap_ft2013 Import: Release 11.2.0.1.0 - Production on 星
  • ORA-39143ORA-39143: 转储文件 "C:\Users\tt\Desktop\dir_dp\11111.dmp" 可能是原始的导出转储文件 Import: Release 11.2.0.1.0 - Production on 星期三 8月 7 10:29:58 2013 Copyright (c) 1982, 2009, ...
  • ![图片说明](https://img-ask.csdn.net/upload/201508/30/1440935795_604370.jpg)
1 2 3 4 5 ... 20
收藏数 8,714
精华内容 3,485
关键字:

dmp文件格式说明 oracle