我在不同的配置和用户中调用DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_SQL。在我的个人电脑上,它运行良好。下面的代码将 start_id 分配给 1。 但在商用计算机上,不能分配START_ID。我的意思是 START_ID 为空。我认为格兰特失踪了。
begin
--sys.dbms_parallel_execute.drop_task(task_name => 'TASK_TEST');
sys.dbms_parallel_execute.create_task(task_name => 'TASK_TEST');
sys.DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_SQL('TASK_TEST','SELECT 1 column_1, 2 column_2 FROM sys.dual',false);
end;
select start_id from sys.dba_parallel_execute_chunks;
--NULL ( at business computer/environment ) --WRONG result.
select start_id from sys.dba_parallel_execute_chunks;
--1 (at my personel computer/ Virtual Machine ) --EXPECTED result is OK.
预期值为 1。我在不同的计算机上运行该代码。 缺少哪项补助金?或者我应该关注哪里才能消除问题
由于缺少业务授权,我使用 DIFFERENT SCHEMA(USER) 在业务环境中运行上述 create_chunk 查询。
我通过 sys.dba_parallel_execute_chunks 检查 start_id。此视图通过使用 CASE WHEN USERENV('SCHEMAID')=c.taskowner THEN c.start_id ELSE NULL END 来屏蔽“start_rowid、end_rowid、start_id、end_id”。我不知道为什么 Oracle 掩盖了这些值。 因此,当我检查 sys.dba_parallel_execute_chunks 视图的源表(sys.dbms_parallel_execute_chunks$)时。我看到了价值观。
简短回答:值已分配,可以从主表 sys.dbms_parallel_execute_chunks$ 中看到