li
  当前位置:主页 > 性能优化 > 文章内容
li
GLOBAL_NAME相同的数据库中物化视图刷新问题(一)
来源: http://yangtingkun.itpub.net/  作者: yangtingkun    时间:2008-01-26   阅读:10  
本文章共2713字,分2页,当前第1页,快速翻页:
 

在数据库迁移时,无论采用物理备份还是逻辑备份的方式,经常会碰到源数据库和目的数据库同时存在的问题。本文简单讨论一下,在这种情况下,如果源数据库和目的数据库的物化视图都去主站点刷新数据,会发生什么情况。

首先看看物理备份生成的数据库对物化视图刷新产生的影响。


环境的建立这里就不描述了,可以参考下面这篇文章里面给出的步骤:http://yangtingkun.itpub.net/post/468/216990

注意,本文中的复制环境是通过上面给出的连接中的步骤建立的。而目的数据库的生成并没有采用链接中给出的EXP/IMP方式,而是采用了物理备份的方式建立。

Oracle的物化视图注册信息仅仅是通过GLOBAL_NAME来判断数据库的,而且对于复制得到的数据库,也不可能在主站点生成新的注册信息,这就是说,两个具有相同的GLOBAL_NAME的数据库中的物化视图在基表所在站点上共享相同的注册信息。

Oracle通过物化视图的注册信息和物化视图日志信息,使得一个物化视图日志可以支持多个物化视图的刷新。那么对于这种两个不同的物化视图但是共享相同注册信息的情况,Oracle的物化视图日志还能不能支持呢?其实我更关系倒不是快速刷新能否支持,而是Oracle能否区分出这是两个不同的数据库。

SQL> CONN YANGTK/YANGTK@TESTMV已连接。
SQL> EXEC DBMS_MVIEW.REFRESH('T1');

PL/SQL 过程已成功完成。

SQL> SELECT COUNT(*) FROM T1;

COUNT(*)
----------
12239

SQL> CONN YANGTK/YANGTK@TESTMV245已连接。
SQL> EXEC DBMS_MVIEW.REFRESH('T1')
BEGIN DBMS_MVIEW.REFRESH('T1'); END;

* 1 行出现错误:
ORA-12034: "YANGTK"."T1"
上的实体化视图日志比上次刷新后的内容新

ORA-06512:
"SYS.DBMS_SNAPSHOT", line 794
ORA-06512:
"SYS.DBMS_SNAPSHOT", line 851
ORA-06512:
"SYS.DBMS_SNAPSHOT", line 832
ORA-06512:
line 1


SQL> SELECT COUNT(*) FROM T1;

COUNT(*)
----------
12239

SQL> EXEC DBMS_MVIEW.REFRESH('T1', 'C')

PL/SQL 过程已成功完成。

IXDBA.NET社区论坛

SQL> EXEC DBMS_MVIEW.REFRESH('T1')

PL/SQL 过程已成功完成。

SQL> CONN YANGTK/YANGTK@TESTMV已连接。
SQL> EXEC DBMS_MVIEW.REFRESH('T1')
BEGIN DBMS_MVIEW.REFRESH('T1'); END;

* 1 行出现错误:
ORA-12034: "YANGTK"."T1"
上的实体化视图日志比上次刷新后的内容新

ORA-06512:
"SYS.DBMS_SNAPSHOT", line 794
ORA-06512:
"SYS.DBMS_SNAPSHOT", line 851
ORA-06512:
"SYS.DBMS_SNAPSHOT", line 832
ORA-06512:
line 1

从上面的简单测试就可以发现,虽然两个数据库共享了同一个注册数据库信息,但是由于Oracle还保存了上次刷新时刻,因此,只有一个物化视图可以正常刷新,而另一个物化视图刷新则会报错,这个物化视图如果需要进行快速刷新,必须首先执行完全刷新,而且一旦这个物化视图执行了快速刷新,则另一个物化视图刷新时会报错。这样就保证了物化视图数据的准确性。

SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

会话已更改。

SQL> COL OWNER FORMAT A10
SQL> COL MVIEW_SITE FORMAT A30
SQL> COL NAME FORMAT A5
SQL> COL MASTER 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

SQL> SELECT * FROM USER_BASE_TABLE_MVIEWS;

OWNER MASTE MVIEW_LAST_REFRESH_ MVIEW_ID
---------- ----- ------------------- ----------
YANGTK T 2006-10-19 14:50:19 5
YANGTK T1 2006-10-19 14:55:17 6

SQL> CONN YANGTK/YANGTK@TESTMV已连接。
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';



阅读更多内容1 · 2 · 下一页>>


  上一篇: 物化视图复制快速刷新的限制(二...   下一篇: GLOBAL_NAME相同的数据库中物化视...
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·物化视图复制快速刷新的限制(二...
·物化视图是否根据字段进行刷新(...
·物化视图是否根据字段进行刷新(...
·物化视图是否根据字段进行刷新(...
·在包含LONG类型的表上建立物化视...
·物化视图注册信息的清除
·建立物化视图所需权限(四)
·建立物化视图所需权限(三)
·建立物化视图所需权限(二)
·建立物化视图所需权限(一)
·GLOBAL_NAME相同的数据库中物化视...
·ORA-600(999)错误(二)
·物化视图刷新过程中出现的约束冲...
·ORA-600(999)错误(三)
·建立物化视图导致数据库实例崩溃
·小议物化视图与基表数据不一致的...
·物化视图的创建写法与刷新问题
·10203设置CURSOR_SHARING为SIMIL...
·小议物化视图与基表数据不一致的...
·包含复制环境的数据库迁移(二)
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接