oracle中的可移植表空間綜述

1.簡述oracle可移植表空間sql

oracle的可移植表空間特性經過將數據簡單地從一個數據庫移動到另外一個數據庫,提供了一種在數據庫之間有效移動大數據的簡易方法。數據庫

可移植表空間包括將屬於源數據庫的全部數據文件複製到目標數據庫,並將關於表空間的目錄信息從源數據庫導入到目標數據庫。所以,數據泵導出和導入實用程序是可移植表空間特性的必要部分。還能夠傳送屬於表的索引表空間,使整個數據移植很是地快。整個操做所花費的時間只比經過FTP、遠程複製或像磁帶備份那樣的方法,將表空間中的數據文件複製到新地點的時間稍長一些。服務器

2.在數據間移植表空間的主要步驟oracle

(1)選擇要移植的表空間(並確保與其它表空間的對象無依賴關係)。大數據

SQL> execute dbms_tts.transport_set_check('TEST01',true);  --檢測表空間test01是否知足自包含條件
PL/SQL procedure successfully completed.

所謂的自包含就是說要移植的表空間內的對象的引用完整性約束必定不能指向該表空間外的對象。spa

須要注意的是上面包中過程的執行必須擁有execute_catalog_role這個角色..net

也能夠查詢transport_set_violations這個表來確認表空間的依賴性,該表列出了表空間中所包含的表以及屬於不一樣表空間對象之間的引用。code

SQL> select * from transport_set_violations;
no rows selected

(2)生成移植表空間集。對象

在將表空間移植到目標數據庫以前,必須生成一個可移植表空間集。索引

可移植表空間集由表空間中全部數據文件和導出轉儲文件組成,導出轉儲文件包含了關於表空間的格式化的數據目錄信息。

首先要作的就是把表空間設置爲只讀:

SQL> alter tablespace test01 read only;
Tablespace altered.

導出表空間的目錄信息:

SQL> create directory exp_home as '/oracle/expdp';
Directory created.
$ expdp system/oracle directory=exp_home dumpfile=trans_test01.dmp transport_tablespace=test01 rows=n

將導出文件和表空間文件複製到目標數據庫:

能夠採用FTP,遠程複製的方式

(3)執行表空間的導入。這涉及將數據文件複製到目標服務器並將相關的元數據導入到目標數據庫中。

[oracle@oracle expdp]$ impdp scott/tiger directory=exp_home dumpfile=trans_test01.dmp transport_datafiles='test01.dbf'

相關文章
相關標籤/搜索