暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle数据泵导入导出数据

巴韭特锁螺丝 2024-10-20
3

数据泵是10g推出的功能,个人倒数据比较喜欢用数据泵。

其导入的时候利用remap参数很方便转换表空间以及schema,并且可以忽略服务端与客户端字符集问题(exp/imp需要排查字符集)。

数据泵也有不方便的地方,如果远程导出导入,必须安装数据库服务端(client不行);需要在数据库中创建一个路径directory(dba_directories);并且主流工具支持exp/imp的导入导出(plsql developer),所以发现数据泵流行程度没有想象中高。

以下简单介绍schema的导入导出

以schema方式导出生产库用户下所有对象,并导入测试库。

注:eamdb为生产库,eamprd为生产库用户,密码为eamprd

eamuat为测试库,eamprduat为测试库用户,密码为eamprduat

一、生产库的导出(以sqlplus命令行的方式)。

 1.以sys或者system用户身份登录生产数据库。

 2.创建schema导出路径(DUMP_DIR名称可替换),并在dba_directories中查看

    create directory DUMP_DIR as ‘/xxx/xxx’;
    select * from dba_directories;
    复制

     3.把导出路径与导出权限授权给eamprd,如果用system等高级帐号导出,则不用。

      grant read,write on directory DUMP_DIR to eamprd;
      grant exp_full_database to eamprd;
      复制

       4.退出sqlplus,在oracle系统用户下运行,导出对应的SCHEMA,推荐第二种。

      复制代码

        expdp eamprd/eamprd@eamdb DIRECTORY=DUMP_DIR DUMPFILE=eamdb.dmp
        expdp system/xxxx@eamdb directory=dump_dir dumpfile=eamdb.dmp schemas=eamprd
        复制

            导出重点参数:

            版本:高往低需加version=xx.x  导出某些张表tables=xxxx  content=metadata_only(只要结构)   content=data_only(只要数据)

         5.把eamdb.dmp拷贝到测试库。

        二、测试库的导入

         1.以sys或者system身份登陆测试库。 

         2.建立导入表空间和临时表空间(名称、路径、表空间大小,请自行替换)。

          create tablespace tbs_EAMUAT datafile '/xxxx/xxxxx/EAMUAT.DBF' size 10240M autoextend on next 1024M maxsize 20480M;
          create temporary tablespace EAMUAT_TEMP tempfile '/xxx/xxx/EAMUAT_TEMP.DBF' size 5120M;
          复制

           3.建立用户及赋予权限(也可以不建立用户),导入时最好给予用户dba权限,以防导入时创建某些对象权限不够,注意需要回收其对users表空间的权限。

            create user eamprduat identified by eamprduat default tablespace tbs_EAMUAT temporary tablespace EAMUAT_TEMP;
            grant connect,resource,create view,create session,dba to eamprduat;
            revoke unlimited tablespace from eamprduat;
            alter user eamprduat quota unlimited on tbs_EAMUAT;
            复制

             4.建立导入路径(把eamdb.dmp放在此路径下),并授权。

              create directory DUMP_DIR as '/xxxxx/xxxxx';
              grant read,write on directory DUMP_DIR to eamprduat;
              复制

               5.导入数据(在oracle系统用户下运行),注意remap_schema参数,请自行替换

                impdp eamprduat/eamprduat@eamuat DIRECTORY=DUMP_DIR DUMPFILE=eamdb.dmp LOGFILE=impdp.log remap_schema=eamprd:eamprduat;
                复制

                 导入重点参数:

                remap_schema=eamprd:eamprduat,eamxxx:xxx,xxx:xxx

                remap_tablespace=eamdev:eamxxx,eamxxx:xxx,xxx:xxx

                table_exists_action=replace(替换)append(追加)

                exclude=table_statistics 此参数是取消对表的统计信息收集,如果表太多,不取消的话特别慢,之后可以手动收集,或等oracle自动收集。

                execute dbms_stats.gather_table_stats(ownname=>'USERNAME',tabname=>'TABLE_NAME',cascade=>TRUE) 

                如导入报错:ORA-31684: Object type USER:"xxxxx" already exists,不用理会,因为之前建立了用户。

                也可以在导入的语句中直接remap一个不存在的用户,会自动生成,其密码和权限与导出时候一样,但其表空间如果不想用users,必须手工创建。

                  版权声明:本文内容来自博客园:积极向上的徐先生,遵循CC 4.0 BY-SA版权协议上原文接及本声明。
                  本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。
                  原文链接:https://www.cnblogs.com/livebetter/p/9248568.html
                  如有涉及到侵权,请联系,将立即予以删除处理。
                  在此特别鸣谢原作者的创作。
                  此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。
                  复制


                  文章转载自巴韭特锁螺丝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论