oracle 4098,ORA-04098错误解决方法-数据库专栏,ORACLE
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相关推荐
- Oracle 17002 For Windows错误解决方法
Windos 平台下Oracle连接报 17002错误解决方法 因电脑意外断电导致操作系统再次启动时,系统日志已经写满,启动Oracle服务时无法写日志,所以无法启动成功,解决办法: 一.删除系统的错 ...
- oracle命令报01034,ORA-01034错误的解决办法-数据库专栏,ORACLE
ora-01034错误的解决办法 --oracle常见错误之一 事先说明,oracle高手是不需要看本文的. 这是个oracle数据库服务器比较常见的错误.有经验的用户几乎马上就能解决这个错误,再不济 ...
- cbuilder6 不用客户端oracle直连,Client端不安裝Oracle而用PowerBuilder直連的方法-数据库专栏,ORACLE...
client端不安裝oracle的方法 廣東中山 謝殿宏 2001/04/03 前言: 曾在網上見到許多人問client端不安裝oracle而使pb程序連上後臺oracle資料庫的方法, 本人從事 ...
- oracle 03002,RMAN-03002 RMAN-06091 错误解决方法
客户自从使用nbu 以来一直报这个错误.因为以前一直都是正常的.所以晚上先让停止了nbu的备份.单独使用以前的脚本正常.报错信息一样.所以怀疑是不是脚本的问题. 查询网上分析原因如下: Symptom ...
- window 2008 32位系统安装oracle 10g数据库,Oracle 10g for Windows 32bit安装图解-数据库专栏,ORACLE...
今天下载到oracle 10g for windows 32bit,安装时截图,给大家一个参考. 这一步是要耗费很长时间的. 上面是图解.总体来说,10g安装起来感觉更省事,不会出现9i时候的一些问题 ...
- oracle数据库中的回收站,Oracle 10G 中的"回收站"-数据库专栏,ORACLE
oracle 10g 中的"回收站" by fenng http://www.dbanotes.net 在oracle 10g中,引入了一个回收站(recycle bin)的概念. ...
- oracle数据库要参考的书,[Oracle] 几本重要的电子图书下载-数据库专栏,ORACLE
[oracle] 几本重要的电子图书下载 初始链接: http://www.dbanotes.net/oracle/db_books_download.htm 供oracle 技术爱好者参考. 这些内 ...
- oracle 交叉链接,Oracle里的交叉SQL语句写法-数据库专栏,ORACLE
实例说明 资料表结构(红色为主键)==> 主表:test_part_cost_tab(料号资料表) part_no varchar2(20) part_name varchar2(50) 从 ...
- ORA-12520错误解决方法
ORA-12520错误解决方法 参见: oracle查看允许的最大连接数和当前连接数等信息 两个参数间的关系:sessions=1.1*processes+5 c3p0hibernate ORA-12 ...
最新文章
- java 泛型多重限制_Java泛型:有界类型参数中的多重继承
- mysql定制rpm包_mysql运维管理-企业rpm包的定制
- Java内存模型与线程(思维导图)
- [Study Notes][001][gstreamer] memory
- 最大素数的c语言,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...
- 【conda】解决 An HTTP error occurred when trying to retrieve this URL.
- python 按钮更改输入框的值_利用 50 行 Python 代码构建一个在线文本生成器!
- 基于jedis.setnx(key, value)实现分布式锁
- 计算机编程专业有哪些,计算机本科编程专业开设的全部专业课程有哪些
- snipaste截图软件安装各种问题解决办法
- ARM嵌入式开发1:keil软件安装
- 鼠标光标变成横线了!
- 日月光华深度学习(五)--卫星图像识别tf.data、卷积综合实例
- 理解js执行的过程:JS运行三部曲
- 基于微信小程序云开发实现的婚礼邀请函模板,可以自行定制开发
- Redis全部知识总结(概念、安装、用法、数据类型、事务、持久化、Jeids、订阅系统、缓存穿透及雪崩等)
- 数据中心机柜散热解决方案,知道这两点就够了!
- ui设计师职业规划怎么写_职业生涯规划报告---ui设计师.doc
- 虎书学习笔记6:图形学基础数学(重心坐标系、三维三角形)
- exe免杀宝典 #exe免杀 #Python打包exe
热门文章
- socket多进程编程
- 从零开始学飞塔第一篇:飞塔防火墙基本上网配置(PPPoE拨号固定IP上网)FortiGate Broadband internet access
- ios13.5.1降级_四条重磅消息,iOS 13.5.1 也能降级 iOS 13.4.1
- 【思维导图怎么画】万彩脑图大师教程 | 嵌入企业Logo到思维导图
- nb 底特律 外包公司,招人,
- java 纳秒 秒_如何使用TimeUnit枚举将纳秒转换为秒?
- 机器学习面试题之逻辑回归(二)
- 关于sim/usim的一些概念
- JS遍历(循环)——JS对象遍历(循环)JS数组遍历(循环)
- 爬虫清洗:python strip()函数 去空格\n\r\t函数的用法