详解Oracle数据库分布式事务ORA-01591错误解决方法
最近在update某张表时溘然提醒了个较量少见的错误,ORA-01591,这个题目跟平常的锁尚有点纷歧样,下面一路来看看吧~ 思绪 这个错误是因为漫衍式事宜引起,而不是平凡的锁引起的,搜查一样平常工具数据表锁定,只必要搜查v$locked_object和v$transaction视图,就可以定位到详细的SQL语句和操纵人等信息。
行使oerr器材查察该错误编号
简朴的说,01591错误的缘故起因是该工具被一个处在“in-doubt”状态的漫衍式事宜锁定。漫衍式事宜行使的是“two-phase commit”二阶段提交技能。办理该题目的要领就是查察内部表pending_trans$,确定漫衍式事宜信息。这种状态的事宜首要是因为在举办漫衍式事宜时辰,产生收集突发间断的环境,引起漫衍式事宜无法正常竣事,守候间断节点的事宜相应。于是,各节点的事宜所锁定的表就不会被开释掉。 处理赏罚要领
Rollback force的参数是DBA_2PC_PENDING中记录当地事宜信息的编号即LOCAL_TRAN_ID。 处理赏罚照旧较量简朴的,这里趁便分享下漫衍式事宜的相干常识点。 漫衍式事宜相干常识点 漫衍式事宜,简朴来说,是指一个事宜在当地和长途执行,当地必要守候确认长途的事宜竣事后,举办下一步当地的操纵。如通过dblink update长途数据库的一行记录,假如在执行进程中收集非常,可能其他变乱导致当地数据库无法得知长途数据库的执行环境,此时就会产生in doublt的报错。此时必要dba参与,且必要分多种环境举办处理赏罚。 Oracle会自动处理赏罚漫衍事宜,担保漫衍事宜的同等性,全部站点所有提交或所有回滚。一样平常环境下,处理赏罚进程在很短的时刻内完成,基础无法察觉到。 可是,假如在commit或rollback的时辰,呈现了毗连间断或某个数据库 站点CRASH的环境,则提交操纵也许会无法继承,此时DBA_2PC_PENDING和DBA_2PC_NEIGHBORS中会包括尚未办理的漫衍事宜。 对付绝大大都环境,当规复毗连或CRASH的数据库从头启动后,会自动办理漫衍式事宜,不必要人工过问。只有漫衍事宜锁住的工具急需被会见,锁住的回滚段阻止了其他事宜的行使,收集妨碍或CRASH的数据库的规复必要很长的时刻等环境呈现时,才行使人工操纵的方法来维护漫衍式事宜。 手工逼迫提交或回滚将失去二层提交的特征,Oracle无法继承担保事宜的同等性,事宜的同等性应由手工操纵者担保 行使ALTER SYSTEM DISABLE DISTRIBUTED RECOVERY,可以使Oracle不再自动办理漫衍事宜,纵然收集规复毗连可能CRASH的数据库从头启动。 ALTER SYSTEM ENABLE DISTRIBUTED RECOVERY规复自动办理漫衍事宜。 两个重要的视图 1. DBA_2PC_PENDING DBA_2PC_PENDING:列出全部的悬而未决的事宜﹐此视图在末填入悬而未决的事宜之前是空的﹐办理这后也被清空。 DBA_2PC_PENDING的STATE列的声名 SELECT * FROM DBA_2PC_PENDING; 2. DBA_2PC_NEIGHBORS DBA_2PC_NEIGHBORS:列出全部得到的(从长途客户)和送出的(给长途处事器)悬而未决的事宜﹐也暗示应当地节点是不是事宜的提交点站点。 【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |