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

  • 相关阅读:
    Ubuntu 各版本代号简介
    Ubuntu如何同步网络时间
    Ubuntu下修改DNS重启也能用的方法
    provider networks和self-service networks
    openstack 架构
    系统故障排除
    系统日志管理
    系统引导
    网络管理
    Linux下开启FTP服务
  • 原文地址:https://www.cnblogs.com/james1207/p/3322913.html
Copyright © 2011-2022 走看看