1.简述oracle可移植表空间
oracle的可移植表空间特性通过将数据简单地从一个数据库移动到另一个数据库,提供了一种在数据库之间有效移动大数据的简易方法。
可移植表空间包括将属于源数据库的所有数据文件复制到目标数据库,并将关于表空间的目录信息从源数据库导入到目标数据库。因此,数据泵导出和导入实用程序是可移植表空间特性的必要部分。还可以传送属于表的索引表空间,使整个数据移植非常地快。整个操作所花费的时间只比通过FTP、远程复制或像磁带备份那样的方法,将表空间中的数据文件复制到新地点的时间稍长一些。
2.在数据间移植表空间的主要步骤
(1)选择要移植的表空间(并确保与其它表空间的对象无依赖关系)。
SQL> execute dbms_tts.transport_set_check('TEST01',true); --检测表空间test01是否满足自包含条件
PL/SQL procedure successfully completed.
所谓的自包含就是说要移植的表空间内的对象的引用完整性约束一定不能指向该表空间外的对象。
需要注意的是上面包中过程的执行必须拥有execute_catalog_role这个角色.
也可以查询transport_set_violations这个表来确认表空间的依赖性,该表列出了表空间中所包含的表以及属于不同表空间对象之间的引用。
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'