1. 程式人生 > >使用impdp實現資料在不同使用者、不同例項之間快速複製

使用impdp實現資料在不同使用者、不同例項之間快速複製

宣告:本文是參考secooler的《同一資料庫例項不同使用者間資料遷移複製——NETWORK_LINK引數》(http://space.itpub.net/519536/viewspace-631571)而成,特此感謝!

在實際開發和運維中,我們經常遇到這樣的需求:把一個schema、一個tablespace或者某些資料表的結構和內容轉移到另一個數據schematablespace或者另一個例項上。

實現這種需求的方法有很多。比較常用的就是使用exp/expdp工具將指定資料來源的資料匯出,成.dmp格式檔案。之後指向目標資料來源,利用imp/impdp工具匯入。本文介紹一種方式,使用impdp工具的network_link

引數,實現資料在同例項或者異例項之間的靈活的快速複製。

Exp/imp工具是Oracle早期(Oracle Release 5)推出的一種資料匯出匯入工具,因其簡單實用的優點,一直具有很強的生命力。但是隨著海量資料時代的到來,以及Oracle新特性的不斷引入,exp/imp工具的不適應性逐漸顯現。於是,Oracle10g中,推出了了資料泵(Data Dumpexpdp/impdp元件,作為新一代資料管理元件。

總的來說,資料泵Data Dump元件具有如下的特點:

ü        相對於前一代的exp/imp工具,Data Dump具有更好的效能和可管理特性;

ü        Data Dump

是一個服務端工具,而不是在Oracle客戶端;

ü        具有匯入匯出作業中斷/重新開始的控制功能;

ü        支援網路network工作模式;

ü        可以在作業中斷後重新啟動;

ü        操作物件範圍更加靈活;

ü        提供了多種方式呼叫的API組織;

回到本文要實現的任務,首先我們進行環境準備和檢視。當前系統為Oracle 11gR2環境。

//建立一個實驗Tablespace

SQL> create tablespace test datafile '/u01/oradata/WILSON/datafile/test.dbf' size 100m extent management local

  2  uniform. size 1m;

Tablespace created

SQL> select * from v$tablespace;

TS# NAME             INCLUDED_IN_DATABASE_BACKUP

------------------------------ --------------------------- ------- ------------ -----------------

   0 SYSTEM                         YES                  

   1 SYSAUX                         YES                   

   2 UNDOTBS1                    YES                      

  4 USERS                          YES                 

   10 TEST                           YES                    

(篇幅原因,有省略

10 rows selected

建立物件test

SQL> create user Test identified by test default tablespace TEST temporary tablespace TEMP;

User created

SQL> grant connect to test;

Grant succeeded

SQL> grant resource to test;

Grant succeeded

任務詳細描述:將schema scott下的所有物件包括資料,複製給test使用者schema。同時,將這些物件對應的表空間從原來的users,變換為表空間test

實現這個任務目標,需要按照兩個步驟:

1、為了使用impdp工具的network_link引數,要建立指向資料來源的Database Link物件;

2、使用impdp工具的命令列等模式進行操作;

下面,我們根據步驟來進行:

建立Database Link

Oracle Database Link的介紹,請參考《分散式資料庫元件——Database Link》)(http://space.itpub.net/17203031/viewspace-687469)中相應的介紹。這裡強調一個重點就是,建立Database Link時,using子句後面的命名連線名稱,是要求在資料庫伺服器上的tnsname.ora檔案中建立。而不是在使用者客戶端機器上建立的命名。

首先,構建本地服務名,手工改寫tnsname.ora

[[email protected] admin]$ cat tnsnames.ora

# tnsnames.ora Network Configuration File: /u01/oracle/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

WILSON =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle11g)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = wilson)

    )

  )

本例項是從wilson導向到wilson,所以指向自身就可以了。如果是向不同例項資料庫進行匯入,就需要在目標例項上進行建立databaselink的操作。此處的本地服務命名就是指向源資料庫命名。

下面就是建立Database Link

//資料庫連線Database Link建立語句

create public database link TO_SELF

  connect to system identified by system

  using 'wilson';

含義:建立一個Database Link,連線到本地命名服務名為“wilson”的資料庫例項上,使用system使用者登入,密碼為system

測試Database Link的情況。

//使用To_Self名稱連線

SQL> select count(*) from [email protected]_self;

  COUNT(*)

----------

     72470

進行命令列匯入

匯入操作之前,我們先觀察一下scott下資料物件的情況。

SQL> select table_name, tablespace_name from dba_tables where wner='SCOTT';

TABLE_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

DEPT                           USERS

EMP                            USERS

SALGRADE                       USERS

T2                             USERS

T1                             USERS

BONUS                          USERS

6 rows selected

SQL> select index_name, tablespace_name from dba_indexes where wner='SCOTT';

INDEX_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

PK_DEPT                        USERS

PK_EMP                         USERS

此時,我們有兩個問題需要解決,首先是如何將scott使用者的資料錶轉變為test使用者,另一個是如何將users表空間變換為test表空間。

此處我們介紹impdp工具的兩個引數:remap_schemaremap_tablespace。這兩個引數分別實現將特定Schema、特定表空間的轉換對映。利用這兩個引數,可以定義轉換規則。

下面開始進行匯入:

[[email protected] admin]$ impdp system/system network_link=to_self schemas=scott remap_schema=scott:test remap_tablespace=users:test

Import: Release 11.2.0.1.0 - Production on Thu May 5 07:51:00 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

UDI-28002: operation generated ORACLE error 28002

ORA-28002: the password will expire within 7 days

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SYSTEM"."SYS_IMPORT_SCHEMA_01":  system/******** network_link=to_self schemas=scott remap_schema=scott:test remap_tablespace=users:test

Estimate in progress using BLOCKS method...

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 192 KB

Processing object type SCHEMA_EXPORT/USER

ORA-31684: Object type USER:"TEST" already exists

Processing object type SCHEMA_EXPORT/SYSTEM_GRANT

Processing object type SCHEMA_EXPORT/ROLE_GRANT

Processing object type SCHEMA_EXPORT/DEFAULT_ROLE

Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Processing object type SCHEMA_EXPORT/TABLE/TABLE

. . imported "TEST"."DEPT"                                    4 rows

. . imported "TEST"."EMP"                                    14 rows

. . imported "TEST"."SALGRADE"                                5 rows

. . imported "TEST"."BONUS"                                   0 rows

. . imported "TEST"."T1"                                      0 rows

. . imported "TEST"."T2"                                      0 rows

Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Processing object type SCHEMA_EXPORT/TABLE/COMMENT

Processing object type SCHEMA_EXPORT/VIEW/VIEW

ORA-39082: Object type VIEW:"TEST"."V_T1" created with compilation warnings

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

Job "SYSTEM"."SYS_IMPORT_SCHEMA_01" completed with 2 error(s) at 07:52:18

這樣,我們就實現了匯入。Impdp引數中,首先需要輸入指定的使用者名稱和密碼,之後表示將scott schema下的資料庫物件,通過Network_linkTo_Self匯入到目標資料庫例項上。在schema方面,如果是scott的物件,全部轉化為test使用者。在tablespace方面,如果是users表空間的物件,全部轉化到test表空間。

下面我們觀察下實驗結果:

SQL> select table_name, tablespace_name from dba_tables where wner='TEST';

TABLE_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

DEPT                           TEST

EMP                            TEST

SALGRADE                       TEST

T2                             TEST

T1                             TEST

BONUS                          TEST

6 rows selected

SQL> select index_name, tablespace_name from dba_indexes where wner='TEST';

INDEX_NAME                     TABLESPACE_NAME

------------------------------ ------------------------------

PK_DEPT                        TEST

PK_EMP                         TEST

匯入成功。

這種方法的優勢很多,特別是在進行同例項資料物件拷貝方面,network_link可以幫助我們提高工作效率。

ü        直接使用impdp進行匯入。避免了使用dmp檔案的過渡過程;

ü        藉助impdp新一代工具,可以更有效的提高複製速度;

ü        定製靈活的匯入對映規則,滿足更多個性化的複製需求;

對新工具、新特性的勇於嘗試,可以讓我們的生活變得更輕鬆。

相關推薦

使用impdp實現資料不同使用者不同例項之間快速複製

宣告:本文是參考secooler的《同一資料庫例項不同使用者間資料遷移複製——NETWORK_LINK引數》(http://space.itpub.net/519536/viewspace-631571)而成,特此感謝! 在實際開發和運維中,我們經常遇到這樣的需求:把一個

Nginx部署虛擬主機(不同域名不同端口不同IP地址)

mar 互聯 login 網站 支持 一個 http useradd log 介紹 Nginx是一款輕量級的HTTP服務器軟件,由俄羅斯的Igor Sysoev開發。它能夠支持高達50000個並發連接數的響應,擁有強大的靜態資源處理能力,運行穩定,並且系統資源消耗非常低,

區分編譯器不同版本不同作業系統的巨集

在編寫跨平臺的程式碼時,我們往往需要用到條件編譯的巨集,以便讓同一套程式碼相容編譯器不同版本、不同作業系統,下面就介紹下這些巨集。 區分編譯器不同版本的巨集 每個編譯器都會自帶一些預定義巨集,以下拿gcc和VC++舉例: 在編譯器眾多的預定義巨集中

MODBUS-RTU資料幀格式報文例項

MODBUS-RTU報文模型 裝置地址 功能程式碼 資料格式 CRC校驗L CRC校驗H 8bit 8bit N*8bit 8bit 8bit

VS2010 實現資料夾瀏覽遍歷所有檔案

 while (bResult)  {   bResult = finder.FindNextFile();   //判斷是否是目錄或者是隱藏檔案,又或者是".."和".",如果是,進入下一輪迴圈   if(finder.IsDirectory()|| finder.IsDots() || finder.Is

PostGIS+QGIS+GeoServer+OpenLayers實現資料的儲存服務的釋出以及地圖的顯示

標題比較長,主要呢是實現以下幾點: 1、將shp資料匯入到PostGIS中; 2、Geoserver釋出WMS服務; 3、Openlayers呼叫Wms服務 首先,下載安裝軟體。 為方便大家下載,我將所有軟體上傳的百度網盤裡了,有需要的可以上網盤直接下載,地址為:http

用Gson實現json與物件list集合之間的相互轉化

                先寫一個Person實體類,匯入Gson包                 String jsonData="{\"userid\":\"1881140130\"}";//第一種寫法                 //1.把json轉化為一

mysql的兩張表之間快速複製資料

資料庫有兩張表mystudent,myteacher,這兩張表的結構,欄位數目都不一致,現在我需要將一張的表的資料放入另一張表,手動複製效率低下,容易出錯,所以利用sql語句來幫我們完成。 如果我們需要將myteacher的資料全部插入到mystudent可以這樣編寫sql語句

python實現跨excel的工作表sheet之間複製

python,將test1的Sheet1通過“跨檔案”複製到test2的Sheet2裡面。 包括谷歌沒有能搜出這種問題答案。 我們貼出程式碼。 我們載入openpyxl這個包來解決: from openpyxl import load_workboo

vue學習十一(prop傳不同 v-bind 動態賦值單向資料prop校驗)

區域性註冊 在這些情況下,你可以通過一個普通的 JavaScript 物件來定義元件: var ComponentA = { /* ... */ } 然後在 components 選項中定義你想要使用的元件: new Vue({ el: '#app',

借鑑drawable資料夾,使用dimens控制字型大小邊距大小。適配Android不同機型,不同螢幕

以前一直是個Get使用者,一直都是伸手黨,最近剛好專案中要用到機型適配,試了很多方法(配置不同layout資料夾,不同的layout檔案等)。但都感覺後期維護工作量巨大,後來從圖片資源適配獲得靈感,使用value不同的dimens檔案,達到適配的效果: 1、建立不同的點陣圖

Pytorch 定義MyDatasets實現多通道分別輸入不同資料

最近在做一個專案,用雙通道神經網路,每個通道輸入不同資料訓練,具有相同label。開始沒想到如何實現,網上很多例子都是單通道,即便找到雙通道的例子,兩個通道的輸入也相同。 最後,終於想到了一個辦法。多輸入和單輸入其實是一樣的,只需要重新改寫torch.

Backblaze根據他們手中的歷史資料,對不同品牌容量的機械硬碟進行了一番對比

日前,國外雲備份服務公司Backblaze根據他們手中的歷史資料,對不同品牌、容量的機械硬碟進行了一番對比,得出結論稱無論故障率還是壽命,日立最好,西數其次,希捷第三,同時還宣稱企業級硬碟反而不如消費級產品更可靠。 這自然引發了極大的爭論,那麼各大硬碟品牌真的可以如此排序麼

原創:samba實現不同許可權進入不同資料

要實現的效果: 共享資料夾:user1, user2, user3, group1, group2 1、使用者user1屬於組group1; 使用者user2屬於組group1和組group2;使用

利用maven的resourcesfilter和profile實現不同環境使用不同配置檔案

在我們平常的java開發中,會經常使用到很多配製檔案(xxx.properties,xxx.xml),而當我們在本地開發(dev),測試環境測試(test),線上生產使用(product)時,需要不停的去修改這些配製檔案,次數一多,相當麻煩。現在,利用maven的filter和profile功能,我們可實現在

不同通道載入不同彈幕資料實現方法

前言 這個需求如題,大體上是將文章的評論資料,在文章的首圖上面以彈幕的形式出現。當時在做這個需求的時候,花了挺多精力的,踩了很多坑,現將彈幕的實現思路寫出來,如果喜歡的話可以點波贊/關注,支援一下,希望大家看完本文可以有所收穫。 實現原理: 實現彈幕的原理,並不算太複雜,耗費一些時間,懟一懟應該都可以做出來。

實現點擊圖片不同區域響應不同的事件

位置 轉換 unit 點擊 yun 單元 cgpoint use float 最近有一個遙控器的項目, 需要實現點擊圖片上指定位置響應不同事件 圖片如下: 大概目的是點擊圖片上的溫度可以直接改變空調溫度 大概思路就是先通過gesture獲取點擊的點坐標, 然後對坐標做處

Eclipse4.7使用基礎 快捷鍵 alt + 左右箭頭 實現當前打開的不同文件間的切換

右箭頭 clip ima 快捷鍵 切換 優秀 箭頭 nbsp 學習 os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0) 初始狀態   當前

Spring Boot+Profile實現不同環境讀取不同配置

images alt quest color ive 作用 讀取 ron 總結 文件結構如下: 但是官方推薦放在config文件夾下。 作用: 不同環境的配置設置一個配置文件,例如:dev環境下的配置配置在application-dev.properties中。p

shiro多realm驗證之——shiro實現不同身份使用不同Realm進行驗證(轉)

manager 數據表 edi 用戶驗證 clas tails oauth false bject 轉自: http://blog.csdn.net/xiangwanpeng/article/details/54802509