【问题标题】:Stop Oracle from reading/modifying an object after modifying it in parallel在并行修改对象后阻止 Oracle 读取/修改对象
【发布时间】:2021-10-16 23:06:08
【问题描述】:

在为 Airflow 执行 SQL 查询时,我试图阻止 Oracle 并行执行。一切在我们不允许并行执行的服务器上运行良好,但在不同的服务器(我们实际上需要程序运行的地方)上,由于允许并行执行,它会变得不安。

我尝试创建一个触发器,每次程序创建会话以连接到数据库时执行 ALTER SESSION DISABLE PARALLEL DML|DDL|QUERY 但它仍然给出以下错误:

DatabaseError: (cx_Oracle.DatabaseError) ORA-12838: cannot read/modify an object after modifying it in parallel

有人知道如何处理这个问题吗?

【问题讨论】:

  • 必须先提交并行/直接路径插入,然后才能查询新数据。并行查询不是问题。某些东西正在执行并行或直接路径插入,并且在尝试查询之前未提交。
  • 您可以发布触发器的代码吗?你确定它正在执行吗?

标签: sql oracle


【解决方案1】:
alter session set parallel_degree_policy=manual;

您是否将此参数设置为手动?

您还需要检查/显示这些参数:

select * 
from v$ses_optimizer_env e 
where e.sid=userenv('sid') 
and name like 'parallel%'

你有没有检查过你的代码以后没有启用并行?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多