ora00279解决办法_oracle物化视图日志表

ora00279解决办法_oracle物化视图日志表某物化视图在增量刷新的时候报错ora-00920,尝试全量刷新的时候,报错ora-00904。BEGINDBMS_MVIEW.REFRESH(‘MV_ABCD_K_PPLLCJ’,’F’);END;ORA-12018:在创建”MYJUKKA”.”MV_ABCD_K_PPLLCJ”的代码时出现以下错误ORA-00920:无效的关系运算符ORA-06512:在”SYS.SNAPSHOT”,line…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

某物化视图在增量刷新的时候报错ora-00920,尝试全量刷新的时候,报错ora-00904。

BEGIN

DBMS_MVIEW.REFRESH(‘MV_ABCD_K_PPLLCJ’,’F’);

END;

ORA-12018:在创建”MYJUKKA”.”MV_ABCD_K_PPLLCJ”的代码时出现以下错误

ORA-00920:无效的关系运算符

ORA-06512:在”SYS.SNAPSHOT”, line 2809

ORA-06512:在”SYS.SNAPSHOT”, line 3025

ORA-06512:在”SYS.SNAPSHOT”, line 2994

ORA-06512:在line 1

SQL>

1

2

3

4

5

6

7

8

9

10

11

12

BEGIN

DBMS_MVIEW.REFRESH(‘MV_ABCD_K_PPLLCJ’,’F’);

END;

ORA-12018:在创建”MYJUKKA”.”MV_ABCD_K_PPLLCJ”的代码时出现以下错误

ORA-00920:无效的关系运算符

ORA-06512:在”SYS.SNAPSHOT”,line2809

ORA-06512:在”SYS.SNAPSHOT”,line3025

ORA-06512:在”SYS.SNAPSHOT”,line2994

ORA-06512:在line1

SQL>

BEGIN

DBMS_MVIEW.REFRESH(‘MV_ABCD_K_PPLLCJ’,’C’,ATOMIC_REFRESH=>false);

END;

ORA-12018:在创建”MYJUKKA”.”MV_ABCD_K_PPLLCJ”的代码时出现以下错误

ORA-00904:标识符无效

ORA-06512:在”SYS.SNAPSHOT”, line 2809

ORA-06512:在”SYS.SNAPSHOT”, line 3025

ORA-06512:在”SYS.SNAPSHOT”, line 2994

ORA-06512:在line 1

SQL>

1

2

3

4

5

6

7

8

9

10

11

12

BEGIN

DBMS_MVIEW.REFRESH(‘MV_ABCD_K_PPLLCJ’,’C’,ATOMIC_REFRESH=>false);

END;

ORA-12018:在创建”MYJUKKA”.”MV_ABCD_K_PPLLCJ”的代码时出现以下错误

ORA-00904:标识符无效

ORA-06512:在”SYS.SNAPSHOT”,line2809

ORA-06512:在”SYS.SNAPSHOT”,line3025

ORA-06512:在”SYS.SNAPSHOT”,line2994

ORA-06512:在line1

SQL>

查了mview的定义,直接select是没有问题,再查了mos,也没有查到相关的文档或bug,所以,决定做10046看看报错究竟出在哪里。

在10046的trace文件中,我们找到了相关报错:

PARSE ERROR #47436954909072:len=1055 dep=1 uid=147 oct=3 lid=147 tim=1442993043265145 err=920

SELECT DISTINCT LOG$.”POLNO” FROM (SELECT MLOG$.”POLNO” “POLNO” FROM “MYJUKKA”.”MLOG$_ZYX_ABCD_K_PPLLCJ” MLOG$ WHERE “SNAPTIME$$” > :1 AND (“DMLTYPE$$”!=’I’)) LOG$ WHERE (LOG$.”POLNO”) NOT IN

(SELECT MAX_TAB$.”POLNO” “POLNO” FROM (SELECT “ZYX_ABCD_K_PPLLCJ”.”POLNO” “POLNO”,”ZYX_ABCD_K_PPLLCJ”.”PARTY_NO” “PARTY_NO” …(snip)… WHERE SYS_AUDIT (CASE WHEN 1=1 THEN 1 ELSE NULL END,’MYJUKKA’,’ZYX_ABCD_K_PPLLCJ’,’MYPOLICY’,3) IS NUL) “MAS_TAB$$”

WHERE LOG$.”POLNO” = MAS_TAB$.”POLNO”)

EXEC #47436954884200:c=1063838,e=5655639,p=6341,cr=10165,cu=802,mis=0,r=0,dep=0,og=1,plh=0,tim=1442993043266925

ERROR #47436954884200:error=12018 time=1442993043266991

1

2

3

4

5

6

7

PARSEERROR#47436954909072:len=1055 dep=1 uid=147 oct=3 lid=147 tim=1442993043265145 err=920

SELECTDISTINCTLOG$.”POLNO”FROM(SELECTMLOG$.”POLNO””POLNO”FROM”MYJUKKA”.”MLOG$_ZYX_ABCD_K_PPLLCJ”MLOG$WHERE”SNAPTIME$$”>:1AND(“DMLTYPE$$”!=’I’))LOG$WHERE(LOG$.”POLNO”)NOTIN

(SELECTMAX_TAB$.”POLNO””POLNO”FROM(SELECT”ZYX_ABCD_K_PPLLCJ”.”POLNO””POLNO”,”ZYX_ABCD_K_PPLLCJ”.”PARTY_NO””PARTY_NO”…(snip)…WHERESYS_AUDIT(CASEWHEN1=1THEN1ELSENULLEND,’MYJUKKA’,’ZYX_ABCD_K_PPLLCJ’,’MYPOLICY’,3)ISNUL)”MAS_TAB$$”

WHERELOG$.”POLNO”=MAS_TAB$.”POLNO”)

EXEC#47436954884200:c=1063838,e=5655639,p=6341,cr=10165,cu=802,mis=0,r=0,dep=0,og=1,plh=0,tim=1442993043266925

ERROR#47436954884200:error=12018 time=1442993043266991

这个语句,我们直接去执行的时候,也是报错ora-920的。具体的报错是在SYS_AUDIT上,发现这个字段是放在where后面进行过滤,但是其表ZYX_ABCD_K_PPLLCJ是没有这个字段的。

另外,这个语句,所涉及到的表是ZYX_ABCD_K_PPLLCJ,而表ZYX_ABCD_K_PPLLCJ是MV_ABCD_K_PPLLCJ物化视图的基表。

所以,MV_ABCD_K_PPLLCJ物化视图的基表是ZYX_ABCD_K_PPLLCJ,而ZYX_ABCD_K_PPLLCJ在物化视图刷新时,执行了select ZYX_ABCD_K_PPLLCJ where SYS_AUDIT(case when)语句,而SYS_AUDIT字段并不存在ZYX_ABCD_K_PPLLCJ表,所以就报错ora-920了。

从名字看audit好像和审计有关,查了各种审计,发现在ZYX_ABCD_K_PPLLCJ上有FGA的细粒度审计,对ZYX_ABCD_K_PPLLCJ表的select操作进行记录。

由于SYS_AUDIT应该是在FGA审计的过程中产生,我在测试环境中,尝试刷新MV_ABCD_K_PPLLCJ表,在刷到一半的途中ctrl+c中断,再次刷新也报错了。因此怀疑一开始的报错是否也是被意外中断导致。

解决方法:disable FGA的审计策略,在全量刷新或者增量刷新,无报错。再enable FGA,问题解决。

进一步查询发现,Bug 18173440 – ORA-12018 / ORA-904 executing DBMS_MVIEW.REFRESH (Doc ID 18173440.8)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191549.html原文链接:https://javaforall.net

(0)
上一篇 2026年1月30日 上午7:22
下一篇 2026年1月30日 上午8:01


相关推荐

  • linux运维面试题总结「建议收藏」

    linux运维面试题总结「建议收藏」一、问答题1、安装linux系统对硬盘分区时,必须有那两种分区类型?2、简述raid0、raid1、raid5三种工作原理及特点3、linux下如何改ip,主机名,dns?4、一个ext3的文件分区,当使用touchtest.file命令创建一个新文件时报错,报错的信息是显示磁盘已满,但是采用df-h命令查看磁盘大小时,只使用了60%的磁盘空间,为什么会出现这个情况,说说你的理由5、…

    2022年5月4日
    51
  • 说说 SpringMVC 工作原理

    说说 SpringMVC 工作原理说说SpringMVC工作原理1、SpringMVC流程2、组件说明3、MVC模式4、SpringMVC是什么先看一张SpringMVC的工作原理图:1、SpringMVC流程1、用户发送请求至前端控制器DispatcherServlet。2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServ

    2022年5月14日
    46
  • 箭头函数与普通函数区别

    箭头函数与普通函数区别箭头函数与普通函数区别一 箭头函数是匿名函数 不能作为构造函数 不能使用 new 二 箭头函数内没有 arguments 可以用展开运算符 解决三 箭头函数的 this 始终指向父级上下文 箭头函数的 this 取决于定义位置父级的上下文 跟使用位置没关系 普通函数 this 指向调用的那个对象 四 箭头函数不能通过 call apply bind 方法直接修改它的 this 指向 call aaply bind 会默认忽略第一个参数 但是可以正常传参 五 箭头函数没有原型属性一 箭头函数是匿名函数 不能作为

    2026年3月19日
    2
  • windows10 kms激活_windows10激活密钥在哪

    windows10 kms激活_windows10激活密钥在哪@echooff&setlocalEnableDelayedExpansion&color5etitleKMS_ActivationforWindows10-(Comlan)echo::::::::::::::::::::::::::::::::::::::::::::::::echo::自动检查Win10的版本,导入相应的KMS密钥::echo…

    2025年7月9日
    5
  • 解析LayoutSubviews

    解析LayoutSubviews解析LayoutSubviews原博:http://www.cnblogs.com/YouXianMing/p/3897543.html从百度上搜索了一下layoutSubviews的用处,以下是搜索的结果,当然,笔者是会一一验证的.1、init初始化不会触发layoutSubviews2、addSubview会触发layoutSubviews3、设置vie

    2022年7月25日
    11
  • Python模块之Shapely

    Python模块之ShapelyShapely 通过 Python 的 ctypes 模块 对平面特征进行集合理论分析和操作 进行地理信息系统研究 数据处理 空间分析的常用模块

    2026年3月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号