根据对实体化视图的研究及昨天的设想, 花了大约一个早上的时间, 写了一个从Oracle复制到MySQL的Perl角本, 早上测试时还是比较有趣的. 在现在的角本中, 源表名和目标表名可以不一样, 但字段名必须一样.

    做测试时, 先开一个窗口, 运行刷新角本:

C:\AnySQL>perl refresh_mysql.pl -s anysql:anysql:test -t mysql:root:mysql:localhost:test -c myrefresh.conf
02/13 12:52:25 – 1 tables will be processed.
02/13 12:53:06 – Start replication from T_MVLOG to T_MVLOG with sequence 10196 to 10199 …
02/13 12:53:07 – End replication from T_MVLOG to T_MVLOG with sequence 10196 to 10199.
02/13 12:53:26 – Start replication from T_MVLOG to T_MVLOG with sequence 10200 to 10203 …
02/13 12:53:27 – End replication from T_MVLOG to T_MVLOG with sequence 10200 to 10203.
02/13 12:54:11 – Start replication from T_MVLOG to T_MVLOG with sequence 10204 to 10204 …
02/13 12:54:12 – End replication from T_MVLOG to T_MVLOG with sequence 10204 to 10204.
02/13 12:56:13 – Start replication from T_MVLOG to T_MVLOG with sequence 10205 to 10207 …
02/13 12:56:14 – End replication from T_MVLOG to T_MVLOG with sequence 10205 to 10207.
02/13 13:11:41 – Start replication from T_MVLOG to T_MVLOG with sequence 10208 to 10211 …
02/13 13:11:42 – End replication from T_MVLOG to T_MVLOG with sequence 10208 to 10211.

    在源端(Oracle)中插入一些记录, 并作查询:

SQL> SELECT * FROM T_MVLOG;

COL1                 COL2
——————– ——————————
MLOG$_T_MVLOG        TABLE
MV_T_MVLOG2          TABLE
RUPD$_T_MVLOG        TABLE
T_MVLOG              TABLE

    等了3-5秒钟后, 在目标端(MySQL)中进行查询:

mysql> select * from t_mvlog;
+—————+——-+
| COL1          | COL2  |
+—————+——-+
| MLOG$_T_MVLOG | TABLE |
| MV_T_MVLOG2   | TABLE |
| RUPD$_T_MVLOG | TABLE |
| T_MVLOG       | TABLE |
+—————+——-+
4 rows in set (0.00 sec)

    接下来事是要进行更多的测试, 以及进行压力测试. 就算玩玩的角本, 也有很多需要改进的地方.