ORA-00904:"WM_CONCAT":标识符无效
发布时间:2020-08-08 17:41:11
来源:ITPUB博客
阅读:208
今天客户现场业务甩给我一个报错让处理,ora-00904:"WM_CONCAT":标识符无效。
初步分析了下场景:
前天因为在原先一套库要删除,而他们业务用户A使用的便是该套计划删除的库,故导出A用户,导入到新环境中,expdp/impdp导入导出中均无报错。昨天在新环境给恢复成功,今天业务反映有报错,在新环境中查看确实没有该function,而老环境中有该function,但是是用户B的,猜测之前老环境是给A建立了B的synonym。
解决方法:
1、获取创建该函数的DDL语句,在新环境中直接创建该functionSQL> set long 999
SQL> select dbms_metadata.get_ddl('FUNCTION','WM_CONCAT','TBCS') from dual;
DBMS_METADATA.GET_DDL('FUNCTION','WM_CONCAT','TBCS')
--------------------------------------------------------------------------------
CREATE OR REPLACE EDITIONABLE FUNCTION "TBCS"."WM_CONCAT" (P1 VARCHAR2)
RETURN clob AGGREGATE USING WM_CONCAT_IMPL;
执行DDL语句SQL> CREATE OR REPLACE EDITIONABLE FUNCTION "AOPEN"."WM_CONCAT" (P1 VARCHAR2) RETURN clob AGGREGATE USING WM_CONCAT_IMPL;
2 /
Warning: Function created with compilation errors.
SQL>
此操作后,明显报错了,让业务测试,肯定测不过,查看函数是无效的SQL> select OWNER,OBJECT_NAME,SUBOBJECT_NAME,OBJECT_TYPE,LAST_DDL_TIME from dba_objects where object_name=upper('wm_concat') ;
OWNER OBJECT_NAME SUBOBJECT_NAME OBJECT_TYPE LAST_DDL_TIME
-------------------- ------------------------------ -----------