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'