zoukankan      html  css  js  c++  java
  • oracle impdp将导出用户的所有对象导入至另一个用户下,生成的触发器语句问题处理

    问题产生的操作步骤及详细说明:

    1)操作的数据库是oracle 11g,先通过命令将用户GAS_NEW的数据导出,命令语句如下:

    expdp GAS_NEW/GAS_NEW@ORCL schemas=GAS_NEW dumpfile=gas20180123.dmp DIRECTORY=CS_DB
    View Code

    2)将导出的数据导入至另一新建用户GAS下(含所有原GAS_NEW用户下的对象),命令参考如下:

    IMPDP GAS/GAS@ORCL DIRECTORY=CS_DB schemas=GAS_NEW dumpfile=gas20180123.dmp REMAP_SCHEMA=GAS_NEW:GAS

    以上语句的说明:需要导入用户是GAS,schemas设置为GAS_NEW的原因是:导出的用户为GAS_NEW。

    设置把原GAS_NEW用户的对象插入到新用户GAS下REMAP_SCHEMA=GAS_NEW:GAS

    3)以上步骤能够正常执行完毕,并且原用户GAS_NEW下的对象都迁移到新用户GAS下,但有一个触发器问题。以下语句是迁入后某个触发器的命令语句:

    DROP TRIGGER TR_FM_FILE_ATTR;
    
    CREATE OR REPLACE TRIGGER TR_FM_FILE_ATTR BEFORE INSERT
    ON GAS_NEW.FM_FILE_ATTR 
    FOR EACH ROW
    WHEN (
    NEW.ID 
    
     IS NULL OR NEW.ID 
    
     = 0
          )
    BEGIN   
      SELECT   SQ_FM_FILE_ATTR.NEXTVAL   INTO   :NEW.ID 
    
       FROM   DUAL;   
      END;
    /

    可以看出:触发器已成功在GAS用户下建立,但是内容语句却有问题,触发器仍然是创建给原用户GAS_NEW下的某个表上,需要改为当前用户GAS的表上。


    处理方式如下:

    1、利用toad工具去查看生成的触发器列表

    2)全选所有触发器,点右键'Create in another schema'

    3)点击‘OK’

    4)在弹出的框体中选中 ‘Script’ 选项卡

    5)‘全选’所有命令并复制出来,粘贴到记事本或其他编辑工具

    6)替换GAS_NEW为GAS,然后将调整后的语句拿去用户GAS下去执行并提交

    7)以上步骤就完成了触发器的修改

  • 相关阅读:
    hihoCoder#1128 二分·二分查找
    hihoCoder#1127 二分图三·二分图最小点覆盖和最大独立集
    hihoCoder#1122 二分图二•二分图最大匹配之匈牙利算法
    hihoCoder#1105 题外话·堆
    Ajax详细剖析
    web框架之--Tornado
    web框架之--先来个介绍
    前端之--Jquery-玩穿它!
    前端之--DOM详解应用
    前端之--JavaScript作用域--超细讲解
  • 原文地址:https://www.cnblogs.com/senyier/p/8334151.html
Copyright © 2011-2022 走看看