zoukankan      html  css  js  c++  java
  • exp/imp采用不同的表空间

    导出与导入后对象采用不同表空间的实现方法

    如果是整个表空间的 导出导入,则可直接采用可传输的表空间特性,具体步骤如下:

    1.先检测要导出的表空间:即检查该表空间的所有对象是否都在这个表空间中,如果有部分对象在别的表空间,则无法导出该表空间。

      采用sys.dbms_tts.transport_set_check过程进行检测

        BEGIN sys.dbms_tts.transport_set_check('bgmapdata',TRUE);END;

      执行好后,查看表transport_set_violations是否有记录,若有则表明有对象存在于别的表空间中

        select * from sys.transport_set_violations;

    总结:如果该表有记录,则必须对该表指出的这些对象重新置于本表空间中,否则会提示ora-29341:可传送集不是自包含的。

     检测成功后,在执行第二步

    2.将表空间置于只读状态

    alter tablespace bgmapdata READ only;
    3.执行导出操作
    EXP transport_tablespace=y tablespaces=(bgmapdata) file=d:\dd.dmp

    执行后提示输入用户,此时输入:sys/change_on_install@fd as sysdba

    注:1)执行可传输的表空间导出,必须采用sys用户,否则提示:

              EXP-00044: 必须以 'SYSDBA' 身份连接, 才能进行时间点恢复或可传输的表空间导入
              EXP-00000: 导出终止失败

          2)sys/change_on_install@fd as sysdba 该用户名密码不能直接在exp导出语句中写,如果写成          

             EXP userid=\'sys/change_on_install@fd as sysdba\' transport_tablespace=y tablespaces=(bgmapdata) file=d:\dd.dmp

             则提示 LRM-00112: 参数 'userid' 不允许有多个值

    4.拷贝dmp文件到需要导入的机器,如放在d盘下

    5.执行导入

       imp file=d:\dd.dmp  transport_tablespace=y datafiles=/home/oradba/ff.dbf

       同样会提示输入用户名,与导出的一样,采用sys用户

    但如果只是想导出表空间某几个表,而表空间又不一样,则执行步骤如下

    1.导出

      exp username/password@sid file=d:\xx.dmp tables=(table1,table2)

    2.拷贝dmp文件到目的机器

    3.在准备导入的库上先创建好要导入的表

       可以采用将源库上的创建表脚本导出后修改下表空间先创建好

    4.执行导入,导入时将错误忽略 ignore=y

      imp username/password@sid fromuser=username touser=username file=d:\xx.dmp ignore=y

     
  • 相关阅读:
    超酷图片压缩工具,就是不支持批量
    eclipse java热加载
    mysql 突然报错,连接不上
    svn问题终极解决办法
    svn经常困扰我的问题
    洛谷 P3628
    CodeForces 1091H
    委托的实际应用
    WPF 小知识点001
    C# 扩展方法一
  • 原文地址:https://www.cnblogs.com/lanzi/p/2417902.html
Copyright © 2011-2022 走看看