Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wykonaj asynchroniczną procedurę składowaną w programie sql developer

Ponieważ chcesz zasymulować N sesji, z których każda wywołuje procedurę 1000/N razy, prawdopodobnie zrobiłbym coś takiego

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;

Ten przykład uruchomi 10 sesji, z których każda wykona procedurę 100 razy w krótkim odstępie czasu, zakładając JOB_QUEUE_PROCESSES bazy danych wynosi co najmniej 10, co oznacza, że ​​Oracle może mieć jednocześnie 10 zadań działających w tle. Tworzenie CALL_MYPROC_N_TIMES procedura nie jest bezwzględnie konieczna — po prostu ułatwia budowanie łańcucha do wykonania w pracy.

Alternatywą byłoby przesłanie 1000 ofert pracy, z których każde nazywa się właśnie MYPROC raz i polegając na JOB_QUEUE_PROCESSES parametr, aby ograniczyć liczbę zadań, które będą uruchamiane jednocześnie. To by zadziałało, po prostu trudniej jest zmienić parametry bazy danych, jeśli chcesz uruchamiać więcej lub mniej jednoczesnych sesji — łatwo jest dostosować L_NUM_SESSIONS w kodzie, który opublikowałem.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak rozwiązywać problemy z ORA-02049 i ogólnie blokować problemy z Oracle?

  2. Dlaczego otrzymuję ORA-01401:wstawiona wartość jest za duża dla kolumny - kiedy nie wstawiam?

  3. oracle konwertuj czas epoki unix na datę

  4. Niespójna transpozycja

  5. SQL:tworzenie tabel z kluczami podstawowymi i odniesieniami do kluczy obcych (