oracle - Oracle - DBMS_PARALLEL_EXECUTE 失败,没有错误
问题描述
我第一次使用 DBMS_PARALLEL_EXECUTE pkg。我尝试了一个简单的操作:我有两个表 t1 和 t2,我正在尝试将 t2 的所有记录插入到 t1 中。
begin
DBMS_PARALLEL_EXECUTE.create_task('myTsk1');
DBMS_PARALLEL_EXECUTE.create_chuncks_by_rowid(task_name => 'myTsk1',
table_owner => 'mySchema',
table_name => 't2',
bt_row => TRUE,
chunk_size => 1000
);
DBMS_PARALLEL_EXECUTE.run_task(task_name => 'myTsk1',
sql_stmt => 'insert /*+ parallel */ into mySchema.t1 (select * from mySchema.t2 where rowid between :start_id and :end_id)',
language_flag => DBMS_SQL.NATIVE,
parallel_leveò => 4
);
end;
之后create_task
,create_chuncks_by_rowid
我看到工作未分块状态,user_parallel_execute_task
我user_parallel_execute_chunks
看到创建的块。
几秒钟后执行 run_task 时,执行完成。如果我签入user_parallel_execute_task
表格,则所有内容都设置为未签名。
所以我检查了user_scheduler_job_run_details
并all_scheduler_job_run_details
知道错误的原因,但 ERROR# 列是 0 并且 ADDITIONAL_INFO 是空的。添加了异常陷阱,但也没有引发异常。
解决方案
正如@ConnorMcDonald 建议的那样,通过删除并行提示,任务可以正确运行!
begin
DBMS_PARALLEL_EXECUTE.create_task('myTsk1');
DBMS_PARALLEL_EXECUTE.create_chuncks_by_rowid(task_name => 'myTsk1',
table_owner => 'mySchema',
table_name => 't2',
bt_row => TRUE,
chunk_size => 1000
);
DBMS_PARALLEL_EXECUTE.run_task(task_name => 'myTsk1',
sql_stmt => 'insert into mySchema.t1 (select * from mySchema.t2 where rowid between :start_id and :end_id)',
language_flag => DBMS_SQL.NATIVE,
parallel_leveò => 4
);
end;
推荐阅读
- anylogic - 如何将 AnyLogic 代理从一个空间移动到另一个空间?
- vim - 如何在windows中完全刷新vim
- javascript - 当使用变量从 JSON 文件中调用对象时,它根本不调用它
- jquery - 重置/重新初始化动态 AJAX 表单的 jQuery 不显眼验证以清除旧的验证规则
- pyparsing - 简化多维数据集文件解析器
- reactjs - 尝试使用 get 元素更改内部元素并引发错误 TypeError: Cannot set property 'innerHTML' of null
- javascript - NodeJS:Readstream 不调用“数据”事件侦听器
- c# - 如何在计时器上刷新文本文件中的文本
- javascript - 发布在 github 上的 Firebase 配置对象
- mongodb - Mongodb不区分大小写的搜索特殊字符