首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >运行DBMS_COMPARISON.CONVERGE子程序的ORA-00942错误

运行DBMS_COMPARISON.CONVERGE子程序的ORA-00942错误
EN

Stack Overflow用户
提问于 2020-10-08 09:31:14
回答 1查看 145关注 0票数 0

当我运行一个使用DBMS_COMPARISON包在两个不同模式上同步两个表的存储过程时,得到ORA-00942表或视图不存在错误。

这大概就是我所拥有的:

代码语言:javascript
运行
复制
remote table        local comparison     local table    
DB1.PRODUCTS        DB2.PRODUCTS_CMP     DB2.PRODUCTS

这是本地DB2过程:

代码语言:javascript
运行
复制
create or replace PROCEDURE SYNC_SINGLE AS
          L_SCAN_INFO         SYS.DBMS_COMPARISON.COMPARISON_TYPE;
          L_RESULT            BOOLEAN;   
          L_COMPNAME          VARCHAR2(30);
BEGIN
          L_COMPNAME:='PRODUCT_CMP';
          
          SYS.DBMS_COMPARISON.PURGE_COMPARISON(
                   COMPARISON_NAME => L_COMPNAME
          );

          L_RESULT := 
                    SYS.DBMS_COMPARISON.COMPARE (
                    COMPARISON_NAME => L_COMPNAME,
                    SCAN_INFO       => L_SCAN_INFO,
                    PERFORM_ROW_DIF => TRUE
          );

          FOR ROW_ID IN (
                    SELECT    SCAN_ID
                    FROM      USER_COMPARISON_SCAN_SUMMARY
                    WHERE     COMPARISON_NAME = L_COMPNAME
                              AND STATUS = 'BUCKET DIF'
          )
          LOOP      
                    SYS.DBMS_COMPARISON.CONVERGE (
                              COMPARISON_NAME  => L_COMPNAME,
                              SCAN_ID          => ROW_ID.SCAN_ID,
                              SCAN_INFO        => L_SCAN_INFO,
                              CONVERGE_OPTIONS => SYS.DBMS_COMPARISON.CMP_CONVERGE_REMOTE_WINS, 
                              PERFORM_COMMIT   => FALSE
                    );
          END LOOP ROW_ID;

          SYS.DBMS_COMPARISON.PURGE_COMPARISON(
                   COMPARISON_NAME => L_COMPNAME
          );

END SYNC_SINGLE;

该过程以以下错误结束:

代码语言:javascript
运行
复制
ORA-00942: table or view does not exist
ORA-06512: a "SYS.DBMS_COMPARISON", line 734
ORA-06512: a "SYS.DBMS_COMPARISON", line 5964
ORA-06512: a "SYS.DBMS_COMPARISON", line 682
ORA-06512: a "DB2.SYNC_SINGLE", line 26
ORA-06512: a "DB2.SYNC_SINGLE", line 26
ORA-06512: a line 2

我想这里有个许可问题,但我搞不懂是什么。用户SYS已经获得了本地表DB2.PRODUCTS上的所有权限,而且,我在相同的模式上有其他表,我以相同的方式同步这些表,对于这些表,一切都进行得很好。查看表SYS.COMPARISON$和SYS.COMPARISON_COL$,一切似乎都配置正确。

有人能帮我建议一下我该检查什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-16 15:46:40

我找到了它是什么:AUTHID CURRENT_USER在过程声明中丢失了。

代码语言:javascript
运行
复制
create or replace PROCEDURE SYNC_SINGLE AUTHID CURRENT_USER AS
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64259644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档