Oracle在线重定义(Online redefinition)让数据库管理者显著提升了自由度,为他们提供了一种优雅的方法去做数据迁移和模式更新。简而言之,在线重新定义是可以完成结构变化的复杂表,而不影响系统上的任何业务活动。
以前,当迁移数据或修改表结构时,一般是使用数据库风险暂停来封锁表和索引,然后再使用备份和恢复来完成数据库操作,这既要花费大量的时间,又能带来很多问题。Oracle on-line redefinition的出现把这项工作变得容易和便捷。
Oracle在线重定义使用一种独特的“改造”技术把表从一个模式改造为另一个模式,而不需要阻断其他用户的访问,也不会有任何停止应用程序的秒钟。在整个重定义更新期间,Oracle会以复制的方式把表和其他相关对象更新,同时提供回滚期间对外用户的dml操作。
Oracle on-line redefinition可以用下面的脚本完成:
BEGIN
DBMS_REDEFINITION.START_REDEF_TABLE(‘SCHEMA’,’TABLE_NAME’,’NEW_TABLE_NAME’,’N’, ‘Y’,10000000);
END;
/
DBMS_REDEFINITION.SYNC_INTERIM_TABLE(‘SCHEMA’,’TABLE_NAME’,’NEW_TABLE_NAME’);
/
DBMS_REDEFINITION.FINISH_REDEF_TABLE(‘SCHEMA’,’TABLE_NAME’,’NEW_TABLE_NAME’);
/
使用Oracle on-line redefinition,数据库管理者可以轻松快速更新数据库模式,节省大量的时间精力,大大提高系统的可用性。同时,它还可以把典型的多小时的服务器维护期间压缩到几分钟,从而使数据库管理者可以拥有更多的自由度。