Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Thực thi thủ tục lưu trữ không đồng bộ trong sql developer

Vì bạn muốn mô phỏng N phiên mỗi lần gọi quy trình 1000 / N lần, tôi có thể sẽ làm một cái gì đó như

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;

Ví dụ này sẽ bắt đầu 10 phiên, mỗi phiên sẽ thực thi quy trình 100 lần liên tiếp nhanh chóng giả sử JOB_QUEUE_PROCESSES trong cơ sở dữ liệu của bạn ít nhất là 10 nghĩa là Oracle được phép có 10 công việc chạy nền đồng thời. Tạo CALL_MYPROC_N_TIMES thủ tục không hoàn toàn cần thiết-- nó chỉ làm cho việc xây dựng chuỗi để thực thi trong công việc dễ dàng hơn.

Một giải pháp thay thế sẽ là gửi 1000 công việc, mỗi công việc được gọi là MYPROC một lần và dựa vào JOB_QUEUE_PROCESSES để giới hạn số lượng công việc sẽ được chạy đồng thời. Điều đó sẽ hiệu quả, chỉ là việc thay đổi các thông số cơ sở dữ liệu sẽ khó hơn nếu bạn muốn chạy nhiều phiên đồng thời hơn - thật dễ dàng để điều chỉnh L_NUM_SESSIONS trong mã tôi đã đăng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách trừ số giờ cho một ngày trong Oracle để nó cũng ảnh hưởng đến ngày

  2. Khả năng tương thích với phiên bản Oracle Client và ODP.NET

  3. ORA-29908:thiếu lời gọi chính cho toán tử phụ

  4. Thư mục sản phẩm Cài đặt Oracle và thư mục đường chéo ở vị trí khác nhau

  5. SQL (ORACLE):ORDER BY và LIMIT