ora-04098错误解决方法

数据库版本:8.1.5

平台:solaris 5.7

背景:

用户建立了一个trigger:

create or replace trigger ddl_deny

before create or alter or drop on database

declare

begin

insert into ddl_logs values(ora_dict_obj_owner,ora_dict_obj_name,sysdate);

exception

when no_data_found then

null;

end;

目的大概就是记录下所有的ddl操作,但trigger建立有错误,发现:

11:30:08 system@ora250>alter trigger ddl_deny disable;

alter trigger ddl_deny disable

*

error 位于第 1 行:

ora-04098: 触发器 ddl_deny 无效且未通过重新验证

11:31:45 system@ora250>drop trigger ddl_deny;

drop trigger ddl_deny

*

error 位于第 1 行:

ora-04098: 触发器 ddl_deny 无效且未通过重新验证

此时触发器不能编译过去,也不能删除了,因为触发器本身里面定义了ddl操作的触发,产生ora-04098: 触发器 ddl_deny 无效且未通过重新验证。

解决方法:

1、首先查看用户的权限是否正确:

select owner, object_name, object_type, status from dba_objects where object_name = ;

12:42:38 system@ora250>select owner, object_name, object_type, status from dba_o

bjects where object_name=ddl_deny;

owner          object_name   object_type status

———————————— ————–

system           ddl_deny     trigger invalid

发现用户权限没有问题。

2、接着设置诊断事件alter session set events=4098 trace name errorstack level 3;,查看trace文件的内容如下:

dump file /db1/app/oracle/admin/ora250/udump/ora250_ora_6834.trc

oracle8i enterprise edition release 8.1.5.0.0 – production

with the partitioning and java options

pl/sql release 8.1.5.0.0 – production

oracle_home = /db1/app/oracle/product/8.1.5

system name: sunos

node name: db250

release: 5.7

version: generic_106541-08

machine: sun4u

instance name: ora250

redo thread mounted by this instance: 1

oracle process number: 17

unix process pid: 6834, image: oracle@db250 (tns v1-v3)

*** session id30.829) 2004.11.17.20.53.38.000

*** 2004.11.17.20.53.38.000

ksedmp: internal or fatal error

ora-04098: 触发器ddl_deny 无效且未通过重新验证

current sql statement for this session:

alter trigger ddl_deny disable

—– call stack trace —–

calling call entry argument values in hex

location type point (? means dubious value)

——————– ——– ——————– —————————-

ksedmp()+160 call ksedst()+0 508 ? 1 ? ffbeb31c ?

ffbeadc0 ? ffbeada4 ? 0 ?

ksddoa()+248 ptr_call 00000000 3 ? 0 ? 0 ? 16594fc ?

c0000025 ? 0 ?

ksdpcg()+212 call ksddoa()+0 16eb0ac ? 16e4c24 ? 3 ?

24939c ? 16eb0ac ? 16eb090 ?

ksdpec()+236 call ksdpcg()+0 1002 ? ffbeb8e4 ? 16e4c24 ?

0 ? 0 ? 0 ?

ksfpec()+136 call ksdpec()+0 1002 ? 165a800 ? 165a800 ?

7f3 ? 1659995 ? 16594fc ?

kgesev()+100 ptr_call 00000000 1659494 ? 1002 ? 262f80 ?

1002 ? 1 ? 0 ?

ksesec1()+48 call kgesev()+0 1659494 ? 16e8ca4 ? 1002 ?

1 ? ffbeba60 ? 1 ?

kkttrex()+2112 call ksesec1()+0 1002 ? 1 ? 8 ? 8e859d26 ? 2 ?

2 ?

kktexeevt()+616 call kkttrex()+0 8e996a20 ? 8e973b48 ?

ffbebae4 ? 1659000 ?

8e859d6c ? 165e800 ?…..

发现是内部严重错误,其他看不出太多错误信息,于是想到采用隐含参数_system_trigger_enabled=false,在数据库启动的时候让所有触发器不起作用,然后删除。数据库8.1.5的提示没这个参数,于是查询了一下:

14:28:32 system@ora815>select ksppinm from x$ksppi where substr(ksppinm,1,1)=_

and ksppinm like %tri% order by ksppinm;

ksppinm

——————————————————————————-

_cleanup_rollback_entries

_distributed_lock_timeout

_distributed_recovery_connection_hold_time

_number_cached_attributes

_system_trig_enabled

发现8.1.5版本的参数是_system_trig_enabled,于是让用户在初始化参数文件中设置此参数为false,然后重启数据库,删除trigger,删除成功。

至此问题解决。

oracle 4098,ORA-04098错误解决方法-数据库专栏,ORACLE相关推荐

  1. Oracle 17002 For Windows错误解决方法

    Windos 平台下Oracle连接报 17002错误解决方法 因电脑意外断电导致操作系统再次启动时,系统日志已经写满,启动Oracle服务时无法写日志,所以无法启动成功,解决办法: 一.删除系统的错 ...

  2. oracle命令报01034,ORA-01034错误的解决办法-数据库专栏,ORACLE

    ora-01034错误的解决办法 --oracle常见错误之一 事先说明,oracle高手是不需要看本文的. 这是个oracle数据库服务器比较常见的错误.有经验的用户几乎马上就能解决这个错误,再不济 ...

  3. cbuilder6 不用客户端oracle直连,Client端不安裝Oracle而用PowerBuilder直連的方法-数据库专栏,ORACLE...

    client端不安裝oracle的方法 廣東中山   謝殿宏 2001/04/03 前言: 曾在網上見到許多人問client端不安裝oracle而使pb程序連上後臺oracle資料庫的方法, 本人從事 ...

  4. oracle 03002,RMAN-03002 RMAN-06091 错误解决方法

    客户自从使用nbu 以来一直报这个错误.因为以前一直都是正常的.所以晚上先让停止了nbu的备份.单独使用以前的脚本正常.报错信息一样.所以怀疑是不是脚本的问题. 查询网上分析原因如下: Symptom ...

  5. window 2008 32位系统安装oracle 10g数据库,Oracle 10g for Windows 32bit安装图解-数据库专栏,ORACLE...

    今天下载到oracle 10g for windows 32bit,安装时截图,给大家一个参考. 这一步是要耗费很长时间的. 上面是图解.总体来说,10g安装起来感觉更省事,不会出现9i时候的一些问题 ...

  6. oracle数据库中的回收站,Oracle 10G 中的"回收站"-数据库专栏,ORACLE

    oracle 10g 中的"回收站" by fenng http://www.dbanotes.net 在oracle 10g中,引入了一个回收站(recycle bin)的概念. ...

  7. oracle数据库要参考的书,[Oracle] 几本重要的电子图书下载-数据库专栏,ORACLE

    [oracle] 几本重要的电子图书下载 初始链接: http://www.dbanotes.net/oracle/db_books_download.htm 供oracle 技术爱好者参考. 这些内 ...

  8. oracle 交叉链接,Oracle里的交叉SQL语句写法-数据库专栏,ORACLE

    实例说明 资料表结构(红色为主键)==> 主表:test_part_cost_tab(料号资料表) part_no  varchar2(20) part_name  varchar2(50) 从 ...

  9. ORA-12520错误解决方法

    ORA-12520错误解决方法 参见: oracle查看允许的最大连接数和当前连接数等信息 两个参数间的关系:sessions=1.1*processes+5 c3p0hibernate ORA-12 ...

最新文章

  1. java 泛型多重限制_Java泛型:有界类型参数中的多重继承
  2. mysql定制rpm包_mysql运维管理-企业rpm包的定制
  3. Java内存模型与线程(思维导图)
  4. [Study Notes][001][gstreamer] memory
  5. 最大素数的c语言,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...
  6. 【conda】解决 An HTTP error occurred when trying to retrieve this URL.
  7. python 按钮更改输入框的值_利用 50 行 Python 代码构建一个在线文本生成器!
  8. 基于jedis.setnx(key, value)实现分布式锁
  9. 计算机编程专业有哪些,计算机本科编程专业开设的全部专业课程有哪些
  10. snipaste截图软件安装各种问题解决办法
  11. ARM嵌入式开发1:keil软件安装
  12. 鼠标光标变成横线了!
  13. 日月光华深度学习(五)--卫星图像识别tf.data、卷积综合实例
  14. 理解js执行的过程:JS运行三部曲
  15. 基于微信小程序云开发实现的婚礼邀请函模板,可以自行定制开发
  16. Redis全部知识总结(概念、安装、用法、数据类型、事务、持久化、Jeids、订阅系统、缓存穿透及雪崩等)
  17. 数据中心机柜散热解决方案,知道这两点就够了!
  18. ui设计师职业规划怎么写_职业生涯规划报告---ui设计师.doc
  19. 虎书学习笔记6:图形学基础数学(重心坐标系、三维三角形)
  20. exe免杀宝典 #exe免杀 #Python打包exe

热门文章

  1. socket多进程编程
  2. 从零开始学飞塔第一篇:飞塔防火墙基本上网配置(PPPoE拨号固定IP上网)FortiGate Broadband internet access
  3. ios13.5.1降级_四条重磅消息,iOS 13.5.1 也能降级 iOS 13.4.1
  4. 【思维导图怎么画】万彩脑图大师教程 | 嵌入企业Logo到思维导图
  5. nb 底特律 外包公司,招人,
  6. java 纳秒 秒_如何使用TimeUnit枚举将纳秒转换为秒?
  7. 机器学习面试题之逻辑回归(二)
  8. 关于sim/usim的一些概念
  9. JS遍历(循环)——JS对象遍历(循环)JS数组遍历(循环)
  10. 爬虫清洗:python strip()函数 去空格\n\r\t函数的用法