ORA-24147规则不存在,Oracle故障修复与远程处理技巧分享,网友推荐实用解决方案

文章导读
解决方案:登录sys用户,执行SQL语句查询规则名称:select name from DBA_RULE_SETS where rule_set_owner='SYS';然后删除规则:exec DBMS_RULE_ADM.DROP_RULE_SET(rule_set_name=>'你的规则名',force=>TRUE);重启数据库即可解决。
📋 目录
  1. A 网友分享1
  2. B 网友分享2
  3. C 网友分享3
  4. D 网友分享4
  5. E 网友分享5
  6. F 网友分享6
A A

解决方案:登录sys用户,执行SQL语句查询规则名称:select name from DBA_RULE_SETS where rule_set_owner='SYS';然后删除规则:exec DBMS_RULE_ADM.DROP_RULE_SET(rule_set_name=>'你的规则名',force=>TRUE);重启数据库即可解决。

网友分享1

今天遇到ORA-24147: rule string.string does not exist这个错误,是因为之前创建的规则集被删除了,但是job还在调度。直接进sys登录,查一下dbms_rule_adm里面的规则集,找到对应的删掉就好了。命令是:BEGIN DBMS_RULE_ADM.DROP_RULE_SET('SYS.RULESET_NAME'); END; /

网友分享2

远程处理的话,用sqlplus sys/password@远程ip/orcl as sysdba,然后执行drop rule set。记得force=true,不然删不掉依赖的。测试环境我就是这么干的,超级快。

ORA-24147规则不存在,Oracle故障修复与远程处理技巧分享,网友推荐实用解决方案

网友分享3

ORA-24147故障修复,步骤:1.查询规则:select object_name from dba_objects where object_type='RULE SET'; 2.删除:exec dbms_rule_admin.drop_rule_set(rule_set_name=>'规则名'); 3.清理job:select * from dba_scheduler_jobs where job_name like '%规则相关%';然后drop job。

网友分享4

我用plsql developer远程连,sys权限登录,运行这个脚本就行:DECLAREBEGIN DBMS_RULE_ADM.DROP_RULE_SET(rule_set_name => 'SYS.SAQJ_PUSH_RULES', force_options => DBMS_RULE_ADM.FORCE_FULL);END;/ 完美解决,不用重启。

ORA-24147规则不存在,Oracle故障修复与远程处理技巧分享,网友推荐实用解决方案

网友分享5

Oracle 11g上遇到,原因是升级后旧规则没了。修复:sql> conn sys/pwd as sysdba; sql> select * from dba_rule_sets where name like '%旧规则%'; sql> exec dbms_rule_adm.drop_rule_set('规则名',force=>dbms_rule_adm.force_full); 远程用dblink也能操作。

ORA-24147规则不存在,Oracle故障修复与远程处理技巧分享,网友推荐实用解决方案

网友分享6

实用技巧:写个脚本批量删规则。for rule in (select name from dba_rule_sets where rule_set_owner='你的schema') loop execute immediate 'begin dbms_rule_adm.drop_rule_set('''||rule.name||''',force=>true); end;'; end loop; 保存为.sql远程跑。

FAQ
Q: ORA-24147怎么快速查规则名?
A: select name from dba_rule_sets;
Q: 远程删规则需要什么权限?
A: sysdba权限,用sqlplus远程连接。
Q: 删除后还要重启吗?
A: 通常不用,执行后job就能正常跑。
Q: 11g和12c修复一样吗?
A: 一样,用dbms_rule_adm包。