解決Oracle19c?ORA-00904:“WMSYS“.“WM_CONCAT“:標(biāo)識(shí)符無(wú)效問(wèn)題
Oracle19c ORA-00904:“WMSYS“.“WM_CONCAT“:標(biāo)識(shí)符無(wú)效
錯(cuò)誤描述
- oracle19c ORA-24344: 成功, 但出現(xiàn)編譯錯(cuò)誤
- ORA-00904: “WMSYS”.“WM_CONCAT”: 標(biāo)識(shí)符無(wú)效
解決辦法
-- 設(shè)置實(shí)例 export ORACLE_SID=test1 --首先使用dba賬號(hào)登錄oracle數(shù)據(jù)庫(kù) sqlplus / as sysdba --解鎖wmsys用戶 alter user wmsys account unlock; --并為wmsys用戶授權(quán),可根據(jù)需要授權(quán),不建議授權(quán)所有權(quán)限 grant all privileges to wmsys; --如果不知道wmsys用戶的密碼,可以修改其密碼 alter user wmsys identified by 123456; -- 切換到pdb alter session set container=xxx; --并為wmsys用戶授權(quán),可根據(jù)需要授權(quán),不建議授權(quán)所有權(quán)限 grant all privileges to wmsys; --使用wmsys用戶登錄數(shù)據(jù)庫(kù) conn wmsys/123456 -- 切換到pdb,(必須在pdb中創(chuàng)建函數(shù)) alter session set container=xxx; --在wmsys下創(chuàng)建可用的wm_concat函數(shù),直接執(zhí)行以下語(yǔ)句 --定義類型 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; / --自定義行變列函數(shù): CREATE OR REPLACE FUNCTION wm_concat(P1 VARCHAR2) RETURN VARCHAR2 AGGREGATE USING WM_CONCAT_IMPL ; / --創(chuàng)建完成,給其創(chuàng)建同義詞及授權(quán),以供其他用戶能正常使用。 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標(biāo)識(shí)符無(wú)效
問(wèn)題描述
同事在部署zabbix監(jiān)控oracle的時(shí)候,報(bào)錯(cuò):

出錯(cuò)原因
數(shù)據(jù)庫(kù)里沒有WMSYS用戶
解決辦法
@?/rdbms/admin/owmctab.plb @?/rdbms/admin/owmaggrs.plb @?/rdbms/admin/owmaggrb.plb
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
DBeaver首次連接Oracle驅(qū)動(dòng)問(wèn)題及解決
本文介紹了使用DBeaver連接Oracle數(shù)據(jù)庫(kù)時(shí),配置驅(qū)動(dòng)連接的方法,需要在“類路徑”->“全局庫(kù)”中添加ojdbc6.jar包,而直接添加文件無(wú)效2026-05-05
通過(guò)PLSQL Developer創(chuàng)建Database link,DBMS_Job,Procedure,實(shí)現(xiàn)Oracle
這篇文章主要介紹了通過(guò)PLSQL Developer創(chuàng)建Database link,DBMS_Job,Procedure,實(shí)現(xiàn)Oracle跨庫(kù)傳輸數(shù)據(jù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Oracle undo_management參數(shù)不一致錯(cuò)誤
因RAC的undo_management參數(shù)不一致導(dǎo)致Oracle數(shù)據(jù)庫(kù)mount報(bào)ORA-01105 ORA-01606錯(cuò)誤,本文就這個(gè)問(wèn)題2013-11-11
ORACLE實(shí)現(xiàn)自定義序列號(hào)生成的方法
這篇文章主要為大家詳細(xì)介紹了ORACLE實(shí)現(xiàn)自定義序列號(hào)生成的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
oracle查詢字段類型長(zhǎng)度等字段信息簡(jiǎn)單代碼示例
這篇文章主要給大家介紹了關(guān)于oracle查詢字段類型長(zhǎng)度等字段信息的相關(guān)資料,文中介紹了如何查詢Oracle數(shù)據(jù)庫(kù)中表的字符集和字段長(zhǎng)度類型,包括VARCHAR2字段的兩種表示方式及其區(qū)別,需要的朋友可以參考下2024-12-12
Oracle 11g如何清理數(shù)據(jù)庫(kù)的歷史日志詳解
這篇文章主要給大家介紹了關(guān)于Oracle 11g如何清理數(shù)據(jù)庫(kù)歷史日志的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-07-07
Oracle 存儲(chǔ)過(guò)程 procedure不允許使用 return 語(yǔ)句的解決方
Oracle存儲(chǔ)過(guò)程中RETURN語(yǔ)句的使用存在嚴(yán)格限制:在存儲(chǔ)過(guò)程(PROCEDURE)中不允許使用,否則會(huì)引發(fā)PLS-00372編譯錯(cuò)誤;而在函數(shù)(FUNCTION)中則必須使用RETURN并返回指定值,如需在存儲(chǔ)過(guò)程中實(shí)現(xiàn)提前退出功能,建議采用GOTO跳轉(zhuǎn)、條件判斷或異常處理等替代方案2026-05-05

