文档解释
ORA-41665: conflicting values for duration, consumption, and autocommit policies
Cause: An attempt was made to use an EXCLUSIVE consumption policy with no autocommit and a duration other than TRANSACTION or SESSION.
Action: Modify the rule class properties and try again. Autocommit should be set to YES when the consumption policy is EXCLUSIVE.
错误ORA-41665指出存在矛盾的Duration,Consumption和AutoCommit策略。
官方解释
常见案例
1. 用户在同一个事务中,通过多次调用set_transaction_duration来分别设置不同的Duration值,这将会引发ORA-41665。
2. 用户在同一个事务中,既调用set_transaction_duration来设置不同的Duration值,又调用set_transaction_consumption来设置不同的Consumption值,这也会引发ORA-41665。
3. 用户在同一个事务中,通过set_transaction_duration和set_transaction_autocommit来设置不同的Duration和AutoCommit值,这也会引发ORA-41665
一般处理方法及步骤
1. 使用dbms_txn_voting.set_custom_rollback_status函数,创建一个自定义的回滚状态,当发生类似ORA-41665错误时,可以通过此回滚状态来回滚相应的事务。
2. 使用dbms_txn_voting.set_transaction_duration函数,将事务设置为持续型,即由事务级别来管理事务生命周期。
3. 使用dbms_txn_voting.set_transaction_consumption函数,将事务设置为消费型,即由资源级别来管理事务生命周期。
4. 避免同一个事务中出现Duration和AutoCommit,Duration和Consumption不一致的情况,或者将同一个事务中不同操作使用不同的事务来管理。