ORACLE在JOB里执行定时清理CDC变更集的存储过程

qq_41070571 2018-04-02 03:55:27
我想创建这么一个存储过程
SQL> create or replace procedure BMSXY_SP_CDCXY as
2 begin
3 DBMS_CDC_PUBLISH.PURGE_CHANGE_SET
4 ('CDC_SET_BMSXY','sysdate-3'
5 );
6 end;
7 /
Warning: Procedure created with compilation errors
为啥不行呢,变更集是存在的
...全文
980 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2018-04-04
  • 打赏
  • 举报
回复
解决了就好,的确这种坑会让人忙半天 的。
qq_41070571 2018-04-03
  • 打赏
  • 举报
回复
破案了。。。10g这个包里只有一个参数,变更集,没有purge_date这个参数。。。坑!
qq_41070571 2018-04-02
  • 打赏
  • 举报
回复
引用 9 楼 wmxcn2000 的回复:
dba也可能不行,需要显式的授权。
DBMS_CDC_PUBLISH你是想说授权这个吗 但是这个的其他操作是可以的 比如DBMS_CDC_PUBLISH.ALTER_CHANGE_SET();这种 本身我之前也有过授权 SQL> grant execute ON dbms_cdc_publish TO cdc_publisher;
qq_41070571 2018-04-02
  • 打赏
  • 举报
回复
引用 8 楼 baidu_36457652 的回复:
有DBA权限都报错吗?
确实是权限问题吗?语句本身没问题?
卖水果的net 2018-04-02
  • 打赏
  • 举报
回复
dba也可能不行,需要显式的授权。
  • 打赏
  • 举报
回复
有DBA权限都报错吗?
qq_41070571 2018-04-02
  • 打赏
  • 举报
回复
SQL> create or replace procedure BMSXY_SP_CDCXY as
  2  begin
  3  DBMS_CDC_PUBLISH.PURGE_CHANGE_SET
  4                        ('CDC_SET_BMSXY','sysdate-3'
  5                         );
  6  end;
  7  /
 
Warning: Procedure created with compilation errors
 
SQL> show errors;
Errors for PROCEDURE CDC_PUBLISHER.BMSXY_SP_CDCXY:
 
LINE/COL ERROR
-------- ---------------------------------------------------------------------------
3/1      PLS-00306: wrong number or types of arguments in call to 'PURGE_CHANGE_SET'
3/1      PL/SQL: Statement ignored
换了一个当时创建这个变更集的用户,报错如下 怎么回事啊??求解~~~~
卖水果的net 2018-04-02
  • 打赏
  • 举报
回复
引用 4 楼 qq_41070571 的回复:
@卖水果的net 需要声明?这个不是自带的程序吗
这个是系统的一个包,看这个提示, 应该没有权限 ,你用 system (或sys) 给你当前用户做一个授权 SQL> grant execute on BMSXY_CDC_CONF to 当前用户名;
qq_41070571 2018-04-02
  • 打赏
  • 举报
回复
引用 5 楼 wmxcn2000 的回复:
[quote=引用 4 楼 qq_41070571 的回复:] @卖水果的net 需要声明?这个不是自带的程序吗
这个是系统的一个包,看这个提示, 应该没有权限 ,你用 system (或sys) 给你当前用户做一个授权 SQL> grant execute on BMSXY_CDC_CONF to 当前用户名;[/quote]
引用 5 楼 wmxcn2000 的回复:
[quote=引用 4 楼 qq_41070571 的回复:] @卖水果的net 需要声明?这个不是自带的程序吗
这个是系统的一个包,看这个提示, 应该没有权限 ,你用 system (或sys) 给你当前用户做一个授权 SQL> grant execute on BMSXY_CDC_CONF to 当前用户名;[/quote] 额 BMSXY_CDC_CONF这个就是我当前执行这个操作的用户,是DBA
qq_41070571 2018-04-02
  • 打赏
  • 举报
回复
@卖水果的net 需要声明?这个不是自带的程序吗
qq_41070571 2018-04-02
  • 打赏
  • 举报
回复
SQL> create or replace procedure BMSXY_SP_CDCXY as
  2  begin
  3  DBMS_CDC_PUBLISH.PURGE_CHANGE_SET
  4                        ('CDC_SET_BMSXY','sysdate-3'
  5                         );
  6  end;
  7  /
 
Warning: Procedure created with compilation errors
 
SQL> show errors;
Errors for PROCEDURE BMSXY_CDC_CONF.BMSXY_SP_CDCXY:
 
LINE/COL ERROR
-------- ---------------------------------------------------------
3/1      PLS-00201: identifier 'DBMS_CDC_PUBLISH' must be declared
3/1      PL/SQL: Statement ignored
 
这样的
卖水果的net 2018-04-02
  • 打赏
  • 举报
回复

-- show errors 一下,看看什么错误 

SQL> 
SQL> create or replace procedure BMSXY_SP_CDCXY as
  2   begin
  3   DBMS_CDC_PUBLISH.PURGE_CHANGE_SET
  4  
  5                         ('CDC_SET_BMSXY','sysdate-3'
  6                          );
  7   end;
  8  /
Warning: Procedure created with compilation errors

SQL> show errors;
Errors for PROCEDURE XSNWSH_USER.BMSXY_SP_CDCXY:
LINE/COL ERROR
-------- --------------------------------------------
3/2      PLS-00201: 必须声明标识符 'DBMS_CDC_PUBLISH'
3/2      PL/SQL: Statement ignored

SQL> 
qq_41070571 2018-04-02
  • 打赏
  • 举报
回复
自己顶一个,大佬解答一下

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧