oracle19c ora-00904:“wmsys“.“wm_concat“:标识符无效
错误描述
- oracle19c ora-24344: 成功, 但出现编译错误
- ora-00904: “wmsys”.“wm_concat”: 标识符无效
解决办法
-- 设置实例 export oracle_sid=test1 --首先使用dba账号登录oracle数据库 sqlplus / as sysdba --解锁wmsys用户 alter user wmsys account unlock; --并为wmsys用户授权,可根据需要授权,不建议授权所有权限 grant all privileges to wmsys; --如果不知道wmsys用户的密码,可以修改其密码 alter user wmsys identified by 123456; -- 切换到pdb alter session set container=xxx; --并为wmsys用户授权,可根据需要授权,不建议授权所有权限 grant all privileges to wmsys; --使用wmsys用户登录数据库 conn wmsys/123456 -- 切换到pdb,(必须在pdb中创建函数) alter session set container=xxx; --在wmsys下创建可用的wm_concat函数,直接执行以下语句 --定义类型 create or replace type wm_concat_impl as object ( curr_str varchar2(32767), static function odciaggregateinitialize(sctx in out wm_concat_impl) return number, member function odciaggregateiterate(self in out wm_concat_impl, p1 in varchar2) return number, member function odciaggregateterminate(self in wm_concat_impl, returnvalue out varchar2, flags in number) return number, member function odciaggregatemerge(self in out wm_concat_impl, sctx2 in wm_concat_impl) return number ); / --定义类型body: create or replace type body wm_concat_impl is static function odciaggregateinitialize(sctx in out wm_concat_impl) return number is begin sctx := wm_concat_impl(null) ; return odciconst.success; end; member function odciaggregateiterate(self in out wm_concat_impl, p1 in varchar2) return number is begin if(curr_str is not null) then curr_str := curr_str || ',' || p1; else curr_str := p1; end if; return odciconst.success; end; member function odciaggregateterminate(self in wm_concat_impl, returnvalue out varchar2, flags in number) return number is begin returnvalue := curr_str ; return odciconst.success; end; member function odciaggregatemerge(self in out wm_concat_impl, sctx2 in wm_concat_impl) return number is begin if(sctx2.curr_str is not null) then self.curr_str := self.curr_str || ',' || sctx2.curr_str ; end if; return odciconst.success; end; end; / --自定义行变列函数: create or replace function wm_concat(p1 varchar2) return varchar2 aggregate using wm_concat_impl ; / --创建完成,给其创建同义词及授权,以供其他用户能正常使用。 create public synonym wm_concat_impl for wmsys.wm_concat_impl / create public synonym wm_concat for wmsys.wm_concat / grant execute on wm_concat_impl to public / grant execute on wm_concat to public /
处理ora-00904:wm_concat标识符无效
问题描述
同事在部署zabbix监控oracle的时候,报错:
出错原因
数据库里没有wmsys用户
解决办法
@?/rdbms/admin/owmctab.plb @?/rdbms/admin/owmaggrs.plb @?/rdbms/admin/owmaggrb.plb
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论