我通过按以下方式单击一个按钮,通过顶点页面使用DBMS_SCHEDULER执行外部作业。(动态操作=>执行PlSql)
dbms_scheduler.run_job(job_name => 'APEXDATA.myJobName', use_current_session=> TRUE);
它正确执行了外部作业。(耗时1-2分钟)。我的问题是,在执行外部作业期间,我无法访问任何其他页面或无法使用新会话登录。在执行的每个任务中显示以下错误。
**503 Service Unavailable
The connection pool named: |apex|| is not correctly configured, due to the following error(s):
Exception occurred while getting connection: oracle.ucp.UniversalConnectionPoolException:
All connections in the Universal Connection Pool are in use**
这是普遍问题还是已知问题?如果是,如何解决此问题,因为其他用户同时也必须执行任何其他任务,否则其他人可能会同时登录。
谢谢。
答案 0 :(得分:0)
我认为您正在混合难以组合的两件事:
use_current_session=> TRUE
)。您的dbms_scheduler.run_job进程将在当前会话中运行,并且只要该作业正在运行,就不能在该数据库会话中运行其他任何操作(连接正在使用,如错误消息中所示)。解决方案:
use_current_session=> FALSE
,因此作业在后台运行由于您的工作需要1-2分钟才能完成,因此选项2和3可能不可行,因为用户体验不是最佳的。如果在后台执行作业,则可能需要编写一些其他代码来防止用户单击几次并多次提交作业。您可以通过在提交作业之前检查作业是否正在运行来完成此操作,如果作业当前正在运行,则不提交。