gpt4 book ai didi

sql - 为什么 COMMIT 在立即执行后解决了问题?

转载 作者:行者123 更新时间:2023-12-04 20:01:20 24 4
gpt4 key购买 nike

BEGIN
EXECUTE IMMEDIATE 'ALTER SESSION SET SKIP_UNUSABLE_INDEXES = TRUE';
EXECUTE IMMEDIATE 'ALTER SESSION DISABLE PARALLEL DML' ;
END;
/

在 3 个 oracle 服务器中有 1 个出现以下错误。甲骨文:11.2.0.4

ora 12841 cannot alter the session parallel DML state within a transaction



但是添加 COMMIT 后系统运行良好
BEGIN
EXECUTE IMMEDIATE 'ALTER SESSION SET SKIP_UNUSABLE_INDEXES = TRUE';
COMMIT;
EXECUTE IMMEDIATE 'ALTER SESSION DISABLE PARALLEL DML' ;
END;
/

为什么在添加 COMMIT 后没有看到这个问题?

最佳答案

这个:

EXECUTE IMMEDIATE 'ALTER SESSION SET SKIP_UNUSABLE_INDEXES = TRUE';

... 启动了一个新事务,之后您尝试更改 session 并行 DML 状态。

COMMIT 完成了事务并启动了另一个事务,因此您可以更改 session 并行 DML 状态。

此处的交易文档: https://docs.oracle.com/database/121/CNCPT/transact.htm

编辑:可能 BEGIN 使您感到困惑。在 PostgreSQL 中,BEGIN 启动一个事务: http://www.postgresql.org/docs/9.1/static/sql-begin.html .在 Oracle 中,“当遇到第一个可执行的 SQL 语句时,一个事务就开始了”。

关于sql - 为什么 COMMIT 在立即执行后解决了问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29458076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com