<bdo id='EXsC8'></bdo><ul id='EXsC8'></ul>

      <legend id='EXsC8'><style id='EXsC8'><dir id='EXsC8'><q id='EXsC8'></q></dir></style></legend>

      <small id='EXsC8'></small><noframes id='EXsC8'>

      <tfoot id='EXsC8'></tfoot>

        <i id='EXsC8'><tr id='EXsC8'><dt id='EXsC8'><q id='EXsC8'><span id='EXsC8'><b id='EXsC8'><form id='EXsC8'><ins id='EXsC8'></ins><ul id='EXsC8'></ul><sub id='EXsC8'></sub></form><legend id='EXsC8'></legend><bdo id='EXsC8'><pre id='EXsC8'><center id='EXsC8'></center></pre></bdo></b><th id='EXsC8'></th></span></q></dt></tr></i><div id='EXsC8'><tfoot id='EXsC8'></tfoot><dl id='EXsC8'><fieldset id='EXsC8'></fieldset></dl></div>

        有没有最好的方法来避免在 Oracle 中多次执行进程?

        时间:2023-11-03
        <tfoot id='T2kis'></tfoot>
            <tbody id='T2kis'></tbody>

          1. <legend id='T2kis'><style id='T2kis'><dir id='T2kis'><q id='T2kis'></q></dir></style></legend>

                <bdo id='T2kis'></bdo><ul id='T2kis'></ul>

                  <small id='T2kis'></small><noframes id='T2kis'>

                  <i id='T2kis'><tr id='T2kis'><dt id='T2kis'><q id='T2kis'><span id='T2kis'><b id='T2kis'><form id='T2kis'><ins id='T2kis'></ins><ul id='T2kis'></ul><sub id='T2kis'></sub></form><legend id='T2kis'></legend><bdo id='T2kis'><pre id='T2kis'><center id='T2kis'></center></pre></bdo></b><th id='T2kis'></th></span></q></dt></tr></i><div id='T2kis'><tfoot id='T2kis'></tfoot><dl id='T2kis'><fieldset id='T2kis'></fieldset></dl></div>
                • 本文介绍了有没有最好的方法来避免在 Oracle 中多次执行进程?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  假设我有一个名为 myprocprocedure.这是一个复杂的过程,我不能允许两个实例同时执行 proc.

                  Let's say that I have a procedure called myproc. This is a complex process and i cannot allow two instances executing at the same time the proc.

                  实际上我使用dbms_application_info.set_module来做到这一点:

                  Actually I do this using the dbms_application_info.set_module:

                  procedure start_process is
                  begin
                    dbms_application_info.set_module('myproc', 'running');
                  end;
                  

                  并在运行该过程之前进行验证:

                  and verify before run the process:

                  select 'S'
                    from v$session v
                   where v.module = 'myproc'
                     and v.action = 'running';
                  

                  在数据库层面,有没有更好的方法来检查这个?

                  In the database level, is there a better way to check this?

                  推荐答案

                  使用 dbms_lock.allocate_unique 以及 dbms_lock.request.使用说明说:

                  使用新锁名称调用 ALLOCATE_UNIQUE 的第一个会话导致要生成并存储在 dbms_lock_allocated 表中的唯一锁 ID.后续调用(通常由其他会话)返回先前生成的锁 ID.

                  The first session to call ALLOCATE_UNIQUE with a new lock name causes a unique lock ID to be generated and stored in the dbms_lock_allocated table. Subsequent calls (usually by other sessions) return the lock ID previously generated.

                  我认为这可能就是您所追求的.

                  I think this could be what you're after.

                  这篇关于有没有最好的方法来避免在 Oracle 中多次执行进程?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:oracle求一列最长行的长度 下一篇:SQLPlus - 从 PL/SQL 块假脱机到多个文件

                  相关文章

                  1. <tfoot id='hv7Pz'></tfoot>

                    <i id='hv7Pz'><tr id='hv7Pz'><dt id='hv7Pz'><q id='hv7Pz'><span id='hv7Pz'><b id='hv7Pz'><form id='hv7Pz'><ins id='hv7Pz'></ins><ul id='hv7Pz'></ul><sub id='hv7Pz'></sub></form><legend id='hv7Pz'></legend><bdo id='hv7Pz'><pre id='hv7Pz'><center id='hv7Pz'></center></pre></bdo></b><th id='hv7Pz'></th></span></q></dt></tr></i><div id='hv7Pz'><tfoot id='hv7Pz'></tfoot><dl id='hv7Pz'><fieldset id='hv7Pz'></fieldset></dl></div>
                    • <bdo id='hv7Pz'></bdo><ul id='hv7Pz'></ul>

                    1. <small id='hv7Pz'></small><noframes id='hv7Pz'>

                      <legend id='hv7Pz'><style id='hv7Pz'><dir id='hv7Pz'><q id='hv7Pz'></q></dir></style></legend>