ORACLE 11g新特性-允许DDL锁等待DML锁
这篇讲的是ORACLE 11g在锁机制上的一个重要改进。作者从11g之前版本的一个常见限制切入:当表上存在未提交的DML事务锁时,对该表执行的DDL操作(如TRUNCATE)会立即失败并报ORA-00054错误,即便等待一小会儿也不行,这给运维和开发带来了不少意外的中断。 11g改变了这一行为,引入了“DDL锁等待DML锁”的特性。通过一个清晰的对比实验,作者展示了差异:在11g中,后发的DDL操作会等待DML锁释放,而不是直接报错返回。这个机制上的转变,让数据库对象的结构变更操作拥有了更好的“耐心”,能适应更复杂的并发场景。 理解这一点,对于规划数据库维护窗口、诊断锁等待问题,以及设计高并发下的DDL策略都很有帮助。它让管理员在执行维护任务时,能更从容地安排操作顺序,而不必总是担心被即时的锁冲突打断。