Oracle
 sql >> база данни >  >> RDS >> Oracle

Изпълнете async съхранена процедура в sql developer

Тъй като искате да симулирате N сесии, всяка от които извиква процедурата 1000/N пъти, вероятно бих направил нещо като

CREATE OR REPLACE PROCEDURE call_myproc_n_times( p_n IN NUMBER )
AS
  p_status         NUMBER;
  p_ora_error_code VARCHAR2(1000);
  p_ora_error_msg  VARCHAR2(1000);
BEGIN
  FOR i IN 1 .. p_n 
  LOOP
    myproc( 'test', 
            p_status, 
            p_ora_error_code, 
            p_ora_error_msg );
  END LOOP;
END;

DECLARE
  l_num_sessions     number := 10;
  l_exec_per_session number := 100;
  l_jobno            pls_integer;
BEGIN
  FOR i IN 1 .. l_num_sessions
  LOOP
    dbms_job.submit( 
      l_jobno,
      'BEGIN ' ||
      '  call_myproc_n_times( ' || l_exec_per_session || ' ); ' ||
      'END;',
      sysdate + interval '1' minute );
  END LOOP;
  commit;
END;

Този пример ще започне 10 сесии, всяка от които ще изпълни процедурата 100 пъти в бърза последователност, като приеме JOB_QUEUE_PROCESSES на вашата база данни е най-малко 10, което означава, че на Oracle е позволено да има 10 задачи, изпълнявани във фонов режим едновременно. Създаване на CALL_MYPROC_N_TIMES процедурата не е строго необходима-- тя просто улеснява изграждането на низа за изпълнение в заданието.

Алтернатива би била да изпратите 1000 задания, всяко от които просто се нарича MYPROC веднъж и разчитайки на JOB_QUEUE_PROCESSES параметър за ограничаване на броя на заданията, които ще се изпълняват едновременно. Това би свършило работа, просто е по-трудно да промените параметрите на базата данни, ако искате да стартирате повече или по-малко едновременни сесии-- лесно е да коригирате L_NUM_SESSIONS в кода, който публикувах.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-12560:TNS:грешка в адаптера на протокола

  2. Условен уникален индекс на h2 база данни

  3. UID – Връща ID на текущата сесия в Oracle

  4. SQL грешка:ORA-02000:липсва ВИНАГИ ключова дума при създаване на таблица, базирана на колона за идентичност

  5. не може да получи параметър от процедурата на oracle, изпълнявана от mybatis