由于产品系统需要进行一次跨平台的迁移,因此,只能通过EXP/IMP来实现。所幸的是需要迁移的数据库数据量不大,而且停机时间相对充裕。但是需要迁移的数据库已经部署了高级复制环境,打算进行一系列的测试,测试包含高级复制环境数据库在通过EXP/IMP工具迁移到新的环境中,复制环境是否生效。
这个例子是测试单主站点能否通过EXP/IMP进行顺利迁移。
包含复制环境的数据库迁移(一):http://yangtingkun.itpub.net/post/468/216990
在这个例子中,仍然使用上一篇文章中建立的RAC1.US.ORACLE.COM和TESTMV.US.ORACLE.COM作为复制环境的测试库。并在另一台服务器上建立额外的RAC1.US.ORACLE.COM,作为单主站点的EXP/IMP迁移目标库。
下面是复制环境的建立和第一篇中介绍的完全一致,这里不在重复了,下面进行导出导入测试:
下面就可以执行全库导出操作了:
$ exp "sys as sysdba" file=rac1_full.dmp full=y buffer=20480000 log=rac1_full.log compress=n
导出完毕后关闭迁移数据库。并修改物化视图站点中本地TNSNAMES.ORA中主站点信息,使其指向新的数据库。
将rac1_full.dmp通过ftp拷贝到迁移的目的服务器,并执行导入操作:
$ imp "sys as sysdba" file=rac1_full.dmp full=y buffer=20480000 ignore=y log=rac1_full.log toid_novalidate=(sys.aq$_jms_userproparray, sys.aq$_jms_text_message, system.repcat$_object_null_vector, ordsys.orddoc, ordsys.ordaudio, ordsys.ordvideo, ordsys.ordimagesignature, ordsys.ordimage)
导入操作为了避免大量的错误生成,采用了这篇文章中描述的过程进行了预处理:http://yangtingkun.itpub.net/post/468/221839
导入完成后,进行下面的测试:
SQL> CONN YANGTK/YANGTK@TESTMV已连接。
SQL> EXEC DBMS_MVIEW.REFRESH('T1')
PL/SQL 过程已成功完成。
SQL> CONN YANGTK/YANGTK@RAC1245已连接。
SQL> SELECT COUNT(*) FROM T1;
COUNT(*)
----------
12239
SQL> INSERT INTO T1 VALUES (12240, 1, 'TEST');
已创建 1 行。
SQL> COMMIT;
提交完成。
SQL> CONN YANGTK/YANGTK@TESTMV已连接。
www.ixdba.net
SQL> EXEC DBMS_MVIEW.REFRESH('T1')
PL/SQL 过程已成功完成。
SQL> SELECT COUNT(*) FROM T1;
COUNT(*)
----------
12240
通过测试结果,发现物化视图工作正常,但是进一步详细检查会发现:
SQL> CONN YANGTK/YANGTK@RAC1245已连接。
SQL> SELECT * FROM USER_REGISTERED_MVIEWS;
未选定行
发现物化视图的注册信息丢失了。而导出库是包含这个信息的:
SQL> CONN SYS@RAC1 AS SYSDBA输入口令: ****已连接到空闲例程。
SQL> STARTUP
ORACLE 例程已经启动。
Total System Global Area 5672248344 bytes
Fixed Size 750616 bytes
Variable Size 1375731712 bytes
Database Buffers 4294967296 bytes
Redo Buffers 798720 bytes数据库装载完毕。数据库已经打开。
SQL> CONN YANGTK/YANGTK@RAC1已连接。
SQL> COL OWNER FORMAT A10
SQL> COL MVIEW_SITE FORMAT A30
SQL> COL NAME FORMAT A5
SQL> SELECT OWNER, NAME, MVIEW_SITE FROM USER_REGISTERED_MVIEWS;
OWNER NAME MVIEW_SITE
---------- ----- ------------------------------
YANGTK T TESTMV.US.ORACLE.COM
YANGTK T1 TESTMV.US.ORACLE.COM
虽然物化视图注册信息丢失,但是USER_BASE_TABLE_MVIEWS视图中的信息还是存在的,这也是物化视图仍然可以刷新的原因。
SQL> CONN YANGTK/YANGTK@RAC1已连接。
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
会话已更改。
SQL> SELECT * FROM USER_BASE_TABLE_MVIEWS;
OWNER MASTER MVIEW_LAST_REFRESH_ MVIEW_ID