eygle.com   eygle.com
eygle.com  
 

« 《Oracle数据库性能优化》一书热销 | Blog首页 | 政策的力量是无穷的 »

Oracle高级复制的创建配置步骤-Step by Step

作者:eygle |【转载时请务必以超链接形式标明文章和作者信息及本声明
链接:
本例涉及两个站点.
主体定义站点:AVATAR.COOLYOUNG.COM.CN
主体站点:AUTHAA.COOLYOUNG.COM.CN
注:主体定义站点指配置复制工作的站点

本例涉及的用户.
复制管理员:repadmin
应用用户:hawa
本例复制的对象:hw_test 数据表
本例的先决条件:你需要设置好相应的参数,job_queue_processes需要大于0,global_name=true,并且建立相应的db link.
这些具体可以参考:高级复制的初步研究一文.

1.在主体定义站点复制用户下创建复制对象
SQL> select * from global_name;

GLOBAL_NAME
-----------------------------------------------------------
AVATAR.COOLYOUNG.COM.CN

SQL> connect hawa/password
Connected.
SQL> create table hw_test as select * from hw_online;

Table created.

SQL>  select count(*) from hw_test;

  COUNT(*)
----------
       464

SQL> alter table hw_test add (constraint pk_userid primary key (numuserid));

Table altered.

2.在主体站点同样创建复制对象
SQL> select * from global_name;

GLOBAL_NAME
------------------------------------------------------------------------
AUTHAA.COOLYOUNG.COM.CN

SQL> connect hawa/password
Connected.
SQL> create table hw_test as select * from hw_online;

Table created.

SQL> select count(*) from hw_test;

  COUNT(*)
----------
         0

3.在主体站点手工同步数据
SQL> connect repadmin/password

Connected.
SQL> insert into hawa.hw_test select * from hawa.hw_test@avatar;

464 rows created.

SQL> commit;

Commit complete.

4.在主体定义站点开始操作
登陆主体定义站点
$ sqlplus repadmin/password

SQL*Plus: Release 9.2.0.4.0 - Production on Mon Jun 27 09:32:36 2005

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - Production

SQL> select * from global_name;

GLOBAL_NAME
----------------------------------------------------------------------------
AVATAR.COOLYOUNG.COM.CN

创建复制组:
SQL> execute dbms_repcat.create_master_repgroup('rep_hh');

PL/SQL procedure successfully completed.

SQL> select gname,master,status from dba_repgroup where gname='REP_HH';

GNAME                          M STATUS
------------------------------ - ---------
REP_HH                         Y QUIESCED


在复制组里加入复制对象
SQL> execute dbms_repcat.create_master_repobject
(sname=>'hawa',oname=>'hw_test', 
type=>'table',use_existing_object=>true,gname=>'rep_hh',copy_rows=>false);

PL/SQL procedure successfully completed.

SQL> select sname,oname,status,gname from dba_repobject where gname='REP_HH';

SNAME                          ONAME                          STATUS     GNAME
------------------------------ ------------------------------ ---------- ------------------------------
HAWA                           HW_TEST                        VALID      REP_HH


对复制对象产生复制支持
SQL> execute dbms_repcat.generate_replication_support('hawa','hw_test','table');

PL/SQL procedure successfully completed.

SQL> select gname, master, status from dba_repgroup where gname='REP_HH';

GNAME                          M STATUS
------------------------------ - ---------
REP_HH                         Y QUIESCED

SQL> select sname,oname,status,gname from dba_repobject where gname='REP_HH';

SNAME                          ONAME                          STATUS     GNAME
------------------------------ ------------------------------ ---------- ------------------------------
HAWA                           HW_TEST                        VALID      REP_HH
HAWA                           HW_TEST$RP                     VALID      REP_HH
HAWA                           HW_TEST$RP                     VALID      REP_HH

SQL> 


添加主体复制节点
SQL> execute dbms_repcat.add_master_database
(gname=>'rep_hh',master=>'AUTHAA.COOLYOUNG.COM.CN',use_existing_objects=>true, 
copy_rows=>false, propagation_mode => 'synchronous');

PL/SQL procedure successfully completed.

SQL> column masterdef format a10
SQL> column master format a10
SQL> column dblink format a25
SQL> column gname format a12

SQL> select gname, dblink, masterdef MASTERDEF, master MASTER from sys.dba_repsites where gname='REP_HH';

GNAME        DBLINK                    MASTERDEF  MASTER
------------ ------------------------- ---------- ----------
REP_HH       AVATAR.COOLYOUNG.COM.CN   Y          Y
REP_HH       AUTHAA.COOLYOUNG.COM.CN   N          Y

登陆主体站点,检查复制对象情况:
[oracle@www167 oracle]$ sqlplus repadmin/password

SQL*Plus: Release 9.2.0.4.0 - Production on Mon Jun 27 09:34:49 2005

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
AUTHAA.COOLYOUNG.COM.CN


SQL> set linesize 120
SQL> select sname,oname,status,gname from dba_repobject where gname='REP_HH';

SNAME                          ONAME                          STATUS     GNAME
------------------------------ ------------------------------ ---------- ------------------------------
HAWA                           HW_TEST                        VALID      REP_HH
HAWA                           HW_TEST$RP                     VALID      REP_HH
HAWA                           HW_TEST$RP                     VALID      REP_HH


在主体定义站点启动复制:
SQL> select * from global_name;

GLOBAL_NAME
-----------------------------------------------------------------------------
AVATAR.COOLYOUNG.COM.CN

SQL> execute dbms_repcat.resume_master_activity('rep_hh',true);

PL/SQL procedure successfully completed.


在主体定义站点删除数据测试:
SQL> connect hawa/password
Connected.
SQL> select count(*) from hw_test;

  COUNT(*)
----------
       464

SQL> delete from hw_test where rownum <20;

19 rows deleted.

SQL> commit;

Commit complete.

SQL> select count(*) from hw_test;

  COUNT(*)
----------
       445

在主体站点观察变化:
SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
AUTHAA.COOLYOUNG.COM.CN

SQL> select count(*) from hw_test;

  COUNT(*)
----------
       445

SQL>     

至此,同步复制配置完毕。
-----
这篇 【Oracle高级复制的创建配置步骤-Step by Step】来自 www.eygle.com | CSDN技术网摘| del.icio.us|365Key

By eygle on 2005-06-27 09:34 | Comments (80) | Posted to Advanced | Edit |Pageviews:

相关文章 随机文章
  • 系统对象IDL_UB1$表的含义及作用
  • Oracle9i与Oracle10g之间的高级复制配置
  • 如何将复制队列表移出系统(SYSTEM)表空间
  • 高级复制下如何强制删除废弃复制组
  • 高级复制下如何强制删除复制组
  • 新的一年-辛苦的开端
    Why "EXECUTE ANY PROCEDURE" is a dangerous PRIVILEGE?
    大佑依然年轻-记罗大佑2005北京演唱会
    _disable_logging对于性能的影响
    瑞典游记-预告篇
    网上相关主题:
    Google

    留言 (80)

    eygle:
    你的这个是实时同步的吗?
    并且是双向的吗?

    Posted by: dai_zhy at July 28, 2005 2:31 PM

    是同步复制,双向。

    Posted by: eygle at July 28, 2005 3:07 PM

    eygle:
    这个之前是不是要建立db link呢?

    Posted by: dai_zhy at July 28, 2005 10:24 PM

    db link肯定是要先建立好的,我这个是给一个朋友做的范例,省略了一些步骤。

    Posted by: eygle at July 28, 2005 10:45 PM

    eygle;
    两个站点都需要repadmin这个用户吗?

    Posted by: dai_zhy at July 29, 2005 9:22 AM

    参考这里的文章:
    http://www.eygle.com/index-download.php

    Posted by: eygle at July 29, 2005 9:37 AM

    在添加主复制节点是出现如下错误:

    ORA-23357: the propagator does not exist
    ORA-06512: at "SYS.DBMS_REPCAT_CACHE", line 76
    ORA-06512: at "SYS.DBMS_REPCAT_MAS", line 1863
    ORA-06512: at "SYS.DBMS_REPCAT", line 121

    Posted by: minjiayan at July 29, 2005 6:13 PM

    minjiayan,你参考
    http://www.eygle.com/index-download.php

    不要漏掉需要的步骤,不会出问题的。

    Posted by: eygle at July 29, 2005 6:29 PM

    我想在增加一个表到复制组里,但是出现了下面的问题:
    ERROR at line 1:
    ORA-23310: object group "PUBLIC"."REP_HH" is not quiesced
    ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
    ORA-06512: at "SYS.DBMS_REPCAT_UTL", line 6176
    ORA-06512: at "SYS.DBMS_REPCAT_MAS", line 2546
    ORA-06512: at "SYS.DBMS_REPCAT", line 562
    ORA-06512: at line 1
    我该怎么把这个复制组的status改为quiesc呢?

    Posted by: dai_zhy at August 1, 2005 9:42 AM

    呵呵,谢谢

    Posted by: minjiayan at August 1, 2005 9:43 AM

    呵呵,谢谢

    Posted by: minjiayan at August 1, 2005 9:43 AM

    请问,能否建立一个基于多主体表的实体化视图?

    Posted by: xzh at September 18, 2005 3:40 PM

    eygle;
    为什么我在进行到‘登陆主体站点,检查复制对象情况:’这一步时执行select sname,oname,status,gname from dba_repobject where gname='REP_HH';
    却是这样的信息:sname:hava oname:hw_test status:error gname:rep_hh

    Posted by: qiuleizhen at October 11, 2005 2:26 PM

    状态不对啊,你的某个步骤肯定有问题!

    Posted by: eygle at October 11, 2005 4:50 PM

    谢谢eygle!问题已经解决了,是我在建在主体站点上的那张表没有设置主关键字,对了,再问你一下,如果主体站点是分区表,也可以吗?

    Posted by: qiuleizhen at October 12, 2005 12:59 PM

    在添加主体复制节点时,报错,错误信息如下:
    ERROR 位于第 1 行:
    ORA-23375: 特性与数据库版本NEWSIS.US.ORACLE.COM不兼容
    ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 86
    ORA-06512: 在"SYS.DBMS_REPCAT_MAS", line 2159
    ORA-06512: 在"SYS.DBMS_REPCAT", line 146
    ORA-06512: 在line 1
    经检查,两个服务器的版本均为Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

    Posted by: ghx at December 15, 2005 2:30 PM

    show parameter compatible

    比较compatible参数设置!

    Posted by: eygle at December 15, 2005 2:33 PM

    两个服务器的compatible均为9.2.0.0.0

    Posted by: ghx at December 16, 2005 9:51 AM

    确认repadmin具有足够权限:

    execute dbms_repcat_admin.grant_admin_any_repschema ('REPADMIN')

    Posted by: eygle at December 16, 2005 10:55 AM

    多谢你的回复,不过好象还是不行,一样的地方一样的错误

    Posted by: ghx at December 16, 2005 11:44 AM

    那可能是你的什么步骤配置出了问题,仔细检查一下。

    Posted by: eygle at December 16, 2005 8:04 PM

    把状态改为quiesced
    execute dbms_repcat.suspend_master_activity (gname =>'REP_HH')

    Posted by: xzh2001 at December 23, 2005 2:27 PM

    在登陆主体站点,检查复制对象情况时,dba_repobject表里没有记录,而且两个站点数据发生变化时,没有相互反映出来,为什么?我使用的版本是8.1.7.0.0

    Posted by: ljs_888 at December 28, 2005 5:30 PM

    在登陆主体站点,检查复制对象情况时,dba_repobject表里没有记录,按照上面的步骤,最后向主体定义站点插入数据时提示:
    ERROR at line 1:
    ORA-04067: 没有执行,stored
    procedure "hawa.hw_test$RP" 不存在
    ORA-01085: 延迟 rpc 到 "hawa.hw_test$RP.REP_INSERT" 之前的错误
    ORA-02063: preceding 2 lines from HLRDBBAK

    Posted by: ljs_888 at December 29, 2005 1:22 PM

    检查dba_repcatlog看记录了什么错误.

    Posted by: eygle at December 29, 2005 3:42 PM

    dba_repcatlog的记录如下:

    Id Source Status Userid Timestamp Role Master Sname Request Oname Type Message Errnum Gname
    35 ORA.DATANG.COM AWAIT_CALLBACK REPADMIN 2005-12-28 14:52:06 MASTERDEF HLRDBBAK.DATANG.COM RESUME_MASTER_ACTIVITY UNDEFINED SCOTT_MG
    29 ORA.DATANG.COM AWAIT_CALLBACK REPADMIN 2005-12-28 14:51:21 MASTERDEF HLRDBBAK.DATANG.COM COPY_FLAVOR_DEFINITIONS UNDEFINED SCOTT_MG
    61 ORA.DATANG.COM@PERDAY AWAIT_CALLBACK REPADMIN 2005-12-29 18:08:09 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY COPY_FLAVOR_DEFINITIONS UNDEFINED REP_GP_DAY
    67 ORA.DATANG.COM@PERDAY AWAIT_CALLBACK REPADMIN 2005-12-29 18:09:30 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY RESUME_MASTER_ACTIVITY UNDEFINED REP_GP_DAY
    62 ORA.DATANG.COM@PERDAY AWAIT_CALLBACK REPADMIN 2005-12-29 18:08:09 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY SCOTT CREATE_MASTER_REPOBJECT DEPT TABLE REP_GP_DAY
    33 ORA.DATANG.COM AWAIT_CALLBACK REPADMIN 2005-12-28 14:51:22 MASTERDEF HLRDBBAK.DATANG.COM SCOTT_MG ADD_MASTER_DATABASE -1 UNDEFINED SCOTT_MG
    34 ORA.DATANG.COM READY REPADMIN 2005-12-28 14:51:22 MASTERDEF HLRDBBAK.DATANG.COM SCOTT_MG ADD_MASTER_DATABASE -1 UNDEFINED SCOTT_MG
    35 ORA.DATANG.COM READY REPADMIN 2005-12-28 14:52:06 MASTERDEF ORA.DATANG.COM RESUME_MASTER_ACTIVITY UNDEFINED SCOTT_MG
    36 ORA.DATANG.COM AWAIT_CALLBACK REPADMIN 2005-12-28 14:53:05 MASTERDEF HLRDBBAK.DATANG.COM RESUME_MASTER_ACTIVITY UNDEFINED SCOTT_MG
    63 ORA.DATANG.COM@PERDAY AWAIT_CALLBACK REPADMIN 2005-12-29 18:08:10 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY SCOTT GENERATE_INTERNAL_PKG_SUPPORT DEPT TABLE REP_GP_DAY
    64 ORA.DATANG.COM@PERDAY READY REPADMIN 2005-12-29 18:08:10 MASTERDEF ORA.DATANG.COM@PERDAY SCOTT END_GEN_INTERNAL_PKG_SUPPORT DEPT TABLE REP_GP_DAY
    65 ORA.DATANG.COM@PERDAY AWAIT_CALLBACK REPADMIN 2005-12-29 18:08:10 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY REP_GP_DAY ADD_MASTER_DATABASE -1 UNDEFINED REP_GP_DAY
    66 ORA.DATANG.COM@PERDAY READY REPADMIN 2005-12-29 18:08:10 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY REP_GP_DAY ADD_MASTER_DATABASE -1 UNDEFINED REP_GP_DAY
    67 ORA.DATANG.COM@PERDAY READY REPADMIN 2005-12-29 18:09:30 MASTERDEF ORA.DATANG.COM@PERDAY RESUME_MASTER_ACTIVITY UNDEFINED REP_GP_DAY
    68 ORA.DATANG.COM@PERDAY AWAIT_CALLBACK REPADMIN 2005-12-29 18:09:51 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY RESUME_MASTER_ACTIVITY UNDEFINED REP_GP_DAY

    Posted by: ljs_888 at December 29, 2005 4:48 PM

    我按照步骤前面都一切顺利,但在登陆主体站点,检查复制对象情况:这一步时有问题了
    SQL> select sname,oname,status,gname from dba_repobject where gname='REP_OOO';

    SNAME ONAME STATUS GNAME
    ------------------------------ ------------------------------ ---------- ------------
    game GAMEINFOTEST5 ERROR REP_OOO

    oname的STATUS为ERROR,请问该怎么解决?

    Posted by: lues at December 29, 2005 5:11 PM

    根据您写的advanced replication初步研究.pdf文档,按照“附录一。多主体复制站点的配置步骤”去执行,
    在运行grant select any dictionary to repadmin;时,提示
    ERROR at line 1:ORA-00990: missing or invalid privilege

    其他别的步骤没有发生什么异常,在master数据库的dba_repobject中有三行记录,但在snap 数据库的dba_repobject中没有记录,最后分别更新两个数据库的记录时,在对方的数据库中没有任何变化。

    Posted by: bjljs at December 29, 2005 5:28 PM

    你的数据库什么版本啊?

    以上各位朋友请检查一下你的job_queue_processes参数是否>0.

    Posted by: eygle at December 29, 2005 5:52 PM

    数据库是8.1.7.0.0,而且job_queue_processes设置为10了。

    Posted by: bjljs at December 29, 2005 6:30 PM

    SELECT ANY DICTIONARY 是9i中引入的.

    Oracle8i和9i不同!

    Posted by: eygle at December 29, 2005 9:17 PM

    那为什么复制不成功呢?难道8.1.7.0.0不能复制吗?

    Posted by: bjljs at December 30, 2005 9:19 AM

    Oracle8i支持复制,一定是你的配置存在问题.

    检查一下日志/dba_repcatlog,看有什么错误.

    Posted by: eygle at December 30, 2005 9:55 AM

    我是按照您的文档上的要求进行配置的,还需要配置别的什么吗?dba_repcatlog的信息如下,我也看不出有什么错误.能帮我分析一下吗,谢谢eygle了!

    Id Source Status Userid Timestamp Role Master Sname Request Oname Type Message Errnum Gname
    61 ORA.DATANG.COM@PERDAY AWAIT_CALLBACK REPADMIN 2005-12-29 18:08:09 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY COPY_FLAVOR_DEFINITIONS UNDEFINED REP_GP_DAY
    67 ORA.DATANG.COM@PERDAY AWAIT_CALLBACK REPADMIN 2005-12-29 18:09:30 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY RESUME_MASTER_ACTIVITY UNDEFINED REP_GP_DAY
    62 ORA.DATANG.COM@PERDAY AWAIT_CALLBACK REPADMIN 2005-12-29 18:08:09 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY SCOTT CREATE_MASTER_REPOBJECT DEPT TABLE REP_GP_DAY
    63 ORA.DATANG.COM@PERDAY AWAIT_CALLBACK REPADMIN 2005-12-29 18:08:10 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY SCOTT GENERATE_INTERNAL_PKG_SUPPORT DEPT TABLE REP_GP_DAY
    64 ORA.DATANG.COM@PERDAY READY REPADMIN 2005-12-29 18:08:10 MASTERDEF ORA.DATANG.COM@PERDAY SCOTT END_GEN_INTERNAL_PKG_SUPPORT DEPT TABLE REP_GP_DAY
    65 ORA.DATANG.COM@PERDAY AWAIT_CALLBACK REPADMIN 2005-12-29 18:08:10 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY REP_GP_DAY ADD_MASTER_DATABASE -1 UNDEFINED REP_GP_DAY
    66 ORA.DATANG.COM@PERDAY READY REPADMIN 2005-12-29 18:08:10 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY REP_GP_DAY ADD_MASTER_DATABASE -1 UNDEFINED REP_GP_DAY
    67 ORA.DATANG.COM@PERDAY READY REPADMIN 2005-12-29 18:09:30 MASTERDEF ORA.DATANG.COM@PERDAY RESUME_MASTER_ACTIVITY UNDEFINED REP_GP_DAY
    68 ORA.DATANG.COM@PERDAY AWAIT_CALLBACK REPADMIN 2005-12-29 18:09:51 MASTERDEF HLRDBBAK.DATANG.COM@PERDAY RESUME_MASTER_ACTIVITY UNDEFINED REP_GP_DAY

    Posted by: bjljs at December 31, 2005 9:51 AM

    AWAIT_CALLBACK这种状态是不正常的.

    AWAIT_CALLBACK状态表示管理请求已经从主体定义站点上正常发出,并且已经被其他的主体站点接收,但是其他的主体站点却没有返回消息表明管理请求是否执行成功。

    所以你需要检查你的db link是否正常.
    主体站点是否配置正确.

    如果没问题,可以使用:
    DBMS_REPCAT.DO_DEFERRED_REPCAT_ADMIN ( gname=>'rep_gp_day', all_sites=>true);
    重新提交任务.

    Posted by: eygle at December 31, 2005 9:58 AM

    在主体站点使用sql命令可以直接向主体定义站点插入数据,从主体定义站点也可以使用sql命令直接向主体站点插入数据,都没有问题,运行DBMS_REPCAT.DO_DEFERRED_REPCAT_ADMIN 也没问题,但就是不互相更新对方的数据。

    在主体站点中的dba_repobject里,没有任何记录。

    Posted by: bjljs at December 31, 2005 3:42 PM

    配置完后,在主体站点中的dba_repobject里,是否应该有记录。如果有,在运行哪个程序包才能有记录呢,我的问题一直没有解决,很急切,热切的盼望着各位好心人的指点,谢谢!!!!

    Posted by: bjljs at January 5, 2006 2:28 PM

    我手头已经没有Oracle8i的环境了.

    你的db link正常么?

    使用repadmin能否操作远程表?

    Posted by: eygle at January 5, 2006 2:41 PM

    db link正常,使用repadmin可以操作远程表。

    Posted by: bjljs at January 5, 2006 3:43 PM

    你可以试试看同步复制,出错了就能发现了.

    Posted by: eygle at January 5, 2006 6:47 PM

    使用同步复制,最后向主体定义站点插入数据时提示:
    ERROR at line 1:
    ORA-04067: 没有执行,stored
    procedure "hawa.hw_test$RP" 不存在
    ORA-01085: 延迟 rpc 到 "hawa.hw_test$RP.REP_INSERT" 之前的错误
    ORA-02063: preceding 2 lines from HLRDBBAK

    Posted by: bjljs at January 9, 2006 1:55 PM

    >>登陆主体站点,检查复制对象情况:

    这一步,你的肯定有问题,复制生成存在问题,没有在主体站点生成复制支持对象.

    Posted by: eygle at January 9, 2006 2:33 PM

    你说的很对,没有在主体站点生成复制支持对象,登陆主体站点,检查复制对象情况,在dba_repobject 里没有记录,但为什么没有呢?在此之前没有任何异常情况呀。

    Posted by: bjljs at January 9, 2006 3:52 PM

    我现在也遇到了这个错误ORA-04067,建立过程都提示正常的,比较苦闷,现在正在实施一个项目中

    Posted by: ppiao at January 12, 2006 10:32 PM

    以上使用8.1.7.0.0的朋友,我建议你们升级一下.

    我看到8.1.7.0.0有一些相关Bug会使得高级复制出现问题,特别是由8.1.5升级上来的.

    建议使用9iR2或以上版本.

    Posted by: eygle at January 12, 2006 11:13 PM

    我的数据库是oracle9i for 2003企业版本的,并且升级到9206,配置好后,在登陆主体站点,检查复制对象情况,在dba_repobject 里没有记录,
    使用同步复制,最后向主体定义站点插入数据时提示:
    ERROR at line 1:
    ORA-04067: 没有执行,stored
    procedure "gz.s_cust$RP" 不存在

    不知道如何解决

    Posted by: ppiao at January 14, 2006 1:35 PM

    检查dba_repcatlog里面的错误信息!

    Posted by: eygle at January 14, 2006 2:35 PM

    那8.1.7.0.0版本就不能做高级复制吗?因为项目进行中,能可能在重新购置新的版本软件,有什么办法可以实现在8.1.7.0.0版本下的高级复制呢

    Posted by: bjljs at January 16, 2006 9:26 AM

    我也遇到了ORA-04067的问题,在oracle8i、oracle9i 都不行,我是严格按照上面的步骤进行的,不知道为什么?

    Posted by: renlei at January 16, 2006 9:32 AM

    ORA-04067错误通常是你的db link有问题或者是job有问题,无法把本地的任务push到主体站点.

    所以请确认你的用户权限正确,db link正常,相关初始化参数已经正确设置.

    本文开头给出一个文档,请参考.

    Posted by: eygle at January 16, 2006 3:36 PM

    请问eygle,在多主复制中一个主站点从复制组中用dbms_repcat.remove_master_databases删除后,可以重新加入到该复制组中去么,如何加?

    Posted by: yang at February 22, 2006 3:48 PM

    请问如果需要以一个物化视图来实现对多个主体站点得数据复制,并且查询性能较高应该如何来设置和部署呢?希望能够得到您得帮助,最好有个实例

    Posted by: Anonymous at February 24, 2006 6:33 PM

    我的上个问题已经知道如何解决了,可是又出现一个新问题,请eygle帮帮忙看看
    在多主复制中,我在主定义站点执行
    execute dbms_repcat.suspend_master_activity(gname => 'rep1');后 ,主定义站点已经是QUIESCING了,可等了很久其他主站点的复制组状态并没有随之改变,依然时normal,请问这是什么(急)?

    Posted by: yang at February 28, 2006 12:55 PM

    你查看:dba_repcatlog

    看这个动作是否没有被传播出去.

    Posted by: eygle at February 28, 2006 1:16 PM

    好的,解决了,谢谢eygle
    我现在在实施一个项目,不知道可否多主复制方式,来实现单向复制,即A台机器做中心只接收数据,B,C机器做源发送数据,在A上不建push任务,B,C上只建到A的push任务,我现在已经搭建好这种环境了,看上去运行的还行,请问eygle,这种方式会不会有什么不妥?另外我偶尔发现B会发送数据给C的情况(不过极少出现),不知为何

    Posted by: yang at February 28, 2006 2:40 PM

    请问eygle一个紧急的问题
    ,在多主复制中为什么一个站点的在执行dbms_repcat.do_deferred_repcat_admin('"REP1"', FALSE);job时,一直执行不结束,等了几天还是这样,它不执行任何从主定义站点发来的命令
    我用exeucte dbms_defer_sys.delete_tran(deferred_tran_id => '',destination => '');后,它依然不结束,请问这是怎么回事,do_deferred_repcat_admin是具体做什么,十分着急!!!请帮忙,谢谢!

    Posted by: yang at March 2, 2006 8:16 PM

    Quote from Oracle document:

    Whenever you use the Replication Management tool to create an administrative request for a replication group, Oracle automatically inserts a job into the local job queue, if one does not already exist for the group. This job periodically executes the
    DBMS_REPCAT.DO_DEFERRED_REPCAT_ADMIN procedure. Whenever you
    synchronously broadcast a request, Oracle attempts to start this job immediately in
    order to apply the replicated changes at each master site.

    Assuming that Oracle does not encounter any errors,DO_DEFERRED_REPCAT_ADMIN is run whenever a background process is available to execute the job. Oracle automatically determines how often the background process wakes up. You may experience a delay if you do not have enough background processes available to execute the outstanding jobs.

    Posted by: eygle at March 2, 2006 8:53 PM

    谢谢!
    您的意思是说这个站点的oracle后台进程有问题,造成background processes unavailable,所以一直不停执行这个job是吗?那怎么修复这个问题呢?另外我从session里面sql语句,看到它在执行这个job的时候,并没有死掉啊,一直在不停执行一些看不大懂的语句,比如lock table xxx in shared mode;什么的
    请eygle多关注一下小弟的这个问题,因为较急,谢谢!

    Posted by: yang at March 3, 2006 2:28 PM

    你需要看一下Job为什么没有结束

    还要看Deffer任务是否有错误或失败.

    select * from DEFERROR;

    select * from DEFTRAN;

    select * from dba_jobs_running;

    还有,我怀疑你删除Tran的方法有问题.

    Posted by: eygle at March 3, 2006 3:02 PM

    select * from DEFERROR; 里面确实有错误,但是是一般的主键冲突、或者not found之类的,这个应该是正常的吧。
    select * from DEFTRAN; 里面有未发送出去的事务,原因是我只建立了到中心站点的数据库链,因为我不想它发送给其他站点,自然另外几条事务因为找不到数据库链,因此一直保留在那里。

    一般情况下,我用exeucte dbms_defer_sys.delete_tran(deferred_tran_id => '',destination => '');清除滞留的事务后,job就很快执行完毕了,但是这次即使清空了,它还是在不停跑,不知道原因在哪里
    另外我想问一下复制里面,可以不一定要将global_names设置为true吗,false也可以的吧

    Posted by: yang at March 3, 2006 4:44 PM

    select * from DEFERROR; 里面确实有错误,但是是一般的主键冲突、或者not found之类的,这个应该是正常的吧。
    select * from DEFTRANDEST; 里面有未发送出去的事务,原因是我只建立了到中心站点的数据库链,因为我不想它发送给其他站点,自然另外几条事务因为找不到数据库链,因此一直保留在那里。

    一般情况下,我用exeucte dbms_defer_sys.delete_tran(deferred_tran_id => '',destination => '');清除滞留的事务后,job就很快执行完毕了,但是这次即使清空了,它还是在不停跑,不知道原因在哪里
    另外我想请问一下数据复制里面,不一定要将global_names设置为true吗,false也可以的吧

    Posted by: yang at March 3, 2006 4:46 PM

    理论上global_names要设置为True,但是如果你的DB Link以及域名等设置没有问题,这个不会有实质影响.

    如果实在找不到原因,我建议你sql_trace一下相关job进程,看看在执行什么操作.

    Posted by: eygle at March 3, 2006 4:50 PM

    好的,多谢!
    以后还请eygle常常光顾这个帖子,偶以后可能还会遇到些棘手的问题,需要请教 谢啦 :)

    Posted by: yang at March 3, 2006 5:11 PM

    又冒出一个问题,
    我想删除一个非主定义站点的复制组,然后重新把它加进去,为什么会出现这个错误,怎么都删除不掉:

    SQL> execute dbms_repcat.drop_master_repgroup(gname => 'rep',all_sites => false);

    begin dbms_repcat.drop_master_repgroup(gname => 'rep',all_sites => false); end;

    ORA-23313: object group "PUBLIC"."REP" is not mastered at MASTER.DRAGONSOFT.COM.CN
    ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
    ORA-06512: at "SYS.DBMS_REPCAT_UTL4", line 2860
    ORA-06512: at "SYS.DBMS_REPCAT_MAS", line 2660
    ORA-06512: at "SYS.DBMS_REPCAT", line 635
    ORA-06512: at line 1

    Posted by: yang at March 3, 2006 5:58 PM

    在上面这种情况下,有什么办法可以强制删除非主定义站点上的复制组吗?不然就再也不能使用这个组名称了

    Posted by: yang at March 3, 2006 7:46 PM

    yang,
    遇到一样的问题跟你累似。
    1。我不能删除复制组:在主体定义站点上已经删掉了,但在主体站点上的管理请求是:drop_master_repschema,却一直不执行,导致主体站点上的复制组一直不能被删除。我本想删除复制组后再重新建一个的。这是为什么呢〉?
    2。主体站点以及主体定义站点上的复制组都删除掉了,可是为什么我在主体站点上编辑跟复制组相关用户下的表数据时,出现ora-23474错误。复制组删掉的话,应该是两个数据库之间没有关系的阿,这是怎么回事呢??

    以上所讲的操作都是通过 OEM Console完成的。

    该问题请教 yang, and eygle ..
    我时刻关注 !!!!
    Thanks,

    Posted by: kalvin at March 12, 2006 1:32 PM

    谢谢啊,终于搞定了,将准备工作不充如下,请指正:(其中ora9fron&ora9back是数据库的名字,请按照自己的实际情况改动)
    -- create user scott for test /as sysdba both @ora9fron and @ora9back
    CREATE USER scott IDENTIFIED BY tiger;
    ALTER USER scott DEFAULT TABLESPACE users QUOTA UNLIMITED ON users;
    ALTER USER scott 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
    TO scott;

    -- create table in scott for test /as soctt/tiger both @ora9fron and @ora9back
    create table test_rep (num number not null, idname varchar2(100));
    alter table test_rep add constraint pk_test_rep primary key (num);
    create index ind_test_rep_name on test_rep (idname);
    insert into test_rep values (1, 'ytk');
    insert into test_rep values (2, 'zhly');
    commit;

    ------------------------------------------------------------------------------------------------------------------------
    -- create public database link /as sysdba@ora9fron
    drop public database link ora9back;
    create public database link ora9back using 'ora9back';
    select * from global_name@ora9back;

    -- create repadmin /as sysdba@ora9fron
    drop user repadmin cascade;
    create user repadmin identified by repadmin;
    execute dbms_repcat_admin.grant_admin_any_schema(username => 'repadmin');
    execute dbms_defer_sys.register_propagator('repadmin');
    execute dbms_repcat_admin.register_user_repgroup(username => 'repadmin',privilege_type => 'receiver',list_of_gnames => NULL);
    grant execute any procedure to repadmin;
    execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');
    grant comment any table to repadmin;
    grant lock any table to repadmin;
    grant select any dictionary to repadmin;
    grant create session to repadmin;

    -- create database link repadmin/repadmin@ora9fron
    drop database link ora9back;
    create database link ora9back connect to repadmin identified by repadmin;
    select * from global_name@ora9back;
    -- time schedule create repadmin/repadmin@ora9fron
    execute dbms_defer_sys.schedule_push ( destination => 'ora9back', interval => 'sysdate + 2/1440', next_date => sysdate);
    -- execute dbms_defer_sys.unschedule_push(dblink => 'ora9back');
    execute dbms_defer_sys.schedule_purge ( next_date => sysdate, interval => 'sysdate + 10/1440', delay_seconds => 0, rollback_segment => NULL);
    -- execute dbms_defer_sys.unschedule_purge();

    -- create public database link /as sysdba@ora9back
    drop public database link ora9fron;
    create public database link ora9fron using 'ora9fron';
    select * from global_name@ora9back;

    -- create repadmin /as sysdba@ora9back
    drop user repadmin cascade;
    create user repadmin identified by repadmin;
    execute dbms_repcat_admin.grant_admin_any_schema(username => 'repadmin');
    execute dbms_defer_sys.register_propagator('repadmin');
    execute dbms_repcat_admin.register_user_repgroup(username => 'repadmin',privilege_type => 'receiver',list_of_gnames => NULL);
    grant execute any procedure to repadmin;
    execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');
    grant comment any table to repadmin;
    grant lock any table to repadmin;
    grant select any dictionary to repadmin;
    grant create session to repadmin;

    -- create database link repadmin/repadmin@ora9back
    drop database link ora9fron;
    create database link ora9fron connect to repadmin identified by repadmin;
    select * from global_name@ora9back;
    -- time schedule create repadmin/repadmin@ora9back
    execute dbms_defer_sys.schedule_push ( destination => 'ora9fron', interval => 'sysdate + 5/1440', next_date => sysdate);
    -- execute dbms_defer_sys.unschedule_push(dblink => 'ora9fron');
    execute dbms_defer_sys.schedule_purge ( next_date => sysdate, interval => 'sysdate + 10/1440', delay_seconds => 0, rollback_segment => NULL);
    -- execute dbms_defer_sys.unschedule_purge();

    Posted by: zhangych at August 8, 2006 1:21 PM

    在添加主体复制节点时,报错,错误信息如下:
    ERROR 位于第 1 行:
    ORA-23375: 特性与数据库版本NEWSIS.US.ORACLE.COM不兼容
    ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 86
    ORA-06512: 在"SYS.DBMS_REPCAT_MAS", line 2159
    ORA-06512: 在"SYS.DBMS_REPCAT", line 146
    ORA-06512: 在line 1
    经检查,两个服务器的版本均为Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

    这是什么原因啊,这个问题已经好久没解决了,请大家帮忙解答一下好吗,谢谢了!

    Posted by: eimi at August 11, 2006 9:37 AM

    看的好头大啊

    Posted by: 数据恢复 at August 11, 2006 3:36 PM

    ORA-23375: 特性与数据库版本NEWSIS.US.ORACLE.COM不兼容

    这个错误是由于global_name设置问题引起的。请检查global_name值。

    Posted by: eygle at September 14, 2006 2:35 PM

    不知道eygle 还是否关注这个讨论。
    我现在配置完成了多主复制。但是我想知道,最开始的数据初始化工作有没有储存过程支持?
    我现在是使用exp imp 的方式来初始化两端的数据。
    是否有强制B 表刷新A 表的办法?
    非常感谢!

    Posted by: ssonu at November 9, 2006 3:05 AM

    execute dbms_repcat.create_master_repobject
    (sname=>'hawa',oname=>'hw_test',
    type=>'table',use_existing_object=>true,gname=>'rep_hh',copy_rows=>false);

    这里的use_existing_object 和 copy_rows就是控制这个的。

    Posted by: eygle at November 9, 2006 8:35 AM

    非常感谢。
    不知道您是否有时间可以简单介绍一下应该如何控制么?
    我现在master 已经创建完成了,是否把copy_rows 修改成true 就可以了?如果两边的表都有数据,但是不一致,那么在push job 启动的时候就会根据主键规则来同步两边的数据?
    待同步结束,我还需要把true 改成false?这样就是增量复制了?
    另外还有一个问题就是,这种模式是否支持分区表呢?
    再次感谢您的答复。

    Posted by: ssonu at November 13, 2006 4:53 PM

    刚才查了一下文档。
    eygle 版主帮忙看看是否有问题!
    BEGIN
    DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (gname => 'xxx');
    END;
    /

    begin
    DBMS_REPCAT.DROP_MASTER_REPOBJECT (
    sname=>'SCOTT',
    oname=>'DEPT',
    type=>'TABLE');
    end;
    /

    BEGIN
    DBMS_REPCAT.CREATE_MASTER_REPOBJECT(
    gname => '"xxx"',
    type => 'TABLE',
    oname => '"DEPT"',
    sname => '"SCOTT"',
    copy_rows => TRUE,
    use_existing_object => TRUE);
    END;
    /

    BEGIN
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
    sname => 'SCOTT',
    oname => 'SCOTT',
    type => 'TABLE',
    min_communication => TRUE,
    generate_80_compatible => FALSE);
    END;
    /

    BEGIN
    DBMS_REPCAT.RESUME_MASTER_ACTIVITY (gname => 'xxx');
    END;
    /

    这个过程中主站是不能允许有数据插入的吧?然后在create 的过程中,副站的数据会被强制清空,然后与主站同步?

    Posted by: ssonu at November 13, 2006 5:12 PM

    execute dbms_repcat.create_master_repobject
    (sname=>'hawa',oname=>'hw_test',
    type=>'table',use_existing_object=>true,gname=>'rep_hh',copy_rows=>false);

    这是初始化的过程,之后的复制和这个无关,同步还是异步复制需要后续指定,其实你自己测试一下就清楚了。

    Posted by: eygle at November 13, 2006 11:28 PM

    非常感谢eygle 版主帮助。
    不过我的多主复制,再增加复制表后,重新启动复制组。结果发现两边数据库的复制状态不一致。一个为normal 一个为 静默状态。这种问题出现的很奇怪。因为在测试过程中,一直都很正常。希望eygle 版主指点一二。

    Posted by: ssonu at November 16, 2006 3:21 AM

    你可以看dba_repcatlog里面有没有记录什么错误。

    Posted by: eygle at November 16, 2006 8:47 AM

    恩,看了dba_repcatlog。里面提示一张带有外键的表,缺少父向关键字。这个错误很奇怪啊。我在跟新的时候,全部选择了copy_rows = true 按道理说 两边数据应该完全一致才对头。
    会是这个错误影响的么?

    Posted by: ssonu at November 16, 2006 1:59 PM

    我想请教一下,原则上在Oracle9i环境下的可不可以对
    Oraccle8i中的表建立实体化视图,因为对方系统的数据库是8i,而我们自己用的是9i,现在还自己不能试,非常急切想知道是否可行,请知道的大虾多多指教,先谢谢了!

    Posted by: mumufly at December 11, 2006 9:19 AM

    有沒有Oracle高級複製的文檔或者教程呢?

    Posted by: user at September 29, 2007 5:41 PM

    发表留言:



    Remember Me?
    (输入验证码后方可评论,谢谢支持)



    CopyRight © 2004 eygle.com, All rights reserved.