创建物化视图组

本章说明了如何创建一个物化视图组,在一个偏远的物化视图复制站点。

本章包含以下主题:

之前建立物化视图的环境中,你必须设置你的主站点,创建一个主组,并设置您想要的物化视图站点。另外,如果冲突是有可能在主站点由于活动在您所创建的物化视图站点,然后配置解决冲突的物化视图主表之前创建的物化视图组。

创建物化视图集团概述

设置完成后,您的物化视图站点,创建至少一个主组,您就可以在一个偏远的物化视图站点创建的物化视图组。图5-1说明了这个过程创建一个物化视图组。

另请参见:

第2章,“创建复制站点”建立一个物化视图站点的信息,见 第3章,“创建Master Group”(主组)“的信息,创建一个主组。

图5-1创建物化视图组

图5-1说明如下
说明图5-1创建物化视图组“

创建物化视图组

本章将指导您通过创建两个物化视图组在两个不同的物化视图站点:mv1.worldmv2.world的过程:

  • 物化视图组在mv1.world的基础上的hr_repg在的orc1.world主站点的主组中的对象。

  • 的物化视图在mv2.world组的物化视图组在hr_repgmv1.world物化视图站点中的对象的基础上。

因此,本章中的示例说明了如何创建一个多层物化视图的环境中,有一个或多个物化视图是基于其他物化视图。

完成以下步骤来创建这两个实体化视图组。

注:

如果您正在查看这个在线文档,然后你就可以复制的文本的开始“脚本”行后,这说明“结束脚本”行到一个文本编辑器中,然后编辑文字,创建一个脚本,为您的环境。
/ *************************的脚本开始********************* *********

创建物化视图集团mv1.world,

完成以下步骤来创建物化视图的hr_repg组的mv1.world物化视图站点。这是基于实体化视图组在orc1.world主站点上的hr_repg的主组。


第1步创建物化视图日志在主站点。

如果你想要一个你的主站点,以支持物化视图站点,那么你就需要一个物化视图复制到每一个主表创建物化视图日志。从图2-1orc1.world作为目标的mv1.world物化视图站点的主站点的回忆。所需的物化视图日志必须建立在orc1.world的

* /

SET ECHO ON

SPOOL create_mv_group.out

将人力资源/小时@ orc1.world的

创建的MATERIALIZED VIEW LOG ON hr.countries;
创建的MATERIALIZED VIEW LOG ON HR.DEPARTMENTS;
CREATE MATERIALIZED VIEW LOG ON HR.EMPLOYEES;
创建的MATERIALIZED VIEW LOG ON hr.jobs;
CREATE MATERIALIZED VIEW LOG ON hr.job_history];
创建的MATERIALIZED VIEW LOG ON hr.locations;
创建的MATERIALIZED VIEW LOG ON HR.REGIONS;

/ *

另请参见:

这条SQL语句的详细信息在 Oracle数据库SQL参考  CREATE  MATERIALIZED  VIEW  LOG语句

步骤2如果他们不存在,则创建复制的模式和它的数据库链接。

在建立物化视图组,您必须确保复制的模式存在物化视图站点在远程和必要的数据库链接已创建。

在这个例子中,如果HR模式不存在,则创建架构。如果人力资源的架构已经存在的物化视图站点,然后给予必要的权限,并在此步骤中的下一个任务。

* /

CONNECT SYSTEM / MANAGER @ mv1.world

CREATE TABLESPACE demo_mv1
 DATAFILE'demo_mv1.dbf'SIZE 10M AUTOEXTEND ON
 EXTENT MANAGEMENT LOCAL AUTOA​​LLOCATE;

CREATE TEMPORARY TABLESPACE temp_mv1
 TEMPFILE'temp_mv1.dbf'SIZE 5M AUTOEXTEND ON;

CREATE USER小时的IDENTIFIED BY小时;

ALTER USER小时DEFAULT TABLESPACE demo_mv1
              QUOTA UNLIMITED ON demo_mv1;

更改USER小时TEMPORARY TABLESPACE temp_mv1的;

授 
  CREATE SESSION, 
  CREATE TABLE, 
  CREATE PROCEDURE, 
  CREATE SEQUENCE, 
  CREATE TRIGGER, 
  CREATE VIEW, 
  CREATE SYNONYM, 
  ALTER SESSION,
  创建物化视图,
  ALTER ANY MATERIALIZED VIEW,
  CREATE DATABASE LINK
 人力资源;

/ *
 
  

如果它不存在,则创建的数据库链接复制的模式。

在建立物化视图组,你必须确保必要的数据库链接存在复制的模式。雇主的物化视图需要一个数据库链接指向的proxy_refresher时创建的主网站成立。

* /

将人力资源/小时@ mv1.world的

CREATE DATABASE LINK orc1.world“ 
   CONNECT TO proxy_refresher IDENTIFIED BY proxy_refresher;

/ *

第3步创建的物化视图组

物化视图在远程物化视图站点管理员必须执行下列程序。

* /

连接mviewadmin / mviewadmin @ mv1.world

/ *

主组的gname参数中指定的,你是复制目标主站点的名称相匹配的主组。

* /

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPGROUP(
      的gname =>'hr_repg
      主=>'orc1.world
      propagation_mode =>'异步');
END;
/

/ *

第4步创建刷新组

同时被刷新物化视图被添加到一个特定的刷新组。这将确保相关的物化视图刷新组之间的事务一致性。

* /

BEGIN
   DBMS_REFRESH.MAKE(
      =>'mviewadmin.hr_refg“
      列表=>'', 
      的next_date => SYSDATE, 
      间隔=>'SYSDATE + 1/24,
      implicit_destroy => FALSE, 
      rollback_seg =>'',
      push_deferred_rpc = TRUE, 
      refresh_after_errors => FALSE);
END;
/

/ *

第5步添加对象的物化视图组。

主表的基础上创建的物化视图。

每当你创建的物化视图的物化视图的查询表的所有者,总是指定架构名称。在下面的实施例中,被指定为每个查询中的表的雇主小时

* /

创建物化视图hr.countries_mv1 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.countries @ orc1.world的;

创建物化视图hr.departments_mv1 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM HR.DEPARTMENTS的orc1.world;

创建物化视图hr.employees_mv1 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT *,从HR.EMPLOYEES @ orc1.world;

创建物化视图hr.jobs_mv1 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.jobs @ orc1.world;

创建物化视图hr.job_history_mv1 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.job_history @ orc1.world;

创建物化视图hr.locations_mv1 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.locations的orc1.world;

创建物化视图hr.regions_mv1 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM HR.REGIONS的orc1.world;

/ *

将对象添加到物化视图组

* /

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      oname实现=>'countries_mv1
      =>“快照”,
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      oname实现=>'departments_mv1
      =>“快照”,
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      oname实现=>'employees_mv1
      =>“快照”,
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      oname实现=>'jobs_mv1
      =>“快照”,
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      oname实现=>'job_history_mv1
      =>“快照”,
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      oname实现=>'locations_mv1
      =>“快照”,
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      oname实现=>'regions_mv1
      =>“快照”,
      min_communication => TRUE);
END;
/

/ *

第6步将对象添加到刷新组

所有的物化视图组对象,你可以添加到刷新组刷新的同时,相关的物化视图之间保持参照完整性。

* /

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.countries_mv1“
      宽松的=> TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.departments_mv1“
      宽松的=> TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.employees_mv1“
      宽松的=> TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.jobs_mv1“
      宽松的=> TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.job_history_mv1“
      宽松的=> TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.locations_mv1“
      宽松的=> TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.regions_mv1“
      宽松的=> TRUE);
END;
/

/ *

创建物化视图集团mv2.world,

完成以下步骤来创建物化视图的hr_repg组的mv2.world物化视图站点。这个物化视图是基于物化的hr_repg的视图组的mv1.world物化视图站点。


第1步创建物化视图日志在主物化视图站点。

如果您希望您的主物化视图站点,以支持另一种物化视图站点,那么你需要创建物化视图日志被复制到另一种物化视图站点为每个物化视图。回想一下图2-1mv1.world作为目标主内化视图站点的mv2.world物化视图站点。所需的物化视图日志必须建立在mv1.world的

* /

将人力资源/小时@ mv1.world的

创建物化VIEW LOG ON hr.countries_mv1;
创建物化VIEW LOG ON hr.departments_mv1;
创建物化VIEW LOG ON hr.employees_mv1;
创建物化VIEW LOG ON hr.jobs_mv1;
创建物化VIEW LOG ON hr.job_history_mv1;
创建物化VIEW LOG ON hr.locations_mv1;
创建物化VIEW LOG ON hr.regions_mv1;

/ *

另请参见:

这条SQL语句的详细信息在 Oracle数据库SQL参考  CREATE  MATERIALIZED  VIEW  LOG语句

步骤2如果他们不存在,则创建复制的模式和它的数据库链接。

在建立物化视图组,您必须确保复制的模式存在物化视图站点在远程和必要的数据库链接已创建。

在这个例子中,如果HR模式中不存在,则创建架构。如果HR模式中已经存在的物化视图站点,然后在此步骤中的下一个任务。

* /

CONNECT SYSTEM / MANAGER @ mv2.world
CREATE TABLESPACE demo_mv2
 DATAFILE'demo_mv2.dbf'SIZE 10M AUTOEXTEND ON
 EXTENT MANAGEMENT LOCAL AUTOA​​LLOCATE;

CREATE TEMPORARY TABLESPACE temp_mv2的
 TEMPFILE'temp_mv2.dbf'SIZE 5M AUTOEXTEND ON;

CREATE USER小时的IDENTIFIED BY小时;

ALTER USER小时DEFAULT TABLESPACE demo_mv2
              QUOTA UNLIMITED ON demo_mv2;

更改USER小时TEMPORARY TABLESPACE temp_mv2的;

授 
  CREATE SESSION, 
  CREATE TABLE, 
  CREATE PROCEDURE, 
  CREATE SEQUENCE, 
  CREATE TRIGGER, 
  CREATE VIEW, 
  CREATE SYNONYM, 
  ALTER SESSION,
  创建物化视图,
  ALTER ANY MATERIALIZED VIEW,
  CREATE DATABASE LINK
 人力资源;

/ *

如果它不存在,则创建的数据库链接复制的模式。

在建立物化视图组,你必须确保必要的数据库链接存在复制的模式。雇主的物化视图需要一个数据库链接指向的proxy_refresher时创建的主物化视图站点建立了。

* /

将人力资源/小时@ mv2.world的

CREATE DATABASE LINK mv1.world“ 
   CONNECT TO proxy_refresher IDENTIFIED BY proxy_refresher;

/ *

另请参见:

步骤 6的更多信息创建代理主物化视图站点用户

第3步创建的物化视图组

物化视图在远程物化视图站点管理员必须执行下列程序。

* /

连接mviewadmin / mviewadmin @ mv2.world

/ *

的复制组中指定的gname参数必须与您要复制的复制组的目标主物化视图站点的名称。

* /

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPGROUP(
      的gname =>'hr_repg
      主=>'mv1.world
      propagation_mode =>'异步');
END;
/

/ *

第4步创建刷新组

同时被刷新物化视图被添加到一个特定的刷新组。这将确保相关的物化视图刷新组之间的事务一致性。

* /

BEGIN
   DBMS_REFRESH.MAKE(
      =>'mviewadmin.hr_refg“
      列表=>'', 
      的next_date => SYSDATE, 
      间隔=>'SYSDATE + 1/24,
      implicit_destroy => FALSE, 
      rollback_seg =>'',
      push_deferred_rpc = TRUE, 
      refresh_after_errors => FALSE);
END;
/

/ *

第5步添加对象的物化视图组。

创建的物化视图的基础上的主物化视图。

每当你创建的物化视图是基于另一个物化视图的物化视图的查询物化视图的所有者,总是指定架构名称。在下面的例子中,被指定为每个查询的物化视图的所有者小时

* /

创建物化视图hr.countries_mv2 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.countries_mv1 @ mv1.world的;

创建物化视图hr.departments_mv2 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.departments_mv1 @ mv1.world的;

创建物化视图hr.employees_mv2 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.employees_mv1 @ mv1.world的;

创建物化视图hr.jobs_mv2 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.jobs_mv1 @ mv1.world的;

创建物化视图hr.job_history_mv2 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.job_history_mv1 @ mv1.world的;

创建物化视图hr.locations_mv2 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.locations_mv1 @ mv1.world的;

创建物化视图hr.regions_mv2 
  REFRESH FAST PRIMARY KEY FOR UPDATE 
  AS SELECT * FROM hr.regions_mv1 @ mv1.world的;

/ *

物化视图添加到物化视图组

* /

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      ONAME =>'countries_mv2
      =>“快照”,
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      ONAME =>'departments_mv2
      =>“快照”,
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      ONAME =>'employees_mv2
      =>“快照”,
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      ONAME =>'jobs_mv2
      =>“快照”,
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      ONAME =>'job_history_mv2
      =>“快照”,
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      ONAME =>'locations_mv2
      =>“快照”,
      min_communication => TRUE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MVIEW_REPOBJECT(
      的gname =>'hr_repg
      SNAME =>'小时',
      ONAME =>'regions_mv2
      =>“快照”,
      min_communication => TRUE);
END;
/

/ *

第6步将对象添加到刷新组

所有的物化视图组对象,你可以添加到刷新组刷新的同时,相关的物化视图之间保持参照完整性。

* /

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.countries_mv2“
      宽松的=> TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.departments_mv2“
      宽松的=> TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.employees_mv2“
      宽松的=> TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.jobs_mv2“
      宽松的=> TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.job_history_mv2“
      宽松的=> TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.locations_mv2“
      宽松的=> TRUE);
END;
/

BEGIN
   DBMS_REFRESH.ADD(
      =>'mviewadmin.hr_refg“
      列表>'hr.regions_mv2“
      宽松的=> TRUE);
END;
/

SET ECHO OFF

SPOOL OFF

/ **********脚本结束********************* ************* /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值