zoukankan      html  css  js  c++  java
  • 高级复制实验配置添加复制节点操作时报错:ORA-23308: object GP.T does not exist or is invalid

    出错原因:

    使用高级复制时,在源端启动复制支持,执行语句:REPADMIN@bys1>execute dbms_repcat.generate_replication_support('gp','test' ,'table');

    这一步时输入了错误的表名或者用户名。

    错误提示:

    此后,在执行在源端添加复制节点操作时,有如下出错提示:

    REPADMIN@bys1>execute dbms_repcat.add_master_database(gname=>'rep',master=>'bys2' ,use_existing_objects=>true ,copy_rows=>false ,propagation_mode=>'synchronous');
    BEGIN dbms_repcat.add_master_database(gname=>'rep',master=>'bys2' ,use_existing_objects=>true ,copy_rows=>false ,propagation_mode=>'synchronous'); END;

    *
    ERROR at line 1:
    ORA-02055: distributed update operation failed; rollback required
    ORA-23308: object GP.T does not exist or is invalid

    ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
    ORA-06512: at "SYS.DBMS_REPCAT_MAS", line 460
    ORA-06512: at "SYS.DBMS_REPCAT_MAS", line 1572
    ORA-06512: at "SYS.DBMS_REPCAT_MAS", line 2283
    ORA-06512: at "SYS.DBMS_REPCAT", line 146
    ORA-06512: at line 1

    REPADMIN@bys1>select gname ,dblink ,masterdef ,master from dba_repsites where gname='REP';
    select gname ,dblink ,masterdef ,master from dba_repsites where gname='REP'
                                                 *
    ERROR at line 1:
    ORA-00604: error occurred at recursive SQL level 1
    ORA-02067: transaction or savepoint rollback required
    ORA-00604: error occurred at recursive SQL level 1
    ORA-02067: transaction or savepoint rollback required

    REPADMIN@bys1>rollback;
    Rollback complete.

    REPADMIN@bys1>select gname ,master ,status from dba_repgroup where gname = 'REP';
    GNAME                          M STATUS
    ------------------------------ - ---------

    REP                            Y QUIESCED

    错误分析:

    此时从dba_repobject;中可以查看到输入的有GP用户的T表,事实上是没有创建此表的。所以才会出现上面的错误:ORA-23308: object GP.T does not exist or is invalid

    REPADMIN@bys1>select sname,oname,status,gname from dba_repobject;
    SNAME                          ONAME                          STATUS
    ------------------------------ ------------------------------ ----------
    GNAME
    ------------------------------
    GP                             T                              ERROR
    REP


    GP                             TEST                           VALID
    REP

    GP                             TEST$RP                        VALID
    REP

    GP                             TEST$RP                        VALID
    REP

    错误解决:

    删除错误配置的表和用户:

    REPADMIN@bys1>execute DBMS_REPCAT.DROP_MASTER_REPOBJECT (sname=>'gp',oname=>'T',type=>'TABLE');
    PL/SQL procedure successfully completed.

    验证:
    REPADMIN@bys1>col same for a10
    REPADMIN@bys1>col sname for a10
    REPADMIN@bys1>col oname for a10
    REPADMIN@bys1>col gname for a10
    REPADMIN@bys1>select sname,oname,status,gname from dba_repobject;
    SNAME      ONAME      STATUS     GNAME
    ---------- ---------- ---------- ----------
    GP         TEST       VALID      REP
    GP         TEST$RP    VALID      REP
    GP         TEST$RP    VALID      REP

    此时,再执行在源端添加复制节点的操作就可以顺利完成了。
    REPADMIN@bys1>execute dbms_repcat.add_master_database(gname=>'rep',master=>'bys2' ,use_existing_objects=>true ,copy_rows=>false ,propagation_mode=>'synchronous');
    PL/SQL procedure successfully completed.
    REPADMIN@bys1>col dblink for a10
    REPADMIN@bys1> select gname ,dblink ,masterdef ,master from dba_repsites where gname='REP';
    GNAME      DBLINK     M M
    ---------- ---------- - -
    REP        BYS1       Y Y
    REP        BYS2       N Y

  • 相关阅读:
    飞思卡尔单片机CAN模块的物理特性的示波器观察
    飞思卡尔CAN模块关于ID和mask的使用
    基本数据库语句
    深入分析Spring 与 Spring MVC容器
    Linux常用命令大全
    datagrid行内编辑时为datetimebox
    SVN上拖下来的项目,缺少build path怎么办?
    sql中的in与not in,exists与not exists的区别
    Spring中@Component的作用
    浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别
  • 原文地址:https://www.cnblogs.com/james1207/p/3322913.html
Copyright © 2011-2022 走看看