背景:
本地通过dblink更新远端的某一个表,报错:
ORA-02049:timeout:...
ORA-02036:preceding...
原因:远端的目标表独占锁,导致本地的连接一直在等待,导致连接超时报错。
还有一种情形就是当通过dblink更新视图报错ORA-02036的时候,可能是创建的dblink包含order by等子句,无法进行更新。
可更新的视图不得包含以下任何构造:set运算符
DISTINCT运算符
聚合或分析函数
GROUP BY,ORDER BY,MODEL,CONNECT BY或START WITH子句SELECT列表中的集合表达式SELECT列表中
的子查询SELECT列表
指定为WITH READ ONLY的子查询
解
从视图定义中删除order by子句。