|
全库迁移、分区迁移、network_link迁移
一、全库迁移:
数据库全库迁移与imp/exp差不多,支持跨版本迁移,但是不支持windows与linux/unix跨平台迁移,因为两者路径书写方式不一致。全库迁移必须要保证源和目的数据库相关结构一致(主要是数据文件的目录)
1.首先在源库导出数据:
SQL> create directory expdir as 'd:\';
expdp '/ as sysdba' directory=expdir logfile=full.log full=y dumpfile=full_%U.dmp filesize=1024M job_name=hr exclude=schema:"in('scott')" parallel=2 --过滤掉scott用户的数据
2.目的库上导入数据:
(1)建立与源库相同的数据文件目录
(2)使用dbca或者手动建立新库:
(3)建立directory:
SQL> create directory expdir as 'd:\';
(4)把dmp文件拷贝到新库上的directory目录
(5)导入数据:
impdp '/ as sysdba' directory=expdir logfile=full.log full=y dumpfile=full_%U.dmp job_name=hr parallel=2
(6)编译无效对象
以dba角色登录,执行下列脚本:
SQL> @?\RDBMS\ADMIN\utlrp.sql
二、分区迁移:
数据泵分区迁移方法基本和传统工具一致,都需要目的数据库已经建立了相应的表空间,否则迁移失败。和之前exp/imp讨论的一样:分区表hr_event以end_time字段为分区键,每天的记录作为一个分区,每个分区对应一个表空间,对应一个数据文件。现在要导出2013年8月10日到8月26日的分区数据,如果把分区名写在tables参数里,由于分区较多,将会很麻烦,可以给query参数赋值,实现导出指定分区数据。
1.分区导出:
expdp hr/hr tables=hr_event directory=expdir dumpfile=hr_event.dmp logfile=hr.log parallel=2 query=hr_event:\"where end_time>=to_timestamp('2013-08-10 00:00:00','YYYY-MM-DD HH24:MI:SS') AND end_time=to_timestamp('2013-08-10 00:00:00','YYYY-MM-DD HH24:MI:SS') AND end_time=to_timestamp('2013-08-10 00:00:00','YYYY-MM-DD HH24:MI:SS') AND end_time=to_timestamp('2013-08-10 00:00:00','YYYY-MM-DD HH24:MI:SS') AND end_time |
|
|