视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
DML操作DDL触发器
2020-11-09 12:34:28 责编:小采
文档


今天应用方告诉我,一个DML操作导致数据库报错,说ldquo;ORA-234567,不允许开发执行DDL操作,请联系DBArdquo;为了安全,DBA在

今天应用方告诉我,一个DML操作导致数据库报错,说“ORA-234567,不允许开发执行DDL操作,请联系DBA”

为了安全,DBA在各个库上建立了DDL触发器,不允许开发人员执行DDL。

但是开发人员给我反馈,他们仅仅只是执行了普通的INSERT操作,没有任何DDL操作。

第一个感觉是,可能DML操作导致数据库递归了执行了某些DDL操作。

还好这个错误可以重现,,经过10046跟踪。发现由于在执行INSERT过程中,数据库的表空间不足,导致Oracle递归了进行清空回收站的操作,这个操作属于DDL。因此就出现了开头说的问题。

当然在一个监控良好的生产环境并不会出现这个问题,在表空间不够的时候,应该结合监控系统第一时间报警出来。

但是经过测试发现,已经删除的表的空间会计算进入表空间剩余空间

如果回收站打开的话,即使系统看上去还有几十G的剩余,但是可能这些空间都是被删除的表的空间,需要清空回收站才能使用。

如果系统里存在DDL TRIGGER,那么就可能会导致,明明系统里还有大量的可用空间,但是INSERT却报错“ORA-234567,不允许开发执行DDL操作,请联系DBA”

开不开回收站是个问题。

Oracle DML流程

PL/SQL“ ORA-14551: 无法在查询中执行 DML 操作”解决

MySQL常用DDL、DML、DCL语言整理(附样例)

Oracle基本事务和ForAll执行批量DML练习

Oracle DML语句(insert,update,delete) 回滚开销估算

本文永久更新链接地址:

下载本文
显示全文
专题