背景
操作数据时出现了错误,特此纪要!
问题
Oracle报错"ora-14411: 该DDL不能与其他DDL并行运行"如何解决?
说明
由于本次操作库的方式是远程操作,非本地库操作,因此出现此问题有可能是因为不同语法联系执行加上网速原因导致了远程库出现了DDL语句并行异常. 结局的办法目前只能通过既定的语句将并行锁定状态中的记录删除,类似于MySQL中processlist中sending data的线程结束.
解决办法
解决这个问题颇为简单, 这里简单说明一下: 使用既定语句找到并行锁定的数据记录, 然后将其kill掉.
要说明的一点是, 我理解这种并行的记录不会轻易产生, 如果你通过查询查到了, 可以直接将其全部kill掉, 不用担心会否有其他进程或个人原因产生的并行记录.既然能影响到你的客户端, 那一定也会影响到统一环境下其他的客户端的数据操作.因此大可将其全部kill掉.
下面是对应的操作记录:
# 查询被锁定的会话.
select sid, serial# from v$session t where t.sid in (select session_id from v$locked_object);
# 结束进程树语法
# alter system kill session 'sid,serial#';
alter system kill session '17, 6246';
alter system kill session '25, 1038';