oracle decode 01427,dbms_hm.run_check遇到ORA-00604、ORA-01427
11.2.0.3 下嘗試使用11g health monitor新特性時出現了ORA-00604、ORA-01427, 查詢MOS發現 (Bug 12385172: ORA-01427 WHEN EXECUTING DBMS_HM.RUN_CHECK),當 DB中存在case when then的function index時會觸發該BUG:
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE 11.2.0.3.0 Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
www.oracledatabase12g.com
SQL> exec dbms_hm.run_check('Dictionary Integrity Check','check-2');
BEGIN dbms_hm.run_check('Dictionary Integrity Check','check-2'); END;
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-01427: single-row subquery returns more than one row
ORA-06512: at "SYS.DBMS_HM", line 191
ORA-06512: at line 1
可以通過以下腳本找出 DB中case when then類型的函數索引:
-- Determine DDL statements (note: this will take a while to return results!)
set long 100000
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'PRETTY',true);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'TABLESPACE',false);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'SEGMENT_ATTRIBUTES',false);
exec dbms_metadata.set_transform_param(dbms_metadata.session_transform,'STORAGE',false);
-- Checking the DDL statement
col DDL form a100 word_wrapped
select dbms_metadata.get_ddl(RTRIM(UPPER(object_type)),
總結
以上是生活随笔為你收集整理的oracle decode 01427,dbms_hm.run_check遇到ORA-00604、ORA-01427的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 12c创建归档,实测创建
- 下一篇: oracle v$system_even