数据库中级教程:第十讲 数据库数据迁移

需求:系统升级导致数据库的变更,数据库的拆分等,业务的变化导致需要加载历史数据等
都会产生数据迁移的需求。

数据迁移的方案受影响的因素有同种数据库的不同版本之间的迁移,不同种数据库之间的迁移。
迁移数据量大小,迁移效率的限制等

exp/imp逻辑备份与恢复(常规备份)

它是oracle最常用最简单的方法,一般是基于应用的owner级做导出导入

优点是可以跨平台使用;
缺点是停机时间长,停机时间为从exp到网络传输到新库,再加上imp的时间。

storage存储迁移
方法简介

这种情况下,数据文件、控制文件、日志文件、spfile都在存储上(一般情况下是裸设备),我们可以直接把存储挂到新机器上,然后在新机器上启动数据库。

操作方法:将老库的pfile(因为里面有指向裸设备的spfile链接),tnsnames.ora,listener.ora,密码文件传到新库的对应位置。将存储切至新机,或者用文件拷贝或dd的方式复制数据文件,启动数据库。

优缺点:优点是该迁移方式非常简单,主要的工作是主机工程师的工作,dba只需配合即可,停机时间为停库、切存储、起库的时间;缺点是要求新老库都是同一平台,是相同的数据库版本。

用rman做迁移
方法描述

rman比较适合于跨文件系统的迁移,如同平台下的不同文件系统。

利用dataguard迁移
方法描述

用dg我们不仅可以用来做容灾,物理的dg我们还可以作为迁移的方式。

优缺点:优点是停机时间短,停机时间为switch over的时间;缺点是主机必须双份、存储必须双份。

表空间迁移
优点:在数据量很大的情况下,有效率上的优势。
缺点:源库与目标库必须是oracle.

表空间迁移技术可以非常高效的完成数据的迁移任务,所用时间基本等于物理拷贝数据文件的时间。不过有一些具体环境的限制,在真正使用之前,需要进行严格的测试。

将完成表空间迁移过程中需要注意的事项列一下,如果不全,请大家补充。
【注意事项一】:导入之前,目标数据库中用户必须已经存在存在。
【注意事项二】:导入之前,目标数据库中不能存在同名的表空间,如迁移同名的表空间,需要对迁移之前的源数据库或待迁入数据库中的表空间改名。
【注意事项三】:导出前需要将表空间置为“只读状态”
【注意事项四】:需要以SYSDBA权限完成表空间迁移
【注意事项五】:表空间需要“自包含”,不符合“自包含”的情况如下
(1)【索引】表空间TBS_SEC_D上存在索引,但是这个索引的基表在另外一个表空间上(后面的实验将会演示违反这种约束的情况);
(2)【LOB】表存储在表空间TBS_SEC_D上,但是表上的LOB字段存储在其他表空间上;
(3)【约束】表的约束有的在表空间TBS_SEC_D上,但是其他的约束在另外的表空间上;
(4)【分区表】分区表的一些分区在表空间TBS_SEC_D上,但是其他的其他的分区在另外的表空间上;