oracle 跨服务器推送视图_实现跨库可更新物化视图

本文介绍了如何在Oracle数据库中创建跨服务器的可更新物化视图,通过物化视图日志、数据库链接和快速/完全刷新来实现不同数据库实例之间的数据同步。详细步骤包括在源数据库创建基表、物化视图日志,目标数据库创建数据库链接和物化视图,以及测试刷新效果。
摘要由CSDN通过智能技术生成

物化视图较为常见的一种用法是,远程数据库中存放的基表数据作为本地数据库的更新数据源,以便实现多个数据库与同一个数据源进行同步。这便是一种数据分发的表现形式。这里给出这种实现这种跨库的可更新的物化视图的方法。要求在secdb数据库实例上创建可更新的物化视图mv_t,物化视图对应的基表数据存放在另外一套数据库实例secgc中。1.首先在secgc数据库实例上创建基表Tsecdb@secdb1 /home/oracle$ export ORACLE_SID=secgcsecgc@secdb1 /home/oracle$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Fri May 20 20:24:43 2011Copyright (c) 1982, 2005, Oracle.  All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> create user user_secgc identified by user_secgc;User created.SQL> grant connect,resource to user_secgc;Grant succeeded.SQL> conn user_secgc/user_secgcConnected.SQL> create table t (x varchar2(10));Table created.SQL> insert into t values ('secooler');1 row created.SQL> commit;Commit complete.SQL> select * from t;X----------2.在T表所在实例secgc上创建物化视图日志SQL> create materialized view log on t with rowid;Materialized view log created.3.在物化视图所在实例secdb上创建database linksecgc@secdb1 /home/oracle$ export ORACLE_SID=secdb1)调整global_names参数为FALSE此

步骤是为了防止在使用database

link时报ORA-02085错误。关于ORA-02085错误请参考文章《【DBLINK】“ORA-02085: database link

%s connects to

%s”故障排查及处理策略两则》(http://space.itpub.net/519536/viewspace-695851)。secdb@secdb1 /home/oracle$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Fri May 20 20:31:06 2011Copyright (c) 1982, 2005, Oracle.  All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> show parameter global_namesNAME                                 TYPE        VALUE------------------------------------ ----------- -------------global_names                         boolean     TRUESQL> alter system set global_names=FALSE;System altered.SQL> show parameter global_namesNAME                                 TYPE        VALUE------------------------------------ ----------- -------------global_names                         boolean     FALSE2)创建连接到secgc实例的database link(1)在本地secdb实例上创建到secgc实例的连接串secdb@secdb1 /home/oracle$ vi $ORACLE_HOME/network/admin/tnsnames.oraSECGC =(DESCRIPTION =(address = (protocol = tcp)(host = secdb1)(port = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = secgc)))(2)创建database linkSQL> create public database link dblink_to_secgc connect to user_secgc identified by user_secgc using 'SECGC';Database link created.4.在secdb实例上用户user_secdb下创建物化视图SQL> create user user_secdb identified by user_secdb;User created.SQL> grant connect,resource to user_secdb;Grant succeeded.SQL> conn user_secdb/user_secdbConnected.SQL> create materialized view mv_t refresh fast with rowid as select * from t@dblink_to_secgc;Materialized view created.5.对物化视图进行快速刷新和完全刷新1)快速刷新方法SQL> exec dbms_mview.refresh('mv_t','f');PL/SQL procedure successfully completed.2)完全刷新方法SQL> exec dbms_mview.refresh('mv_t','c');PL/SQL procedure successfully completed.6.测试物化视图刷新效果1)在基表T中插入一条数据secdb@secdb1 /home/oracle$ export ORACLE_SID=secgcsecgc@secdb1 /home/oracle$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Fri May 20 21:09:03 2011Copyright (c) 1982, 2005, Oracle.  All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> conn user_secgc/user_secgcConnected.SQL> select * from t;X----------secoolerSQL> insert into t values ('Andy');1 row created.SQL> commit;Commit complete.SQL> select * from t;X----------secoolerAndy2)对物化视图进行快速刷新(或完全刷新)前数据SQL> select * from mv_t;X----------secooler3)对物化视图进行快速刷新(或完全刷新)后数据SQL> exec dbms_mview.refresh('mv_t','f');PL/SQL procedure successfully completed.SQL> select * from mv_t;X----------secoolerAndy物化视图创建成功。7.小结通过一系列配置,我们便实现了跨库可更新物化视图。这里我们使用Database Link技术达到了“跨库”这个目的。Good luck.secooler11.05.20-- The End --

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值