Oracle scheduler error: Security Group ID (your workspace identity) is invalid
Oracle scheduler error: Security Group ID (your workspace identity) is invalid
我正在尝试通过 pl/sql 进程创建 oracle 调度程序作业(发送邮件)(作业是在单击按钮时创建的)。它成功创建作业,但作业总是以错误完成:
"ORA-20001: Security Group ID (your workspace identity) is invalid. ORA-06512: at "APEX_050100.WWV_FLOW_SECURITY", line 2939 ORA-06512: at
"APEX_050100.HTMLDB_UTIL", line 3014 ORA-06512: at line 7 ORA-06512:
at line 7.
我也试过直接设置security_group_id(apex_util.set_security_group_id(p_security_group_id => my_worspace_id
或者
wwv_flow_api.set_security_group_id(p_security_group_id=>my_worspace_id
) 但它总是以与我的示例代码相同的错误结束。当我尝试在 sql 开发人员中手动创建工作时,它起作用了。但是,当作业由 pl/sql 进程创建时,它会以上述错误结束。在两种情况下(pl/sql 进程或手动)都使用相同的参数成功创建了作业,所以我不明白为什么当 pl/sql 进程创建作业时它以错误结束。
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => '"INVERTORY"."TEST"',
job_type => 'PLSQL_BLOCK',
job_action => 'begin
for c1 in (
select workspace_id
from apex_applications
where application_id = 104 )
loop
apex_util.set_security_group_id(p_security_group_id =>
c1.workspace_id);
end loop;
HTMLDB_MAIL.SEND(
p_to => ''****.****@****.com'',
p_from => ''noreply@****.com'',
p_subj => ''test mail'',
p_body => ''komu'');
end;',
number_of_arguments => 0,
start_date => TO_TIMESTAMP_TZ('2017-08-28 10:29:57.000000000 EUROPE/PRAGUE','YYYY-MM-DD HH24:MI:SS.FF TZR'),
repeat_interval => NULL,
end_date => NULL,
enabled => TRUE,
auto_drop => FALSE,
comments => '');
DBMS_SCHEDULER.SET_ATTRIBUTE(
name => '"INVERTORY"."TEST"',
attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF);
DBMS_SCHEDULER.enable(
name => '"INVERTORY"."TEST"');
END;
尝试改变这个:
for c1 in (
select workspace_id
from apex_applications
where application_id = 104 )
loop
apex_util.set_security_group_id(p_security_group_id =>
c1.workspace_id);
end loop;
对此:
SELECT MAX(workspace_id)
INTO v_workspace FROM apex_applications
WHERE application_id = 104;
--set workspace - declare v_workspace above as type number
wwv_flow_api.set_security_group_id(v_workspace)
无论如何,最好将您的逻辑放在数据库中的一个包中并使用 job_type => 'STORED_PROCEDURE'
创建一个作业并从那里调用您的过程。
我正在尝试通过 pl/sql 进程创建 oracle 调度程序作业(发送邮件)(作业是在单击按钮时创建的)。它成功创建作业,但作业总是以错误完成:
"ORA-20001: Security Group ID (your workspace identity) is invalid. ORA-06512: at "APEX_050100.WWV_FLOW_SECURITY", line 2939 ORA-06512: at "APEX_050100.HTMLDB_UTIL", line 3014 ORA-06512: at line 7 ORA-06512: at line 7.
我也试过直接设置security_group_id(apex_util.set_security_group_id(p_security_group_id => my_worspace_id
或者
wwv_flow_api.set_security_group_id(p_security_group_id=>my_worspace_id
) 但它总是以与我的示例代码相同的错误结束。当我尝试在 sql 开发人员中手动创建工作时,它起作用了。但是,当作业由 pl/sql 进程创建时,它会以上述错误结束。在两种情况下(pl/sql 进程或手动)都使用相同的参数成功创建了作业,所以我不明白为什么当 pl/sql 进程创建作业时它以错误结束。
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => '"INVERTORY"."TEST"',
job_type => 'PLSQL_BLOCK',
job_action => 'begin
for c1 in (
select workspace_id
from apex_applications
where application_id = 104 )
loop
apex_util.set_security_group_id(p_security_group_id =>
c1.workspace_id);
end loop;
HTMLDB_MAIL.SEND(
p_to => ''****.****@****.com'',
p_from => ''noreply@****.com'',
p_subj => ''test mail'',
p_body => ''komu'');
end;',
number_of_arguments => 0,
start_date => TO_TIMESTAMP_TZ('2017-08-28 10:29:57.000000000 EUROPE/PRAGUE','YYYY-MM-DD HH24:MI:SS.FF TZR'),
repeat_interval => NULL,
end_date => NULL,
enabled => TRUE,
auto_drop => FALSE,
comments => '');
DBMS_SCHEDULER.SET_ATTRIBUTE(
name => '"INVERTORY"."TEST"',
attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF);
DBMS_SCHEDULER.enable(
name => '"INVERTORY"."TEST"');
END;
尝试改变这个:
for c1 in (
select workspace_id
from apex_applications
where application_id = 104 )
loop
apex_util.set_security_group_id(p_security_group_id =>
c1.workspace_id);
end loop;
对此:
SELECT MAX(workspace_id)
INTO v_workspace FROM apex_applications
WHERE application_id = 104;
--set workspace - declare v_workspace above as type number
wwv_flow_api.set_security_group_id(v_workspace)
无论如何,最好将您的逻辑放在数据库中的一个包中并使用 job_type => 'STORED_PROCEDURE'
创建一个作业并从那里调用您的过程。