Oracle expdp資料泵遠端匯出

Davis_itpub發表於2018-06-27


標題: Oracle expdp資料泵遠端匯出 

作者:lōττéry©版權所有[文章允許轉載,但必須以連結方式註明源地址,否則追究法律責任.]

 
expdp資料泵
優點:支援併發多執行緒方式可以遠端匯出,效能顯著提高,可開並行parallel=n,比exp/imp實用工具相比,匯出提高了10倍左右,匯入提高了5倍左右。能根據備份時收集的後設資料,自動建立使用者、表物件,支援作業、表空間備份方式。
缺點:需要在伺服器上面執行建立目錄授權, expdp、exp都支援遠端本地匯出 。
(exp不支援欄位型別,BINARY_DOUBLE雙精度二進位制浮點型別   number型別和浮點型別區別“number 十進位制,BINARY_DOUBLE二進位制(比number效率高,速度快,佔用空間小的優點.但版本相容性不好)”)
(expdp不支援網路鏈來載入long"儲存文字型別"列,exp支援long的匯出匯入)

當出現”DB所在空間不足需要跨機器匯出備份/恢復"時,需要用到expdp的遠端匯出,實現:只要在本地資料庫 執行建立public link和dir及給對應的許可權就可以將遠端DB匯出到本地路徑。

具體實驗如下,所有操作都在本地

SQL> create user test identified by test;
SQL> grant dba to test;
-->建立目錄 
SQL> create directory dump_dir AS 'E:\dump_dir';  
SQL> select  DIRECTORY_NAME,DIRECTORY_PATH from dba_directories where directory_name='DUMP_DIR';
OWNER    DIRECTORY_NAME   DIRECTORY_PATH
-----------------------------------------------------------------------------------------------------------------------------------------------------
SYS     DUMP_DIR    E:\dump_dir

-->建立DBLINK
SQL>  create public database link kfdb7 connect to 使用者 identified by "密碼" using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = XX.XX.XX.XX)(PORT = 1521埠號)))  (CONNECT_DATA =  (SERVER = DEDICATED)   (SERVICE_NAME = SID )  ) )'; 

-->驗證dblink 有效性
SQL> conn test/test
已連線。
SQL> select * from tab;

未選定行

SQL> select count(*) from base_dict@kfdb57;

  COUNT(*)
----------
      683 

****注意:要建立public database link 如果只建立 database link 只能再當前使用者下訪問連結庫資料,但匯出來報錯
ORA-39001: 引數值無效
ORA-39200: 連結名稱 "kfdb5" 無效。
ORA-02019: 未找到遠端資料庫的連線說明
具體解釋:
Use the CREATE DATABASE LINK statement to create a database link. A database link is a schema object in one database that enables you to access objects on another database. The other database need not be an Oracle Database system. However, to access non-Oracle systems you must use Oracle Heterogeneous Services.
After you have created a database link, you can use it to refer to tables and views on the other database. In SQL statements, you can refer to a table or view on the other database by appending @dblink to the table or view name. You can query a table or view on the other database with the SELECT statement. You can also access remote tables and views using any INSERT, UPDATE, DELETE, or LOCK TABLE statement.
To create a private database link, you must have the CREATE DATABASE LINK system privilege. To create a public database link, you must have the CREATE PUBLIC DATABASE LINK system privilege. Also, you must have the CREATE SESSION system privilege on the remote Oracle database.    Oracle Net must be installed on both the local and remote Oracle databases.

匯出命令:
E:\oracle\product\10.2.0\db_1\BIN>EXPDP.EXE test/test network_link=kfdb57 directory=DUMP_DIR1  dumpfile=base_dict.dmp tables='base_dict'
Export: Release 10.2.0.1.0 - Production on 星期一, 11 3月, 2013 17:51:56
Copyright (c) 2003, 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
啟動 "TEST"."SYS_EXPORT_TABLE_01":  test/******** network_link=kfdb57 directory=DUMP_DIR1 dumpfile=base_dict.dmp tables='base_dict'
正在使用 BLOCKS 方法進行估計...
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 64 KB
處理物件型別 TABLE_EXPORT/TABLE/TABLE
處理物件型別 TABLE_EXPORT/TABLE/INDEX/INDEX
處理物件型別 TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別 TABLE_EXPORT/TABLE/COMMENT
處理物件型別 TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . 匯出了 "SINOSOFT"."BASE_DICT"                      35.73 KB     683 行
已成功載入/解除安裝了主表 "TEST"."SYS_EXPORT_TABLE_01"
******************************************************************************
TEST.SYS_EXPORT_TABLE_01 的轉儲檔案集為:   E:\DUMP_DIR\BASE_DICT.DMP
作業 "TEST"."SYS_EXPORT_TABLE_01" 已於 17:54:09 成功完成

擴充套件:
將匯出得檔案匯入到本地資料庫命令:impdp.exe test/test directory=dump_dir1 dumpfile=base_dict.dmp tables=base_dict   REMAP_SCHEMA=sinosoft:test
檢視匯入情況:
SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
SYS_IMPORT_TABLE_01                TABLE

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
SYS_IMPORT_TABLE_01           TABLE   -->主表  在完成後資料庫會自動刪除主表(匯出失敗則否)
BASE_DICT                                  TABLE

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
BASE_DICT                      TABLE

SQL> select count(*) from base_dict;

  COUNT(*)
----------
       683

測試完畢後刪除dblink+ directory 
drop directory dump_dir ;
drop public database link kfdb57;  

擴充套件: 研究 - IMPDP [TRANSFORM=segment_attributes:n] [remap_tablespace] 2引數間影響關係  -->用於impdp+dblink有無預設表空間的資料存放到表空間的情況。

【源於本人筆記】 若有書寫錯誤,表達錯誤,請指正...


此條目發表在   EXP[DP]/IMP[DP] 分類目錄。將固定連線加入收藏夾。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31520497/viewspace-2156833/,如需轉載,請註明出處,否則將追究法律責任。

相關文章