zoukankan      html  css  js  c++  java
  • 解决同一程序在并行同时调用时,出现资源等待错误-使用DBMS_LOCK.sleep

    解决同一程序被并行同时调用时,出现资源等待错误问题。 使用DBMS_LOCK.sleep (10);

    PROCEDURE prc_lock_test(v_engine_id in varchar,
    v_flag_desc in varchar,
    v_sysdate in varchar,
    exitcode OUT NUMBER) AS
    l_proc_name VARCHAR2(100) := 'prc_lock_test';
    v_p_name NUMBER(2);
    v_status varchar2(20);
    v_cou NUMBER(2);
    logger logger_factory := logger_factory;
    BEGIN
    exitcode := -20099;
    logger.info(l_proc_name || ',Start');

    SELECT COUNT (1)
    INTO v_cou
    FROM Z_CON_STATUS
    WHERE PROC_NAME = 'prc_lock_test';

    IF v_cou = 0 then
    INSERT INTO Z_CON_STATUS
    (proc_name, status, sys_creation_date)
    VALUES
    ('prc_lock_test', 'Start', SYSDATE);
    COMMIT;

    logger.info(l_proc_name || ',sysdate1:'||to_char(sysdate,'yyyyhh24miss'));
    ELSE
    LOOP
    select status
    into v_status
    from Z_CON_STATUS
    where proc_name = 'prc_lock_test';

    EXIT WHEN v_status = 'End';

    IF v_status = 'Start' THEN
    DBMS_LOCK.sleep (10);
    logger.info(l_proc_name || ',lock sysdate2:'||to_char(sysdate,'yyyyhh24miss'));
    END IF;

    END LOOP;

    END IF;

    UPDATE Z_CON_STATUS
    SET STATUS = 'Start', SYS_CREATION_DATE = SYSDATE
    WHERE PROC_NAME = 'prc_lock_test';
    COMMIT;

    /*Keep BAK table for One month */
    v_p_name := TO_NUMBER(TO_CHAR(SYSDATE + 1, 'DD'));

    EXECUTE IMMEDIATE 'ALTER TABLE BAK_Z_PRODUCTIONORDERS TRUNCATE PARTITION P_' ||
    v_p_name || ' UPDATE INDEXES';

    EXECUTE IMMEDIATE 'ALTER TABLE BAK_Z_PRODUCTIONORDERS_BOM TRUNCATE PARTITION P_' ||
    v_p_name || ' UPDATE INDEXES';

    UPDATE Z_CON_STATUS
    SET STATUS = 'End', SYS_CREATION_DATE = SYSDATE
    WHERE PROC_NAME = 'prc_lock_test';
    COMMIT;
    logger.info(l_proc_name || ' Completed.');
    exitcode := 0;
    EXCEPTION
    WHEN OTHERS THEN
    exitcode := SQLCODE;
    logger.error;
    RAISE;
    END prc_lock_test;

  • 相关阅读:
    700.二叉搜索树中的搜索
    645.错误的集合
    567.字符串的排列
    560.和为K的子数组
    518.零钱兑换 II
    516.最长回文子序列
    509.斐波那契数
    503.下一个更大元素 II
    496.下一个更大元素 I
    leetcode 1171 Remove Zero Sum Consecutive Nodes from Linked List
  • 原文地址:https://www.cnblogs.com/flyingsanddream/p/10796374.html
Copyright © 2011-2022 走看看