为了将Oracle迁移到MySQL,过程中需要做增量数据的记录。因此想了几种方案:
1. 如果表后面有modifydate这个字段的话,就可以按照这个字段来迁移表,将在dump时间之后修改的数据做迁移
2.在需要做增量迁移的表上建trigger,将insert,update,delete的操作记录下来。
3.用oracle自带的audit trail功能来做
接下来详细介绍一下audit trail
参考资料:http://www.oracle-base.com/articles/10g/auditing-10gr2.php
http://hi.baidu.com/sonmeika/item/7cc5f9311e8731b8633aff16
*打开audit trail的功能
SQL> conn /as sysdba
SQL> show parameter audit
SQL> alter system set audit_sys_operations=TRUE scope=spfile; --审计管理用户(以sysdba/sysoper角色登陆)
SQL> alter system set audit_trail=db,extended scope=spfile;
SQL> startup force;
SQL> show parameter audit
SQL>AUDIT insert,update,delete ON z7admin.service by access;//审计 插入,更新,删除
SQL>update service set license_limit = 200 where id = 0;
SQL>select * from sys.aud$;
audit trail相对于我们系统的缺点:
1.需要oracle 10之后才有的功能
2.因为迁移后的系统和以前的系统的表结构可能不同,列的个数有可能有所不同,因此用audit trail会有些错误
3.因为audit trial记录的语句有可能是多表关联的,因此在数据迁移的时候,就可能出现数据不一致的情况
经过测试,audit tail的性能和用trigger的性能差不多。
因此计划还是不用audit tail