使用impdp複制Oracle的schema數據遷移

使用impdp複制Oracle的schema數據遷移

測試環境如下:

源: windows 2003, oracle 10202

目標:windows 2000, oracle 10203

注:文中的schema和user是一個概念。

impdp 的數據源既可以是expdp 導出來的DMP文件,也可以是一數據庫,通過network_link 參數來指定數據源,schemas 參數說明要複制的用戶,remap_schemas 參數說明源用戶與目標用戶的匹配關系,remap_tablepace 來調整原 schemas 使用的表空間與目標數據庫用戶要表空間的對應關系。這樣,基本上可以把源schema的數據導入到目標數據庫。格式如下:

impdp user/password parfile=parfile.log

**********parfile.log 的內容***************

network_link=目標數據庫上的數據庫鏈。

schema=源數據庫上導出數據的用戶。

remap_schema=源用戶:目標用戶。

remap_tablespace=源用戶使用的表空間:目標用戶將使用的表空間(包括臨時表空間)。

**********parfile.log 的內容***************

過程舉例:

在目標數據庫上創建數據庫鏈,指向源數據庫,數據庫鏈中連接的用戶必須具備EXP_FULL_DATABASE角色的權限。 例:

A、新建數據庫鏈裏的用戶,授予create session 和使用users 空間的權限,

SQL> create user link identified by "1";

用戶已創建。

SQL> grant create session to link;

授權成功。

SQL> ALTER USER LINK QUOTA UNLIMITED ON USERS;

用戶已更改。

B、爲該用戶創建一表,用于測試複制用戶過程。

SQL> CREATE TABLE LINK.DOC_TYPE AS SELECT * FROM INFO.DOC_TYPE;

表已創建。

SQL> SELECT TABLE_NAME FROM DBA_TABLES WHERE OWNER='LINK';

TABLE_NAME

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

DOC_TYPE

C、使用該用戶來創建數據庫鏈。

SQL> create public database link tolink connect to link identified by "1" using '37ZHS';

數據庫鏈接已創建。

D、使用該鏈來複制link用戶,報 ORA-39149: cannot link privileged user to non-privileged user

錯誤。

d:\oracle\product\10.2.0\db_1\BIN>impdp network_link=tolink schemas=link remap_schema=link:link2

Import: Release 10.2.0.2.0 - Production on Wednesday, 07 March, 2007 16:51:37

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

Username: / as sysdba

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production

With the Partitioning, OLAP and Data Mining options

ORA-31631: privileges are required

ORA-39149: cannot link privileged user to non-privileged user

F、授予 exp_ful_database 權限後,複制成功。

SQL> grant exp_full_database to link;

授權成功。

d:\oracle\product\10.2.0\db_1\BIN>impdp network_link=tolink schemas=link remap_schema=link:link2

Import: Release 10.2.0.2.0 - Production on Wednesday, 07 March, 2007 16:54:30

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

Username: / as sysdba

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production

With the Partitioning, OLAP and Data Mining options

FLASHBACK automatically enabled to preserve database integrity.

Starting "SYS"."SYS_IMPORT_SCHEMA_01": /******** AS SYSDBA network_link=tolink schemas=link remap

_schema=link:link2

Estimate in progress using BLOCKS method...

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 64 KB

Processing object type SCHEMA_EXPORT/USER

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/TABLESPACE_QUOTA

Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Processing object type SCHEMA_EXPORT/TABLE/TABLE

. . imported "LINK2"."DOC_TYPE" 8 rows

Job "SYS"."SYS_IMPORT_SCHEMA_01" successfully completed at 16:54:52

又如,在兩數據庫間複制用戶:

A、源數據庫是上面例子中的LINK,

B、目標數據庫是10203版本,要將源中的LINK複制到目標中的LINK2中。

SYS@BTB>create public database link tolink connect to link identified by "1" using '37zhs';

數據庫鏈接已創建。

SYS@BTB>SELECT * FROM TAB@TOLINK;

TNAME TABTYPE CLUSTERID

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

DOC_TYPE TABLE

F:\oracle\product\10.2.0\db_1\BIN>impdp network_link=tolink schemas=link remap_schema=link:link2

Import: Release 10.2.0.3.0 - Production on 星期三, 07 3月, 2007 17:36:32

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

用戶名: / as sysdba

連接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production

With the Partitioning, OLAP and Data Mining options

自動啓用 FLASHBACK 以保持數據庫完整性。

啓動 "SYS"."SYS_IMPORT_SCHEMA_03": /******** AS SYSDBA network_link=tolink schemas=link remap_sch

ema=link:link2

正在使用 BLOCKS 方法進行估計...

處理對象類型 SCHEMA_EXPORT/TABLE/TABLE_DATA

使用 BLOCKS 方法的總估計: 64 KB

處理對象類型 SCHEMA_EXPORT/USER

處理對象類型 SCHEMA_EXPORT/SYSTEM_GRANT

處理對象類型 SCHEMA_EXPORT/ROLE_GRANT

處理對象類型 SCHEMA_EXPORT/DEFAULT_ROLE

處理對象類型 SCHEMA_EXPORT/TABLESPACE_QUOTA

處理對象類型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

處理對象類型 SCHEMA_EXPORT/TABLE/TABLE

. . 導入了 "LINK2"."DOC_TYPE" 8 行

作業 "SYS"."SYS_IMPORT_SCHEMA_03" 已于 17:40:14 成功完成

F:\oracle\product\10.2.0\db_1\BIN>

SYS@BTB>select * from all_users order by 3;

USERNAME USER_ID CREATED

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

SYSTEM 5 2006-11-19 10:27:12

SYS 0 2006-11-19 10:27:12

OUTLN 11 2006-11-19 10:27:18

DIP 19 2006-11-19 10:34:16

TSMSYS 21 2006-11-19 10:44:48

DBSNMP 24 2006-11-19 10:48:58

WMSYS 25 2006-11-19 10:51:52

MGMT_VIEW 53 2006-11-19 11:41:09

SCOTT 54 2006-11-19 11:43:42

SCOTT2 62 2007-03-01 14:50:06

LINK2 63 2007-03-07 17:39:34

從LINK2的創建時間可以知道,該用戶是剛創建的。

從以上兩個例子中大家可以看出,不論是在兩數據庫間,還是在同一數據庫裏複制SCHEMAS,都必須

使用network_link,才能說明是在複制數據。

2."remap_schema=源用戶:目標用戶" 中的目標用戶可以事先創建。

.net2.0中使用SqlBulkCopy進行大批量數據遷移
在.Net1.1中無論是對于批量插入整個DataTable中的所有數據到數據庫中,還是進行不同數據源之間的遷移,都不是很方便。而在.Net2.0中,SQLClient命名空間下增加了幾個新類幫助我們通過DataTable或DataReader批量遷移數...查看完整版>>.net2.0中使用SqlBulkCopy進行大批量數據遷移
 
Oracle數據庫中使用DBMS_PROFILER進行調優
Oracle數據庫中使用DBMS_PROFILER進行調優
在進行數據庫調優時,代碼的性能瓶頸至關重要,Oracle數據庫提供的DBMS_PROFILER包可以特別方便的發現瓶頸的所在之處。 DBMS_PROFILER在使用之前可能需要安裝,具體安裝步驟如下: ◆1:執行$ORACLE_HOME/rdbms/admi...查看完整版>>Oracle數據庫中使用DBMS_PROFILER進行調優
 
使用Oracle的擴展SQL跟蹤數據的方法
使用擴展SQL跟蹤數據來了解是什麽在耗費這麽長的時間。   假如有一天你開車去上班,但最後還是沒能及時參加一個重要...查看完整版>>使用Oracle的擴展SQL跟蹤數據的方法
 
使用Oracle的擴展SQL跟蹤數據的方法
  使用擴展SQL跟蹤數據來了解是什麽在耗費這麽長的時間。  假如有一天你開車去上班,但最後還是沒能及時參加一個重要會議。你無法將你的革命性的想法呈現給客戶,所以他們也不會采用。你的拖拖拉拉使你感到沮喪,...查看完整版>>使用Oracle的擴展SQL跟蹤數據的方法
 
使用Jakarta POI EXCEL API自動生成ORACLE數據字典的源代碼
在項目的開發過程中,數據字典的維護是一件煩瑣的事情.所以我寫了一段代碼來自動生成數據字典.其中用到Jakarta POI,這是一個用于訪問Microsoft Format Files的開源項目,詳細信息請看這裏.下面是程序的源代碼及說明imp...查看完整版>>使用Jakarta POI EXCEL API自動生成ORACLE數據字典的源代碼
 
Oracle中通過存儲過程中返回數據集及在Delphi中使用
一、使用存儲過程返回數據集Oracle中存儲過程返回數據集是通過ref cursor類型數據的參數返回的,而返回數據的參數應該是out或in out類型的。由于在定義存儲過程時無法直接指定參數的數據類型爲:ref cursor,而是首先...查看完整版>>Oracle中通過存儲過程中返回數據集及在Delphi中使用
 
使用VB6.0訪問ORACLE數據庫
首先要安裝ORACLE客戶端或服務器端,建好DB以及SERVICE,連接成功後就可以開始了,以下是VB訪問ORACLE的代碼:Option Explicit'以下是一些變量以及參數的定義'DB的名稱Public Const strdbname = "DBNAME"'用戶名Public C...查看完整版>>使用VB6.0訪問ORACLE數據庫
 
使用Oracle數據庫高級複制中最簡單的功能
這篇論壇文章(賽迪網技術社區)根據一個實例著重講解了使用Oracle數據庫高級複制功能的具體方法及步驟,詳細內容請參考下文: 前言 日益增長的分布式應用需求要求實現更好分布式的軟件環境,不斷推動著分布式技術的...查看完整版>>使用Oracle數據庫高級複制中最簡單的功能
 
詳細講解IBM DB2的數據複制和遷移方法
以下方法經測試,在環境IBM x346,3.2G×2,4G,RAID 1,DB2 V8.2.4,Win2000 Adv Server,DMS表空間中,數據的load速度在60-100萬條/min左右。 背景: 需要更改數據庫表空間,或者需要將數據庫中所有表的數據遷移到一個新...查看完整版>>詳細講解IBM DB2的數據複制和遷移方法
 
 
回到王朝網路移動版首頁