dmp导入不了数据 oracle_将oracle dmp文件导入本地oracle数据库 - CSDN
精华内容
参与话题
  • Oracle imp/impdp 导入dmp文件到数据库

    万次阅读 2018-09-04 10:13:45
    EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,能在客户端使用。 IMP只适用于EXP导出的文件,适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而适用于EXP导出文件。 注意:EXP不会...

    使用EXPDP和IMPDP时应该注意的事项:


           EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
           EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。

           IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。

    注意:EXP不会导出空表(可能会对存储过程有影响)

    1.exp/imp导出/导入数据

    --exp导出数据
    exp CCENSE/CCENSE@OracleDB file=D:\DBBackUp\oracleExp.dmp log=D:\DBBackUp\oracleExp20161103.log
    --imp导入数据
    imp CCENSE/CCENSE@OracleDB file=D:\DBBackUp\oracleExp.dmp log=D:\DBBackUp\oracleImp20161103.log FULL=y;
    
    /* 说明:CCENSE/CCENSE@OracleDB --->用户名/密码@数据库实例
            file="本地路径+需要导入/导出的dmp文件全称"
            log="日志文件"
            FULL=y;
    */
    --给当前用户追加connect,resource,dba [非必须] grant connect,resource,dba to CCENSE;
    数据导出:
    将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
       exp system/manager@TEST file=d:\daochu.dmp full=y
    将数据库中system用户与sys用户的表导出
       exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
    将数据库中的表table1 、table2导出
       exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 
    将数据库中的表table1中的字段filed1以"00"打头的数据导出
       exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
       上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
       不过在上面命令后面 加上 compress=y  就可以了 
    数据的导入
    将D:\daochu.dmp 中的数据导入 TEST数据库中。
       imp system/manager@TEST  file=d:\daochu.dmp
       上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
       在后面加上 ignore=y 就可以了。
    将d:\daochu.dmp中的表table1 导入
     imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)

    2.expdp/impdp导出/导入数据

           使用impdp命令,需要在oracle数据库服务器操作:

           使用sqlplus或者Oracle客户端(PL/SQL) 链接到相应的Oracle数据库实例(进行下面第一,第二两步骤的操作)

           一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。

    create directory dpdata1 as 'd:\test\dump';
    
    (查看服务器上若没有存在d:\test\dump目录,则手动新建,把dmp备份文件放到d:\test\dump目录下面)

           二、查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)

    select * from dba_directories;

    这里写图片描述

    3.导入数据库

    --expdp导出数据
    expdp CCENSE/CCENSE@OracleDB directory = "dpdata1" dumpfile ="oracleExpdp.dmp" logfile = oracleExpdp20161103.log
    --impdp导入数据
    impdp CCENSE/CCENSE@OracleDB directory="dpdata1" dumpfile="oracleExpdp.dmp" logfile = oracleImpdp20161103.log FULL=y;
    
    /* 说明:CCENSE/CCENSE@OracleDB --->用户名/密码@数据库实例
            directory="在步骤一中创建的逻辑目录"
            dumpfile="需要导入/导出的dmp文件全称"
            logfile="日志文件"
            FULL=y;
    */
    --其他SQL
    --表空间[10G]和临时表空间[1G]
    /*表空间*/
    SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size 
    FROM dba_tablespaces t, dba_data_files d 
    WHERE t.tablespace_name = d.tablespace_name 
    GROUP BY t.tablespace_name;
    
    /*临时表空间*/
    select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;
    
    -- 查看端口是否被占用
    netstat -aon|findstr "1522"
    
    -- 查看监听状态,启动监听,关闭监听
    lsnrctl status LISTENER2
    lsnrctl start LISTENER2 
    lsnrctl stop LISTENER2
    
    --访问地址
    linux sqlplus ccense/ccense@//localhost:1521/OracleDB;
    win sqlplus ccense/ccense@IP:1521/OracleDB;

           imp 只导入数据,不导入表结构,在命令里加上ignore=y就可以了

           ignore=y相当于,如果没有的表,创建并倒入数据,如果已经有的表,忽略创建的,但不忽略倒入。

           在使用IMP导入并使用ignore=y参数时,Oracle根本不检查要导入的数据结构和现存在数据库中表的结构是否相同

           exp 命令导出表结构,不导出表数据。只需在命令行里加一个参数rows=n即可。表示不导出表数据

    展开全文
  • 登录时connect as 选择normal

    登录时connect as 选择normal

    展开全文
  • Oracledmp导入/导出、数据库操作等过程中的字符集问题 开篇:因为要定位一个 关于dmp文件导入的乱码问题, 于是乎我开始了漫长了 Oracle字符集搜索之路,网上关于讲解oracle字符集的文章多得数不胜数,但...

    Oracle之 dmp导入/导出、数据库操作等过程中的字符集问题


    开篇:因为要定位一个 关于dmp文件导入的乱码问题, 于是乎我开始了漫长了 Oracle字符集搜索之路,网上关于讲解oracle字符集的文章多得数不胜数,但转载的这篇文章确是我最最喜欢的,图文并茂,恰当的例子通俗易懂,对于我这种小菜最最适合不过。


    本文转自:http://blog.163.com/jiankun_liu/blog/static/1863927762013698175289/

    原文标题:Oracle_字符集问题(数据库与客户端字符集关联关系)


    //时间:2013-07-07

    //作者:shm

    //描述:本文主要记录了Oracle数据库的字符集问题,也涉及作为服务器操作系统的CentOS或者Windows的字符集与Oracle字符集之间的关联关系。

     

             Oracle的字符集,这个问题的提出是因为两个原因:一是工作中遇到一个DMP文件需要恢复到数据库中去,而这个DMP文件的字符集是US7ASCII,第二个原因是一直在学习CentOS,在这个系统上安装Oracle已经能成功,但是被中文英文系统字符集等问题搞得有点头大。所以又回头翻了翻盖国强的书、看了看尚观的视频,终于有点心得,所以就写下了这篇算是笔记的文章。

            

             Oracle数据库的字符集问题不算是大问题,但也是一个头疼的问题。这是因为有这么三个原因:一是Oracle数据库在安装时指定好字符集之后一般不能更改,二是字符集问题涉及服务器与客户端之间的存取问题,三是Oracle数据库迁移时也会跟字符集非常相关。

             首先,要说清楚Oracle字符集的相关问题,则要先理清数据库运行过程中的架构以及在这个架构中的字符集设置及这些设置之间的关联关系。

             先画一张图看一下:



     

             在这个图中,为了说明问题,我们将服务器与客户端分开,客户端用应用程序比如sqlplus或者PL/SQL与服务端相连。

             服务端有两个字符集:服务端操作系统字符集(4)、服务端数据库字符集(1);

             客户端有一个字符集:客户端操作系统字符集(2);

             客户端有一个参数:操作系统参数NLS_LANG(3)。

             这三个字符集与一个参数中,有一个字符集对整个架构的运行没有影响,它就是服务端操作系统字符集(4),所以这个字符集将不再出现在我们的讨论过程中。

             为什么这个服务端操作系统字符集没有用呢?这是因为Oracle在存取字符时与客户端进行字符集确认与转码的过程是由Oracle数据库自身完成的,不需要经过Oracle数据库所在的服务器的帮助。具体的是怎么回事用以下例子说明一下。

             比如在Oracle数据库中有一个表,用如下语句创建:

             create table test(name varchar2(10));

             为了说明问题假定有这样的一个环境:服务器端Oracle数据库的字符集是UTF8,客户端操作系统字符集是ZHS16GBK,客户端NLS_LANG参数设置为ZHS16GBK。

    那么从客户端应用程序(比如sqlplus)发出这样一条命令:

             insert into test (name) values('中国');

             首先,这里有一个字符串“中国”,客户端操作系统用ZHS16GBK对它进行编码,比如编成“167219”,并把它交给sqlplus程序,然后把它发送给Oracle数据库。

             接着,Oracle数据库收到一串编码“167219”,不是直接往数据库里一扔就完事的,它要问客户端操作系统:“请问你给我的这串代码是用什么格式编码的啊?”客户端操作系统怎么回答?它会这么回答:“编码格式请参照参数NLS_LANG”。Oracle数据库一看,NLS_LANG='ZHS16GBK',这个编码格式与Oracle数据库自身的编码格式“UTF8”不一样,然后就是Oracle数据库发挥自己专长的地方了,为什么呢?因为Oracle数据库有它自己的编码表,而且不是一张而是好多张编码表,它可以根据编码表对编码进行翻译和转码。这就好比Oracle数据库是一个翻译,它会好几国语言,牛人一个。像上面的这个情况,Oracle会把“167219”这串代码拿过来,根据参数NLS_LANG查ZHS16GBK编码表,找到对应这串代码的字符“中国”,然后再到UTF8编码表中查“中国”对应的编码,比如查到的结果是“3224678”。

             最后,将转码之后的编码“3224678”存放到Oracle数据库中去。

             为了进一步说明问题,我们再执行一条语句:

             select name from test;

             首先,Oracle数据库会从数据库中取出一串代码“3224678”。

             接着,Oracle数据库不是直接把这串代码交给sqlplus程序,它会多问一句:“代码串我是取出来了,它是UTF8编码格式的,请问sqlplus,你希望要什么编码格式的?”,sqlplus仍然会很爽快地告诉Oracle数据库:“编码格式请继续参照参数NLS_LANG”。Oracle数据库一看,ZHS16GBK跟UTF8又不一样,所以先查UTF8编码表,找到编码“3224678”对应的字符“中国”,再查ZHS16GBK编码表,找到“中国”对应的编码“167219”,然后就是把最后得到的这串编码“167219”交给sqlplus程序。

             最后,sqlplus直接把得到的这串编码扔给客户端操作系统,而操作系统只有ZHS16GBK编码表,它不会问得到的这串编码是什么格式的,只会直接到ZHS16GBK编码表中去查“167219”对应的字符是什么,并把它交给应用程序显示出来。这个显示的结果是“中国”。

             以上就是一个完整的从客户端编码并经过Oracle数据库转码存入数据库,然后从数据库取出并转码交给客户端显示的实验。

             从以上过程我们可以得出以下一些结论:

             1.对Oracle数据库存取起作用的是这些:客户端操作系统字符集、客户端操作系统参数NLS_LANG、服务端数据库字符集。

             2.对Oracle数据库不起作用的是服务端操作系统字符集。

             3.客户端操作系统只有一张编码表,与客户端字符集对应。

             4.Oracle数据库的字符集只有一个,并且固定,一般不改变。

             5.存放在Oracle数据库中的字符串的编码格式只有一个,它就是数据库的字符集所对应的编码格式。

             6.Oracle数据库有很多张编码表,可以在数据存入时将其它编码格式的编码转换为数据库字符集指定的格式,取出时从数据库字符集指定的格式转换为其它编码格式。

             7.整个架构中的转码只发生在Oracle数据库边界上,其它地方没有。

             8.Oracle是根据客户端操作系统的参数NLS_LANG与自己的字符集进行对照来确定是否需要进行转码的。

             最最重要的结论出来了:

             9.Oracle数据库如何选择字符集?只有一个原则,那就是这个字符集要包含数据库运行过程中所能存入的数据字符,通常作为中国人我们选择ZHS16GBK,如果想再保险一点,选择AL32UTF8。

             10.服务器操作系统选择什么字符集?这个字符集与数据库字符集一点关系都没有,只跟谁有关?操作系统管理员!所以它的选择原则是,系统管理员想选择什么就选择什么。

             11.客户端操作系统选择什么字符集?我是中国人,我用中文操作系统,所以我选择ZHS16GBK。建议中国人都选择ZHS16GBK。

             12.客户端操作系统参数NLS_LANG参数如何设置?这个只有一个设置方法,那就是与操作系统字符集相同。要不然会出问题的……

             最最最最重要的一句话:

             最好的,最不容易出字符集错误的就是:将数据库字符集、客户端字符集、客户端操作系统NLS_LANG参数三个地方作同样的设置。

             另外再记录一下EXP和IMP过程与字符集相关的事情。

             EXP时,起作用的有Oracle数据库的字符集和客户端操作系统参数NLS_LANG两项,这时服务器与客户端操作系统字符集都不起作用。如果客户端操作系统参数NLS_LANG与Oracle数据库的字符集相同,那就直接导出,不需要转码,并且导出文件的字符集与上述两项一样;如果客户端操作系统参数NLS_LANG与Oracle数据库的字符集不同,那么导出时Oracle数据库会将数据文件从Oracle数据库的字符集编码格式转码成客户端操作系统参数NLS_LANG指定的编码格式。总而言之一句话:导出文件的字符集格式与导出客户端操作系统参数NLS_LANG一定相同。

             IMP时,起作用的仍然是两项,一项是DMP文件第二第三字节指定的字符集,另外一项是Oracle数据库的字符集。两个相同就不需要转码,两个不同就转成Oracle数据库字符集指定的编码格式。

     

             最后记录我遇到的几个问题。

             1.我前段时间测试过在CentOS上安装Oracle11gR2,那时我设置过CentOS的字符集中“zh_CN.UTF-8”,并且安装中文字体,当时也确实能得到我想要的结果,那就是:我安装的Oracle数据库的字符集是中文字符集ZHS16GBK。为什么呢,因为Oracle数据库的字符集是默认地根据操作系统的字符集来的,并且我也就选择它的默认字符集。所以没有出错。

             但是,但是,现在我知道了,这个作为服务器的CentOS的字符集对Oracle数据库没有影响,所以现在让我再来一回去选择它是什么字符集,我会选择en_US.UTF-8,甚至en_US.US7ASCII。为什么呢,因为在shell界面显示中文确认是一个难题,所以管理CentOS,还是用英文吧,比较方便又对数据库没影响。随它去吧。

             2.英文操作系统安装中文字符集oracle数据库时,一定要注意在选择数据库字符集的时候慢一点,细心地选择一个ZHS16GBK或者AL32UTF8。

             3.DMP文件是US7ASCII字符集,要把它导入字符集是ZHS16GBK的数据库中去,如何操作?第一步:安装一个US7ASCII字符集的数据库(比如说9i);第二步,将DMP文件导入该数据库;第三步,设置导出客户端操作系统参数NLS_LANG=ZHS16GBK,然后导出;第四步,将后导出的DMP文件导入字符集是ZHS16GBK的数据库中去。理论上成功。需要做实验测试。

             4.曾经说到,一般情况下数据库的字符集在数据库安装好之后就不可以更改。那么如果万一领导说一定要改,怎么办?比如说原来的字符集是ZHS16GBK,非要让转成UTF8,有没有办法?答案是有的,但是,但是不一定会全部成功,这里有一个严格超集的概念,这个概念在这篇文章里不讲。答案是这么做,设置导出客户端操作系统参数为UTF8,然后导出,这里,数据编码格式会从ZHS16GBK转码成UTF8,然后再删除ZHS16GBK的数据库,新建一个UTF8的数据库,再导入就可以了。

    展开全文
  • oracle dmp导入(windows 本地数据库)

    千次阅读 2018-11-15 08:56:53
    基于上步操作进行导入。 1.win+r -->输入cmd(注意:这里是cmd窗口,不是sqlplus窗口!!!) 输入以下语句:   imp system/sys@localhost/ORCL file="C:\daochu.dmp" full=y ignore=...

    https://blog.csdn.net/a290450134/article/details/83113258

    基于上步操作进行导入。

    1.win+r -->输入cmd(注意:这里是cmd窗口,不是sqlplus窗口!!!)
    输入以下语句:
      
    
    imp system/sys@localhost/ORCL file="C:\daochu.dmp" full=y ignore=y


    *注意有可能或出现 1031错误,用system用户导入,可以忽略,数据比较大的情况下,会卡顿在导入sys数据位置,等几分钟即可。

     

    参数说明:
    
    system:登录数据库用户名;
    
    sys:登录数据库的密码;
    
    localhost:代表当前数据库的地址是本机,如果是远程导入,替换成对应的ip地址就行
    
    ORCL:是数据库实例
    
    file:是当前dmp文件存放的路径
    
    full=y,这个貌似是全部
    
    ignore=y,忽略一些错误
    展开全文
  • step1、首先知道你要导入数据库中的DMP文件(例如aa.dmp)是那个版本导出的(导出导入的版本要一致,当然11g的文件可以导出10g的DMP文件)。 step2、在sqlplus命令框中用sysdba管理员登录,connect sys/password as...
  • Oracle 导入数据库dmp文件的几种方式

    万次阅读 2017-04-30 10:02:36
    使用cmd命令进行导入进入cmd直接输入命令imp 用户名/密码@监听器路径/数据库实例名称 file='d:\数据库文件.dmp' full=y ignore=y 例如:imp mislogin/...使用Oracle的bin目录imp.exe导入打开Oracle主目录 E:\ap
  • linux 下oracle导入dmp文件

    万次阅读 2017-08-02 08:46:25
    linux 导dmp文件到oracle
  • oracle 11g导出的dmp数据导入oracle10g

    万次阅读 2011-11-25 08:35:16
    oracle 11g导出的dmp文件导入oracle10g  ...2.从网上查阅,oracle数据11g到10g是有问题的,一般由oracle10g客户端去连oracle11g进行导出数据操作然后导入oracle10g,如果手中只有oracle11g的dmp
  • 如何将dmp文件导入到自己的oracle数据库中

    万次阅读 多人点赞 2016-12-16 17:26:20
    1、首先,我们可以先建立自己的一个用户表...datafile 'D:\oracle\product\10.2.0\userdata\test.dbf' (这边可以写成oracle的某个路径下) size 50m (初始大小) autoextend on;(自动扩展) 2、接下来,我们
  • ivr.dmp是用在生产库上通过用户shhvydivr导出的,要将数据导入到本地ivr用户里面。命令如下: imp file=D:/f/ivr.dmp fromuser=shhbydivr touser=ivr userid=ivr/ivr_2009@orcl
  • oracle之cmd导入dmp文件

    万次阅读 2016-06-07 19:56:59
    打开cmd窗口,执行以下格式命令: imp 用户名/密码@服务器IP:端口/服务名 file=dmp文件路径 full=y 例子,这是我的: imp ZXXT/ZXXT@192.168.20.212:1521/orcl file=E:\运政执法数据\yz\yzdata.dmp full=y
  • Oracledmp导入一张表

    千次阅读 2019-07-10 21:40:45
    之前对整个数据库做的备份,但因误删除了一张表,需要从备份中恢复误删的表,如果直接导入dmp文件的话,因为数据量比较大,需要很长时间,那经过查找资料,可以使用命令从dmp导入一张表,以下是测试过的命令: ...
  • plsql导入.dmp步骤

    万次阅读 2017-10-13 22:43:20
    plsql导入.sql和.dmp文件时,会经常...1.导入.sql文件(sql文件是表结构文件,包含数据)工具->导入表 2.->sql插入 关于可执行文件,该文件位置在oracle的安装位置下 我的是:F:\app\Administrator\product\11.2
  • 公司的检测认证一直和zsj是一套数据库,之前也是在zsj的数据库上做的数据项检测,决定新迁出一套数据库来给检测认证,方便检测折腾。 1.先去新建oracle用户,记得分配权限(dba.resource,contect) 下面为新建的...
  • 导入dmp文件时,对于已存在的数据库实例及表处理方式:删除实例。 1.以管理员身份登录  sqlplus / as sysdba 2.停止实例  shutdown abort; 执行结果:ORACLE instance shut down. 3.启动实例 独占启动的选项是...
  • 1、Oracle12c导出dmp文件 2、直接导入Oracle10g提示如下错误 3、使用notepad工具打开Oracle10g导出的dmp文件版本号 4、使用AlxcTools.exe工具修改dmp文件版本号 5、再次进行导入Oracle10gm,成功...
  • 使用过oralce很多种导入导出的方式,pde,sql(导出支持blog格式),dmp格式,觉得.dmp最为方便,可以导出所有的表结构、数据、SEQ及存储过程等,下面就开始具体流程,并说明到如果表中没有数据时如何导入导入...
  • docker导入dmp文件到oracle容器

    千次阅读 2018-10-16 16:23:55
    docker的安装和oracle 镜像的... 这里讲下把 导入dmp文件导入oracle容器中 1. 上传文件 把dmp文件上传到服务器,然后在复制到oracle容器中 首先你先把文件上传到服务器,然后在cp到容器中 docker cp /...
  • Oracle12C导入dmp数据

    千次阅读 2018-08-13 11:28:23
    1.使用sqlplus连接Oracle,创建用户并授权  --启动sqlplus,使用sysdba连接  sqlplus / as sysdba  alter session set container=pdborcl;--切换会话到pdborcl,我的PDB名称  --剩下的步骤与11g等版本相同  ...
  • 转载于:http://hi.baidu.com/zhaotieqiang/blog/item/ac3e8c090fa576ba2fddd41f.html    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出
1 2 3 4 5 ... 20
收藏数 20,194
精华内容 8,077
关键字:

dmp导入不了数据 oracle