使用impdp實現資料在不同使用者、不同例項之間快速複製
宣告:本文是參考secooler的《同一資料庫例項不同使用者間資料遷移複製——NETWORK_LINK引數》(http://space.itpub.net/519536/viewspace-631571)而成,特此感謝!
在實際開發和運維中,我們經常遇到這樣的需求:把一個schema、一個tablespace或者某些資料表的結構和內容轉移到另一個數據schema、tablespace或者另一個例項上。
實現這種需求的方法有很多。比較常用的就是使用exp/expdp工具將指定資料來源的資料匯出,成.dmp格式檔案。之後指向目標資料來源,利用imp/impdp工具匯入。本文介紹一種方式,使用impdp工具的network_link
Exp/imp工具是Oracle早期(Oracle Release 5)推出的一種資料匯出匯入工具,因其簡單實用的優點,一直具有很強的生命力。但是隨著海量資料時代的到來,以及Oracle新特性的不斷引入,exp/imp工具的不適應性逐漸顯現。於是,Oracle10g中,推出了了資料泵(Data Dump)expdp/impdp元件,作為新一代資料管理元件。
總的來說,資料泵Data Dump元件具有如下的特點:
ü 相對於前一代的exp/imp工具,Data Dump具有更好的效能和可管理特性;
ü Data Dump
ü 具有匯入匯出作業中斷/重新開始的控制功能;
ü 支援網路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_schema和remap_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_link:To_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的resources、filter和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