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)以上步驟就完成了觸發器的修改


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM