Oracle锁3:DDL锁
Oracle数据库自动地请求DDL锁,用户不能显示请求DDL锁。例如,如果用户创建一个存储过程,那么数据库自动为存储过程中引用的对象请求DDL锁,这些DDL锁防止存储过程被编译完成前这个对象被改变或者删除。
排它DDL锁
排它DDL锁持续直到DDL操作执行完成并自动提交,在这期间,如果其它操作需要使用该schema对象,则需要等待直到老的DDL锁被释放。
共享DDL锁
例如,当一个CREATE PROCEDURE被执行时,事务会为所有的引用表要求共享DDL锁,其它事务能并行地创建引用相同表的存储过程并在相同的表上请求共享DDL锁,但是没有事务能请求一个排它DDL锁在任何被引用的表上。
共享DDL锁持续直到DDL操作执行完成并自动提交,因此,获取一个共享DDL锁的事务被保证事务执行期间schema对象保持不变。
可中断解析锁
一个解析锁在解析SQL语句时被要求,如果语句的共享SQL域被保留在共享池中,锁将被一直持有。
schema是数据库对象的名字集合;
schema对象是在一个schema中存储的数据的逻辑结构;
共享SQL域(shared SQL area)指在共享池(shared pool)中为一个SQL语句保存的解析树(parse tree)和执行计划,一个语句只有一个共享SQL域存在。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。