oracle物化视图配置指导书 下载本文

oracle物化视图配置指导书

1

准备工作

1.1 检查初始化参数

确认gloal_names是否为true,job_queue_process大于0。分别在主站点和物化视图站点执行下面两条sqlplus 命令,检查数据库初始化参数是否符合要求。

show parameter global_names

show parameter job

如果初始化参数设置的不满足要求,可以通过下列语句动态修改。

alter system set global_names = true; alter system set job_queue_processes = 20;

1.2 检查全局数据库名称

两个数据库的db_domain 名称应该相同,只有db_name 不同。 通过下列语句检查主站点和物化视图站点的全局数据库名

select * from global_name;

如果全局数据库名设置不符合规范,可以通过如下语句动态修改。

alter database rename global_name to MAIN.HWTT.NET.COM; (主站点) alter database rename global_name to MATEVIEW.HWTT.NET.COM; (物化视图站点)

1.3 修改tnsnames.ora 文件

主站点和物化视图站点的tnsnames.ora参数文件中都添加下列内容,注意需要按照实际情况修改HOST的ip地址,以及SERVICE_NAME的值,PORT一般都默认为1521. MAIN =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 19.168.2.105)(PORT = 1521)) )

(CONNECT_DATA = (SERVICE_NAME = portal) ) )

MATEVIEW =

(DESCRIPTION = (ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 19.168.2.101)(PORT = 1521)) )

(CONNECT_DATA = (SERVICE_NAME = portal) ) )

2 主体站点配置

2.1 建立复制管理用户并授权

以sys或者system用户登陆到主体站点 Conn sys/mcp@ MAIN as sysdba;

--建立复制管理员,在实际应用中,需要修改repadmin帐号的密码,以确保安全。 CREATE USER repadmin IDENTIFIED BY repadmin;

--授权 BEGIN

DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (username => 'repadmin'); END; /

GRANT COMMENT ANY TABLE TO repadmin; GRANT LOCK ANY TABLE TO repadmin; GRANT SELECT ANY DICTIONARY TO repadmin;

2.2 注册传播者

这里使用了管理用户repadmin,也可以分别建立用户。

BEGIN

DBMS_DEFER_SYS.REGISTER_PROPAGATOR (username => 'repadmin'); END; /

2.3 注册接收者

这里使用了管理用户repadmin,也可以分别建立用户。

BEGIN

DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP ( username => 'repadmin', privilege_type => 'receiver', list_of_gnames => NULL); END; /

2.4 建立物化视图站点复制管理员的代理用户

出于简单考虑,这里也使用repadmin 用户 BEGIN

DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP ( username => 'repadmin',

privilege_type => 'proxy_snapadmin', list_of_gnames => NULL); END;

/

--授权

--对于repadmin 而言,不需要create session 权限

--但是这里如果新建用户的话,create session 权限则是必须的 GRANT CREATE SESSION TO repadmin; GRANT SELECT ANY TABLE TO repadmin;

2.5 设置清除延迟序列的job

--以复制管理员身份登陆到主站点 CONNECT repadmin/repadmin@ MAIN;

BEGIN

DBMS_DEFER_SYS.SCHEDULE_PURGE ( next_date => SYSDATE,

interval => 'SYSDATE + 1/24', delay_seconds => 0); END; / Commit;

2.6 对复制用户授权

Conn sys/mcp@ MAIN;

ALTER USER rbt TEMPORARY TABLESPACE temp; GRANT

CREATE SESSION, CREATE TABLE,

CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE VIEW,

CREATE SYNONYM, ALTER SESSION,

CREATE MATERIALIZED VIEW, ALTER ANY MATERIALIZED VIEW, CREATE DATABASE LINK, select any dictionary TO rbt;

2.7 在主体站点上建立主体组

--以复制管理员身份登陆复制站点 CONNECT repadmin/repadmin@MAIN; --建立名为RBTSYN 的复制组 BEGIN

DBMS_REPCAT.CREATE_MASTER_REPGROUP ( gname => 'RBTSYN'); END; /

Commit;

2.8 在主体站点上将复制对象增加到复制组中

--主键所用的索引自动复制,其他索引需要明确添加到复制组中,在本指导书中,只举例--t_rbt_operation_logs表的复制

BEGIN

DBMS_REPCAT.CREATE_MASTER_REPOBJECT ( gname => 'RBTSYN', type => 'TABLE',

oname => 't_rbt_operation_logs',