ITPUB论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
更多
查看: 5722|回复: 11

关于物化视图问题,请教大家。 [复制链接]

注册会员

资深会员

精华贴数
0
技术积分
2818
社区积分
1
注册时间
2005-5-9
论坛徽章:
4
会员2007贡献徽章
日期:2007-09-26 18:42:10祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:20:51ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21
发表于 2005-6-3 17:40:55 |显示全部楼层
物化视图复制的设置
主站点:db001.d-link
物化视图站点:db002.d-link
主机名:dbmis
复制用户:dev001

1. 检查初始化参数
SQL> connect sys/change_on_install@db001.d-link as sysdba ;
已连接。
SQL> show parameter global_names ;

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------------------
global_names                         boolean     TRUE
SQL> show parameter job;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes                  integer     20
SQL> select * from global_name ;

GLOBAL_NAME
------------------------------------------------------------------------------
DB001.d-link

SQL>
SQL> connect sys/change_on_install@db002.d-link as sysdba ;
已连接。
SQL> show parameter global_names ;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
global_names                         boolean     TRUE
SQL> show parameter job;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes                  integer     10
SQL> select * from global_name ;

GLOBAL_NAME
-----------------------------------------
DB002.d-link

SQL>

2,检查全局数据库名称



SQL> connect dev001/whoami@db002.d-link  ;
已连接。
SQL> select * from dev001.test001@db001 ;

         A B
---------- ----------
         1 wui
         2 zyun

SQL>

SQL> connect sys/change_on_install@db002.d-link as sysdba ;
已连接。
SQL> select owner,db_link from all_db_links ;

OWNER                DB_LINK
-------------------- --------------------
SYS                  DB001.d-link
PUBLIC               DB001.d-link

SQL> connect sys/change_on_install@db001.d-link as sysdba ;
已连接。
SQL> select owner,db_link from all_db_links ;

OWNER                DB_LINK
-------------------- --------------------
SYS                  DB002.d-link
PUBLIC               DB002.d-link

SQL>




4. 建立主体站点
SQL> connect system/whoami@db001.d-link ;
已连接。
SQL>
--建立复制管理用户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;

--注册传播用户并授权
BEGIN
DBMS_DEFER_SYS.REGISTER_PROPAGATOR (username => 'repadmin');
END;
/
--注册接收用户
BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => 'repadmin',
privilege_type => 'receiver',
list_of_gnames => NULL);
END;
/
--建立物化视图站点复制管理员的代理用户
BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => 'repadmin',
privilege_type => 'proxy_snapadmin',
list_of_gnames => NULL);
END;
/
GRANT CREATE SESSION TO repadmin;
GRANT SELECT ANY TABLE TO repadmin;
--以复制管理员身份登陆到主站点
SQL> CONNECT repadmin/repadmin@db001.d-link ;
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE (
next_date => SYSDATE,
interval => 'SYSDATE + 1/24',
delay_seconds => 0);
END;
/
commit;
5. 设置物化视图站点
SQL> connect system/whoami@db002.d-link ;
--建立物化视图管理员,并授权
CREATE USER mvadmin IDENTIFIED BY mvadmin;
BEGIN
DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
username => 'mvadmin');
END;
/
GRANT COMMENT ANY TABLE TO mvadmin;
GRANT LOCK ANY TABLE TO mvadmin;
GRANT SELECT ANY DICTIONARY TO mvadmin;
--建立传播者,并授权
BEGIN
DBMS_DEFER_SYS.REGISTER_PROPAGATOR (username => 'mvadmin');
END;
/
--建立刷新者,并授权,这里使用mvadmin 用户刷新物化视图
GRANT CREATE SESSION TO mvadmin;
GRANT ALTER ANY MATERIALIZED VIEW TO mvadmin;
--注册接受者
BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => 'mvadmin',
privilege_type => 'receiver',
list_of_gnames => NULL);
END;
/
--建立PUBLIC 数据库链
CREATE PUBLIC DATABASE LINK db001 USING 'db001.d-link';
SQL> CONNECT mvadmin/mvadmin@db002.d-link;
已连接。
SQL>CREATE DATABASE LINK db001 CONNECT TO repadmin IDENTIFIED BY repadmin;
--建立到主站点上复制管理员的数据库链
--以传播者身份登陆物化视图站点
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE (
next_date => SYSDATE,
interval => 'SYSDATE + 1/24',
delay_seconds => 0,
rollback_segment => '');
END;
/
--设置将修改推入到主站点的job
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => 'db001.d-link',
interval => 'SYSDATE + 1/24',
next_date => SYSDATE,
stop_on_error => FALSE,
delay_seconds => 0,
parallelism => 0);
END;
/
commit;
6. 建立主体组
--以复制管理员身份登陆复制站点
CONNECT repadmin/repadmin@db001.d-link ;
--建立名为rep_test 的复制组
BEGIN
DBMS_REPCAT.CREATE_MASTER_REPGROUP (
gname => 'reptest');
END;
/
--将复制对象增加到复制组中
BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'rep_test',
type => 'TABLE',
oname => 'test001',
sname => 'dev001',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/
--生成复制支持
BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'dev001',
oname => 'test001',
type => 'TABLE',
min_communication => TRUE);
END;
/
--开始复制
BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'reptest');
END;
/
commit;
7. 建立物化视图

CONNECT dev001/whoami@db001.d-link ;
--建立物化视图日志表,FAST 刷新方式必须要求建立物化视图日志
CREATE MATERIALIZED VIEW LOG ON dev001.test001;
--建立复制用户到主站点代理刷新者的数据库链
CONNECT dev001/whoami@db002.d-link;
CREATE DATABASE LINK db001 CONNECT TO repadmin IDENTIFIED BY repadmin;
--建立物化视图组
CONNECT mvadmin/mvadmin@db002.d-link ;
--物化视图组必须和复制站点上的复制组名称相同
BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
gname => 'reptest',
master => 'db001.d-link',
propagation_mode => 'ASYNCHRONOUS');
END;
/
-----------------------------------------------------
错误提示:
SQL> begin
  2  dbms_repcat.create_mview_repgroup(
  3  gname=>'reptest',
  4  master=>'db001.d-link',
  5  propagation_mode => 'ASYNCHRONOUS');
  6  end;
  7  /
begin
*
ERROR 位于第 1 行:
ORA-23313: 在 PUBLIC 没有控制对象组 "REPTEST"."db001.d-link"
ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 105
ORA-06512: 在"SYS.DBMS_REPCAT_SNA_UTL", line 1690
ORA-06512: 在"SYS.DBMS_REPCAT_SNA", line 64
ORA-06512: 在"SYS.DBMS_REPCAT", line 1262
ORA-06512: 在line 2


SQL>

解决方法:(查知道说是因为目前主站属于静默模式)
BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'reptest');
END;
/
但还是无效,一样报错,上午这样执行一下后,建立物化视图组是通过了的,奇怪,
现在把所有都删除了重新建立,报错误了。
SQL> connect repadmin/repadmin@db001.d-link ;
已连接。
SQL> select gname, master, status from dba_repgroup;

GNAME                          M STATUS
------------------------------ - ---------
REPTEST                        Y NORMAL

按照论坛上别人回答的
SQL> execute dbms_repcat.suspend_master_activity (gname => 'reptest');

PL/SQL 过程已成功完成。

SQL> connect mviewadmin/mviewadmin@db002.d-link ;
已连接。
SQL> begin
  2  dbms_repcat.create_mview_repgroup(
  3  gname=>'reptest',
  4  master=>'db001.d-link',
  5  propagation_mode=>'ASYNCHRONOUS');
  6  end;
  7  /
begin
*
ERROR 位于第 1 行:
ORA-23313: 在 PUBLIC 没有控制对象组 "REPTEST"."db001.d-link"
ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 105
ORA-06512: 在"SYS.DBMS_REPCAT_SNA_UTL", line 1690
ORA-06512: 在"SYS.DBMS_REPCAT_SNA", line 64
ORA-06512: 在"SYS.DBMS_REPCAT", line 1262
ORA-06512: 在line 2


SQL>
-----------------------------------------------------
--创建刷新组
BEGIN
DBMS_REFRESH.MAKE (
name => 'mvadmin.rep_refresh',
list => '',
next_date => SYSDATE,
interval => 'SYSDATE + 1/24',
implicit_destroy => FALSE,
rollback_seg => '',
push_deferred_rpc => TRUE,
refresh_after_errors => FALSE);
END;
/

SQL> connect mviewadmin/mviewadmin@db002.d-link ;
已连接。

SQL> select *from dev001.test001@db001 ;

         A B
---------- ----------
         1 wui
         2 zyun

SQL>
------------------------------------------------------------------
--创建物化视图
SQL> CREATE MATERIALIZED VIEW dev001.test001
  2  REFRESH FAST WITH PRIMARY KEY FOR UPDATE
  3  AS SELECT * FROM dev001.test001@db001 ;
AS SELECT * FROM dev001.test001@db001
          *
ERROR 位于第 3 行:
ORA-12028: 主体站点 @DB001.d-link 不支持实体化视图类型


SQL>


-------------------------------------------------------------------

两处用长虚线的位置是我遇到的问题,请教大家。

注册会员

资深会员

精华贴数
0
技术积分
2818
社区积分
1
注册时间
2005-5-9
论坛徽章:
4
会员2007贡献徽章
日期:2007-09-26 18:42:10祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:20:51ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21
发表于 2005-6-3 19:42:55 |显示全部楼层
顶一下

使用道具 举报

注册会员

老会员

精华贴数
0
技术积分
948
社区积分
2
注册时间
2005-4-25
论坛徽章:
0
发表于 2005-6-3 21:27:36 |显示全部楼层
关注.........

使用道具 举报

注册会员

老会员

精华贴数
1
技术积分
1745
社区积分
2
注册时间
2005-5-8
论坛徽章:
7
数据库板块每日发贴之星
日期:2005-06-04 01:01:23授权会员
日期:2006-05-08 08:47:59开发板块每日发贴之星
日期:2006-05-21 01:02:25
发表于 2005-6-3 21:29:14 |显示全部楼层
厉害
顶一下

使用道具 举报

版主

超级会员

精华贴数
21
技术积分
30601
社区积分
10008
注册时间
2002-4-5
论坛徽章:
885
2011新春纪念徽章
日期:2011-02-26 13:55:332011新春纪念徽章
日期:2011-02-18 11:43:362011新春纪念徽章
日期:2011-02-18 11:43:362011新春纪念徽章
日期:2011-02-18 11:43:362011新春纪念徽章
日期:2011-02-18 11:43:362011新春纪念徽章
日期:2011-02-18 11:43:362011新春纪念徽章
日期:2011-02-18 11:43:362011新春纪念徽章
日期:2011-02-18 11:43:362011新春纪念徽章
日期:2011-02-18 11:43:362011新春纪念徽章
日期:2011-02-18 11:43:362011新春纪念徽章
日期:2011-02-18 11:43:362011新春纪念徽章
日期:2011-02-18 11:43:36
发表于 2005-6-4 02:17:11 |显示全部楼层
oracle 什么版本啊?

使用道具 举报

注册会员

资深会员

精华贴数
0
技术积分
2818
社区积分
1
注册时间
2005-5-9
论坛徽章:
4
会员2007贡献徽章
日期:2007-09-26 18:42:10祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:20:51ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21
发表于 2005-6-4 12:45:46 |显示全部楼层
顶一下。ORALCRE是9。2

使用道具 举报

版主

版主

精华贴数
13
技术积分
64021
社区积分
4256
注册时间
2002-2-20
论坛徽章:
154
ITPUB元老
日期:2005-02-28 12:57:002010新春纪念徽章
日期:2010-03-01 11:06:28设计板块每日发贴之星
日期:2010-03-05 01:01:042010年世界杯参赛球队:科特迪瓦
日期:2010-06-17 10:26:542010年世界杯参赛球队:日本
日期:2010-06-17 17:27:47ITPUB技术丛书作者
日期:2010-09-26 15:24:562011新春纪念徽章
日期:2011-01-25 15:41:012011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:08
发表于 2005-6-4 14:51:23 |显示全部楼层
1.在主体站点上
sql>show parameter global_names
sql>select global_name from dual;
2.在物化视图站点上
sql>select global_name@db001 from dual;
把结果贴出来看看把.

参考:
http://www.itpub.net/234279.html

使用道具 举报

注册会员

初级会员

精华贴数
0
技术积分
52
社区积分
4
注册时间
2005-5-31
论坛徽章:
0
发表于 2005-6-4 15:16:48 |显示全部楼层
学习

使用道具 举报

注册会员

资深会员

精华贴数
0
技术积分
2818
社区积分
1
注册时间
2005-5-9
论坛徽章:
4
会员2007贡献徽章
日期:2007-09-26 18:42:10祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:20:51ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21
发表于 2005-6-4 19:58:16 |显示全部楼层
最初由 husthxd 发布
[B]1.在主体站点上
sql>show parameter global_names
sql>select global_name from dual;
2.在物化视图站点上
sql>select global_name@db001 from dual;
把结果贴出来看看把.

参考:
http://www.itpub.net/234279.html [/B]



主体站点上
SQL> connect sys/change_on_install@db001.d-link as sysdba ;
已连接。
SQL> show parameter global_names ;

NAME TYPE VALUE
------------------------------------ ----------- -------------------------
global_names boolean TRUE
SQL> show parameter job;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 20
SQL> select * from global_name ;

GLOBAL_NAME
------------------------------------------------------------------------------
DB001.d-link

SQL>
物化视图站点上
SQL> connect sys/change_on_install@db002.d-link as sysdba ;
已连接。
SQL> show parameter global_names ;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean TRUE
SQL> show parameter job;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 10
SQL> select * from global_name ;

GLOBAL_NAME
-----------------------------------------
DB002.d-link

SQL>

使用道具 举报

注册会员

资深会员

精华贴数
0
技术积分
2818
社区积分
1
注册时间
2005-5-9
论坛徽章:
4
会员2007贡献徽章
日期:2007-09-26 18:42:10祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:20:51ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21
发表于 2005-6-4 22:37:25 |显示全部楼层
--建立物化视图组
CONNECT mvadmin/mvadmin@db002.d-link ;
--物化视图组必须和复制站点上的复制组名称相同
BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
gname => 'reptest',
master => 'db001.d-link',
propagation_mode => 'ASYNCHRONOUS');
END;
/
-----------------------------------------------------
错误提示:
SQL> begin
2 dbms_repcat.create_mview_repgroup(
3 gname=>'reptest',
4 master=>'db001.d-link',
5 propagation_mode => 'ASYNCHRONOUS');
6 end;
7 /
begin
*
ERROR 位于第 1 行:
ORA-23313: 在 PUBLIC 没有控制对象组 "REPTEST"."db001.d-link"
ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 105
ORA-06512: 在"SYS.DBMS_REPCAT_SNA_UTL", line 1690
ORA-06512: 在"SYS.DBMS_REPCAT_SNA", line 64
ORA-06512: 在"SYS.DBMS_REPCAT", line 1262
ORA-06512: 在line 2


SQL>

解决方法:(查知道说是因为目前主站属于静默模式)
BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'reptest');
END;
/
但还是无效,一样报错,上午这样执行一下后,建立物化视图组是通过了的,奇怪,
现在把所有都删除了重新建立,报错误了。
SQL> connect repadmin/repadmin@db001.d-link ;
已连接。
SQL> select gname, master, status from dba_repgroup;

GNAME M STATUS
------------------------------ - ---------
REPTEST Y NORMAL

按照论坛上别人回答的
SQL> execute dbms_repcat.suspend_master_activity (gname => 'reptest');

PL/SQL 过程已成功完成。

SQL> connect mviewadmin/mviewadmin@db002.d-link ;
已连接。
SQL> begin
2 dbms_repcat.create_mview_repgroup(
3 gname=>'reptest',
4 master=>'db001.d-link',
5 propagation_mode=>'ASYNCHRONOUS');
6 end;
7 /
begin
*
ERROR 位于第 1 行:
ORA-23313: 在 PUBLIC 没有控制对象组 "REPTEST"."db001.d-link"
ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 105
ORA-06512: 在"SYS.DBMS_REPCAT_SNA_UTL", line 1690
ORA-06512: 在"SYS.DBMS_REPCAT_SNA", line 64
ORA-06512: 在"SYS.DBMS_REPCAT", line 1262
ORA-06512: 在line 2


SQL>
-----------------------------------------------------


我现在就是想知道这里到底什么错了,该如何解决?

使用道具 举报

相关内容推荐
您需要登录后才可以回帖 登录 | 注册

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 邮箱 虎吧 老博客 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
回顶部