चूंकि आप एन सत्रों को अनुकरण करना चाहते हैं, प्रत्येक प्रक्रिया को 1000/एन बार कॉल करना, मैं शायद कुछ ऐसा करूंगा
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 सत्र शुरू करेगा, जिनमें से प्रत्येक आपके डेटाबेस के JOB_QUEUE_PROCESSES
को मानकर लगातार 100 बार प्रक्रिया निष्पादित करेगा। कम से कम 10 का अर्थ है कि Oracle को पृष्ठभूमि में एक साथ 10 कार्य चलाने की अनुमति है। CALL_MYPROC_N_TIMES
बनाना प्रक्रिया सख्ती से जरूरी नहीं है-- यह नौकरी में निष्पादित करने के लिए स्ट्रिंग को आसान बनाता है।
एक विकल्प यह होगा कि 1000 नौकरियां सबमिट की जाएं, जिनमें से प्रत्येक को केवल MYPROC
. कहा जाता है एक बार और JOB_QUEUE_PROCESSES
. पर निर्भर एक साथ चलने वाली नौकरियों की संख्या को सीमित करने के लिए पैरामीटर। यह काम करेगा, यदि आप एक साथ कम सत्र चलाना चाहते हैं तो डेटाबेस पैरामीटर बदलना अधिक कठिन है-- L_NUM_SESSIONS
समायोजित करना आसान है मेरे द्वारा पोस्ट किए गए कोड में।