蒙在股里 发表于 2015-1-16 22:42:22

MYSQL网站制作之ORA-04098毛病办理办法

下面我将描述五个不使用MySQL的响亮理由。毛病|办理
ORA-04098毛病办理办法

数据库版本:8.1.5
平台:SOLARIS5.7



背景:

用户创建了一个TRIGGER:
createorreplacetriggerddl_deny
beforecreateoralterordropondatabase
declare
begin
insertintoddl_logsvalues(ora_dict_obj_owner,ora_dict_obj_name,sysdate);
exception
whenno_data_foundthen
null;
end;
目标也许就是纪录下一切的DDL操纵,但TRIGGER创建有毛病,发明:

11:30:08system@ORA250>altertriggerddl_denydisable;
altertriggerddl_denydisable
*
ERROR位于第1行:
ORA-04098:触发器DDL_DENY有效且未经由过程从头考证
11:31:45system@ORA250>droptriggerddl_deny;
droptriggerddl_deny
*
ERROR位于第1行:
ORA-04098:触发器DDL_DENY有效且未经由过程从头考证



此时触发器不克不及编译已往,也不克不及删除,由于触发器自己内里界说了DDL操纵的触发,发生ORA-04098:触发器DDL_DENY有效且未经由过程从头考证。



办理办法:

1、起首检察用户的权限是不是准确:

selectowner,object_name,object_type,statusfromdba_objectswhereobject_name=<TRIGGER_NAME>;

12:42:38system@ORA250>selectowner,object_name,object_type,statusfromdba_o
bjectswhereobject_name=DDL_DENY;
OWNEROBJECT_NAMEOBJECT_TYPESTATUS
--------------------------------------------------
SYSTEMDDL_DENYTRIGGERINVALID

发明用户权限没有成绩。

2、接着设置诊断事务altersessionsetevents=4098tracenameerrorstacklevel3;,检察trace文件的内容以下:

Dumpfile/db1/app/oracle/admin/ora250/udump/ora250_ora_6834.trc
Oracle8iEnterpriseEditionRelease8.1.5.0.0-Production
WiththePartitioningandJavaoptions
PL/SQLRelease8.1.5.0.0-Production
ORACLE_HOME=/db1/app/oracle/product/8.1.5
Systemname:SunOS
Nodename:db250
Release:5.7
Version:Generic_106541-08
Machine:sun4u
Instancename:ora250
Redothreadmountedbythisinstance:1
Oracleprocessnumber:17
Unixprocesspid:6834,image:oracle@db250(TNSV1-V3)
***SESSIONID30.829)2004.11.17.20.53.38.000
***2004.11.17.20.53.38.000
ksedmp:internalorfatalerror
ORA-04098:触发器DDL_DENY有效且未经由过程从头考证
CurrentSQLstatementforthissession:
altertriggerddl_denydisable
-----CallStackTrace-----
callingcallentryargumentvaluesinhex
locationtypepoint(?meansdubiousvalue)
----------------------------------------------------------------------------
ksedmp()+160CALLksedst()+0508?1?FFBEB31C?
FFBEADC0?FFBEADA4?0?
ksddoa()+248PTR_CALL000000003?0?0?16594FC?
C0000025?0?
ksdpcg()+212CALLksddoa()+016EB0AC?16E4C24?3?
24939C?16EB0AC?16EB090?
ksdpec()+236CALLksdpcg()+01002?FFBEB8E4?16E4C24?
0?0?0?
ksfpec()+136CALLksdpec()+01002?165A800?165A800?
7F3?1659995?16594FC?
kgesev()+100PTR_CALL000000001659494?1002?262F80?
1002?1?0?
ksesec1()+48CALLkgesev()+01659494?16E8CA4?1002?
1?FFBEBA60?1?
kkttrex()+2112CALLksesec1()+01002?1?8?8E859D26?2?
2?
kktexeevt()+616CALLkkttrex()+08E996A20?8E973B48?
FFBEBAE4?1659000?
8E859D6C?165E800?.....

发明是外部严峻毛病,其他看不出太多毛病信息,因而想到接纳隐含参数_system_trigger_enabled=false,在数据库启动的时分让一切触发器不起感化,然后删除。数据库8.1.5的提醒没这个参数,因而查询了一下:

14:28:32system@ORA815>selectksppinmfromx$ksppiwheresubstr(ksppinm,1,1)=_
andksppinmlike%tri%orderbyksppinm;
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,删除乐成。

至此成绩办理。
每个人都在使用它。MySQL是开源LAMP组合的一个标准组件:Linux、Apache、MySQL和Perl/PHP。根据Evans的调查,LAMP组合的迅速推广很大程度上代表着MySQL的被广泛接受。

变相怪杰 发表于 2015-1-17 14:16:12

如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。

透明 发表于 2015-1-20 19:20:37

多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油

再现理想 发表于 2015-1-29 16:26:52

始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。

不帅 发表于 2015-2-6 02:43:22

发几份SQL课件,以飨阅者

海妖 发表于 2015-2-15 05:35:50

对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。

爱飞 发表于 2015-3-4 11:21:33

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力

只想知道 发表于 2015-3-11 18:44:24

换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的

愤怒的大鸟 发表于 2015-3-19 07:46:46

可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。

仓酷云 发表于 2015-3-27 14:10:04

光写几个SQL实在叫无知。
页: [1]
查看完整版本: MYSQL网站制作之ORA-04098毛病办理办法