1. 程式人生 > >觸發器對IMP/IMPDP匯入結果的影響(一)

觸發器對IMP/IMPDP匯入結果的影響(一)

文章來自:http://blog.chinaunix.net/uid-22948773-id-2600970.html

首先看一下觸發器對IMP匯入結果的影響。

SQL> SHOW USER
USER 為 "ADMIN"
SQL> CREATE TABLE TEST(ID INT,NAME VARCHAR2(30));

表已建立。

SQL> INSERT INTO TEST VALUES(1,'YANSHOUPENG');

已建立 1 行。

SQL> COMMIT;

提交完成。

SQL> SELECT * FROM TEST;

        ID NAME
---------- ------------------------------
         1 YANSHOUPENG

SQL> host exp admin/admin file=test.dmp tables=test

Export: Release 10.2.0.1.0 - Production on 星期三 5月 11 10:11:27 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即將匯出指定的表通過常規路徑...
. . 正在匯出表                            TEST匯出了           1 行
成功終止匯出, 沒有出現警告。

首先建立一張表,並且插入一條記錄,將記錄匯出。

下面建立一個觸發器,每次插入的時候將NAME欄位自動加上'[huateng] '。

SQL> CREATE OR REPLACE TRIGGER EXP_TRIGGER
  2  BEFORE INSERT ON TEST
  3  FOR EACH ROW
  4  BEGIN
  5    :NEW.NAME:=:NEW.NAME||'[huateng] ';
  6  END;
  7  /

SQL> SELECT * FROM TEST;

        ID NAME
---------- ------------------------------
         1 YANSHOUPENG

SQL> INSERT INTO TEST VALUES(2,'YANSP');

已建立 1 行。

SQL> SELECT * FROM TEST;

        ID NAME
---------- ------------------------------
         1 YANSHOUPENG
         2 YANSP[huateng]

可以看到觸發器已經很好的發揮作用了。

下面看一下觸發器對IMP的影響。

SQL> DELETE TEST;

已刪除2行。

SQL> COMMIT;

提交完成。

SQL> SELECT * FROM TEST;

未選定行

SQL> host imp admin/admin file=test.dmp tables=test ignore=y

Import: Release 10.2.0.1.0 - Production on 星期三 5月 11 10:18:30 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

經由常規路徑由 EXPORT:V10.02.01 建立的匯出檔案
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的匯入
. 正在將 ADMIN 的物件匯入到 ADMIN
. 正在將 ADMIN 的物件匯入到 ADMIN
. . 正在匯入表                          "TEST"匯入了           1 行
成功終止匯入, 沒有出現警告。

SQL> SELECT * FROM TEST;

        ID NAME
---------- ------------------------------
         1 YANSHOUPENG[huateng]

我們原先匯出的檔案中的記錄是  :      
        ID NAME
---------- ------------------------------
         1 YANSHOUPENG

由於觸發器的原因,導致我們匯入的結果與原先不一致。

對於IMP匯入和普通的INSERT操作沒什麼太大的區別,因此出現這樣的結果也是正常的。

我們從V$SQLAREA檢視中,找到如下的SQL語句:

INSERT /*+NESTED_TABLE_SET_REFS+*/ INTO "TEST" ("ID", "NAME") VALUES (:1, :2)。


以上匯出的DMP檔案是通過常規路徑匯出的,下面看看通過直接路徑匯出TEST表,利用直接路徑匯出的檔案進行匯入是否會對結果有影響。
不過憑猜測也能想到,即使採用直接路徑匯出應該和非直接路徑匯出的結果一樣。因為EXP可以分直接路徑匯出和常規路徑,而IMP沒有直接路徑匯入。
不過還是測試一下。

SQL> DELETE FROM TEST;

已刪除 1 行。

SQL> COMMIT;

提交完成。

SQL> SELECT * FROM TEST;

未選定行

SQL> ALTER TRIGGER EXP_TRIGGER DISABLE;

觸發器已更改

SQL> INSERT INTO TEST VALUES(1,'YANSHOUPENG');

已建立 1 行。

SQL> COMMIT;

提交完成。

SQL> SELECT * FROM TEST;

        ID NAME
---------- ------------------------------
         1 YANSHOUPENG

SQL> ALTER TRIGGER EXP_TRIGGER ENABLE;

觸發器已更改

SQL> host exp admin/admin file=direct_admin.dmp tables=test direct=true

Export: Release 10.2.0.1.0 - Production on 星期三 5月 11 10:26:00 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即將匯出指定的表通過直接路徑...
. . 正在匯出表                            TEST匯出了           1 行
成功終止匯出, 沒有出現警告。

SQL> delete from test;

已刪除 1 行。

SQL> commit;

提交完成。

SQL> host imp admin/admin file=direct_admin.dmp tables=test ignore=y

Import: Release 10.2.0.1.0 - Production on 星期三 5月 11 10:26:40 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

經由直接路徑由 EXPORT:V10.02.01 建立的匯出檔案
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的匯入
. 正在將 ADMIN 的物件匯入到 ADMIN
. 正在將 ADMIN 的物件匯入到 ADMIN
. . 正在匯入表                          "TEST"匯入了           1 行
成功終止匯入, 沒有出現警告。

SQL> select * from test;

        ID NAME
---------- ------------------------------
         1 YANSHOUPENG[huateng]

可以看到,結果還是一樣。對於有觸發器表的IMP操作應該在匯入之前,將表的所有觸發器DISABLE掉,在匯入完成後,在啟用。

如下:

SQL> SELECT * FROM TEST;

        ID NAME
---------- ------------------------------
         1 YANSHOUPENG[huateng]

相關推薦

觸發器IMP/IMPDP匯入結果影響

文章來自:http://blog.chinaunix.net/uid-22948773-id-2600970.html 首先看一下觸發器對IMP匯入結果的影響。 SQL> SHOW USER USER 為 "ADMIN" SQL> CREATE TAB

javascript 面向象制作坦克大戰

.com 希望 2.4 案例 1.2 如果 20px js面向對象 應該   PS:這個坦克大戰是在網上下的一段源碼之後,自己進行的重寫。 寫這個的目的是為了鞏固自己這段時間對js的學習。整理到博客上,算是對自己近端時間學習js的一個整理。 同時也希望可以幫助到學習

Python進階---面向象的程序設計思想

anim 它的 代碼冗余 tell 汽水 處理流程 關系 apach 精準 thon的面向對象 一、面向過程與面向對象的對比 面向過程的程序設計的核心是過程(流水線式思維),過程即解決問題的步驟,面向過程的設計就好比精心設計好一條流水線,考慮周全什麽時候處理什麽東西。 優點

2014年8月25日,收藏家和殺手——面向象的C++和C

creat os x tracking -m end gin 知識 數據 我們 近期事情特別多,睡眠也都非常晚,有點精神和身體混亂的感覺,所以想寫寫技術分析文章。讓兩者的我都調整一下。這篇技術分析文章是一直想寫的,當前僅僅是開篇,有感覺的時候就寫寫,屬於拼湊而成,興

Java面向象編程之繼承

col end 分情況討論 讓我 重要 san 封裝 pub void 前言 Java語言有三大重要的特性,分別是繼承、多態和封裝。今天我們就來聊聊繼承,繼承是復用程序代碼的有力手段,使用繼承我們會少寫許多代碼,也可以讓我們在寫代碼的時候邏輯變得更加清楚。 繼承的基本語法

持有象——Java中的容器

接口 中移動 tex 結構 collect 成對 .get void 概念 泛型和類型安全的容器 使用Java SE5之前,編譯器允許向容器中插入不正確的類型,Java SE5引入泛型之後,應用預定義的泛型可以在編譯期防止將錯誤類型的對象放到容器中。 基本概念 Col

Python學習筆記八 面向象高級編程

tin 學習筆記 不可 __str__ 有一個 類的屬性 -- pes 實例名 參考教程:廖雪峰官網https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 一、使

如何用 Java PDF 檔案進行電子簽章概述及技術選型

參考: 一、 概述   印章是我國特有的歷史文化產物,古代主要用作身份憑證和行駛職權的工具。它的起源是由於社會生活的實際需要。早在商周時代,印章就已經產生。如今的印章已成為一種獨特的,融實用性和藝術性為一體的藝術瑰寶。傳統的印章容易被壞人、小人私刻;從而新聞鮮

ArcGIS 10.1Lidar支援的魔法力量

    近期研究ArcGIS對Lidar的支援,有一驚喜。像愛麗絲在夢遊仙境,發現了ArcGIS 10.1的神奇魔法!     之所以這麼說,是因為在Lidar支援方面,ArcGIS 10.1較ArcGIS 10來說,有了質的飛躍。     ArcGIS 10中,如果使用

Java 使用 Poi 匯入 Excel 通用

上一篇【Java實現從網頁上傳匯入excel資料到資料庫】一文中利用poi 匯入excel工具只是一個簡版,今天利用反射機制重新寫一個通用excel匯入工具類,可供大家參考使用 實現思路:        利用java反射機制把excel讀取出來的值

CSDN-markdown編輯器之從本機匯入Markdown檔案

  CSDN-markdown編輯器支援從本機匯入Markdown檔案的功能,如果你有從其它網站上下載的部落格文章或說明文件,或是用軟體編寫的部落格文章或說明文件,想釋出到CSDN部落格中,就可以使用本

“笨辦法學python”學習筆記-在終端powershell中目錄進行簡單的編輯

1.new-item -path c:/ -name 新建資料夾或檔案的名字 -type directory 意思是在C盤新建一個資料夾 new-item: 新建專案 -path:指定路徑 -name:檔案或資料夾的名字 -type directory:型別目錄,也就是資料夾,

國內軟體行業的看法

  對於目前國內應用軟體的發展情況,在很多媒體和網站上都有報道,在這裡就不想多說。這裡的軟體情況主要是根據個人觀點,談一下自己的想法。相對來說國內的應用軟體是比較難做的,而且質量不高,問題主要有幾個方面,第一個方面是國內客戶對軟體的認知,第二個是國內的人文體制,第三個是國內的

從C#談面向物件的理解點滴

1.覆蓋:類的成員宣告中,可以宣告與繼承而來的成員同名的成員。這是稱派生類的成員覆蓋了基類的成員。這是會有個警告,使用new 關鍵字可以關閉這個警告。2.Base保留字:Base關鍵字主要是為派生類呼叫基類成員提供一個簡寫的方法。 3.C#中的多型:多型的定義:同一操作作用於

科技大佬們人工智能的看法

紮克伯格 當前 mage 物理 如果 nvi ima text 霍金 人工智能的出現使得人們對人工智能廣為關註,而科技大佬們格外關註人工智能,因為人工智能是一個十分有意義的研究方向,在未來有著很大的發展,同時也能夠推動社會的發展以及人類的進步。那麽科技大佬對於人工智能有什

.net 4.0 中多執行緒新特性

      在.net 40中對多執行緒的處理增加了很多新的類以方便多執行緒環境下的程式設計實現,首先需要了解的是兩個非常有用的類Lazy<T>和ThreadLazy<T>,通過這兩個類我們可以很方便實現一個單例模式而不用考慮太多的執行緒安全的問題。

android回撥的理解

一 前言 從事開發n年了,對android回撥機制理解的還不是很透徹,我也是夠笨的,傷心!廢話不多說,現根據我自己的理解,來分析一下android回撥,大家一起來交流啊! 二 情景 雖然我很笨,但是本人

淺談多線程的理解

cpu 動態 tor 包裝 list star and jvm 周期 今天我們先來聊聊有關線程的話題...... 一. 線程概述 1. 簡單區分程序、進程和線程 程序是指一段靜態的代碼 進程是指正在執行的程序,將靜態的代碼運行起來 線程是指正在執行程序的

Spring IOC容器相關整理

1.IOC 控制反轉(Inversion of Control) 控制反轉是一種設計原則,用來降低程式碼之間的耦合性。其中最常見的方式叫做依賴注入(DI)通過控制反轉,物件在被建立的時候,系統內所有物件將通過配置檔案(XML,JavaCode,註解等...)配置的依賴的物件的引用傳遞給它。也可以說,依賴被注

cssie的相容性問題處理

本文轉載於:猿2048網站⇒css對ie的相容性問題處理(一): 1.在製作sidebar時對li裡面的元素進行浮動,li在ie