Spis treści
Co to są współbieżni menedżerowie
- Concurrent Managers są kontrolerami przetwarzania w tle dla aplikacji Oracle.
- Główną funkcją współbieżnych menedżerów jest regulowanie i kontrolowanie żądań procesów w oparciu o zestaw reguł.
- Jest to technika używana do jednoczesnego uruchamiania nieinteraktywnych, zależnych od danych programów w tle.
- Aplikacje Oracle są dostarczane z predefiniowanymi menedżerami, w tym Internal Concurrent Manager (ICM), Standard Manager, Conflict Resolution Manager (CRM) i Transaction Manager (TM).
- Wewnętrzny menedżer współbieżny kontroluje wszystkie inne menedżery współbieżne, które są procesami systemu operacyjnego, które odpytują o żądania.
- W ramach aplikacji możesz również utworzyć dowolną liczbę współbieżnych menedżerów do obsługi określonych typów żądań lub programów i specjalizować ich zgodnie z wymaganiami biznesowymi
- ICM (Internal Concurrent Manager) kontroluje wszystkich innych współbieżnych menedżerów.
- Kierownik Standardów akceptuje wszelkie prośby. Nie ma predefiniowanych reguł specjalizacji i jest cały czas aktywny. Nie zaleca się dodawania reguł specjalizacji do standardowego menedżera, ponieważ często powoduje to problemy.
- Menedżer rozwiązywania konfliktów rozwiązuje konflikty, takie jak niezgodności żądań.
Rozwiązywanie problemów z Concurrent Manager to główna część administrowania aplikacjami Oracle. Oto 30 najbardziej użytecznych zapytań współbieżnych menedżerów, które pomogą Ci w rozwiązywaniu problemów. Wystarczy zalogować się do bazy danych Oracle za pomocą odpowiedniego użytkownika, takiego jak aplikacje, aby uzyskać wszystkie szczegóły
30 najbardziej użytecznych zapytań współbieżnych menedżerów
Zapytanie, aby sprawdzić ustawienia ICM w środowisku Concurrent Manager
wybierz 'PCP' "name", valuefrom apps.fnd_env_contextwhere variable_name ='APPLDCP' andconcurrent_process_id =(wybierz max(concurrent_process_id)from apps.fnd_concurrent_processes gdzie concurrent_queue_id =1)UNION ALLselect 'RAC' "name", decode(count( *), 0, 'N', 1, 'N', 'Y') "wartość" z V$threadUNION WSZYSTKIEwybierz 'GSM' "nazwa", NVL(v.profile_option_value, 'N') "wartość"z aplikacji. fnd_profile_options p, apps.fnd_profile_option_values vwhere p.profile_option_name ='CONC_GSM_ENABLED'and p.profile_option_id =v.profile_option_idUNION ALLwybierz nazwę, wartość z apps.fnd_concurrent_queue_paramswhere =0_pre_application_id =id_kolejki_aktualnej =1Zapytanie, aby sprawdzić szczegóły wszystkich włączonych menedżerów współbieżnych
wybierz fcq.application_id "Identyfikator aplikacji", fcq.concurrent_queue_name, fcq.user_concurrent_queue_name "Service", fa.application_short_name, fcq.target_node "Node", fcq.max_processes "Target", fcq.node_name "Primary". node_name2 "Secondary",fcq.cache_size "Rozmiar pamięci podręcznej",fcp.concurrent_processor_name "Biblioteka programów",sleep_secondsfrom apps.fnd_concurrent_queues_vl fcq, apps.fnd_application fa, apps.fnd_concurrent_processors fcpwhere fcq.pq.application_id =and fcq.concurrent_processor_id =fcp.concurrent_processor_id i fcq.enabled_flag='Y';Jak sprawdzić typ żądania i programy dla współbieżnych menedżerów
format akcji kolumny a10format menedżera kolumn a20format obiektu kolumny a20format typu kolumny a10ustaw strony 0set linii 400select q.application_id, q.concurrent_queue_name,q.user_concurrent_queue_name "Manager", l1. co oznacza "Action", l2. co oznacza "Type", p .user_concurrent_program_name "Object" z apps.fnd_concurrent_queue_content c, apps.fnd_concurrent_queues_vl q,apps.fnd_concurrent_programs_vl p, apps.fnd_lookups l1, apps.fnd_lookups l2where q.concurrent_type.apqueue_id =P 'i c.type_id =p.concurrent_program_idand c.type_application_id =p.application_idand l1.lookup_code =c.include_flagand l1.lookup_type ='INCLUDE_EXCLUDE'i l2.lookup_code ='P' i l2.lookup_SPECIAL 'select application_id, q.concurrent_queue_name,q.user_concurrent_queue_name "Manager", l1.co oznacza "Action", "Application" "Type", a.application_name "Object" z apps.fnd_concurrent_queue_content c, apps.fnd_concu rrent_queues_vl q,apps.fnd_application_vl a, apps.fnd_lookups l1where q.concurrent_queue_id =c.concurrent_queue_idand q.application_id =c.queue_application_id i c.type_code ='P' i c.land_type_kup_id.aplcode =c.include_flagand l1.lookup_type ='INCLUDE_EXCLUDE'UNION ALLselect q.application_id, q.concurrent_queue_name,q.user_concurrent_queue_name "Menedżer", l1. co oznacza "Akcja", l2. co oznacza "Typ", x.complex_rule_name "aplikacje. fnd_concurrent_queue_content c, apps.fnd_concurrent_queues_vl q,apps.fnd_concurrent_complex_rules x,apps.fnd_lookups l1, apps.fnd_lookups l2where q.concurrent_queue_id =c.concurrent_queue_id_id. complex_rule_idand c.type_application_id =x.application_idand l1.lookup_code =c.include_flag and l1.lookup_type ='INCLUDE_EXCLUDE'and l2.lookup_code ='C'and l2.lookup_type ='selectCP_SPECIAL_RULES'.qUNION .concurrent_queue_name,q.user_concurrent_queue_name "Manager", l1.meaning "Action", l2.meaning "Type", r.request_class_name "Object" z apps.fnd_concurrent_queue_content c, apps.fnd_concurrent_queues_vl q, apps.loapps.fnd_con , apps.fnd_lookups l2where q.concurrent_queue_id =c.concurrent_queue_idand q.application_id =c.queue_application_idand c.type_code ='R'i c.type_id =r.request_class_idand c.type_application_id =l.1.application_id i c.type_upcl1 .lookup_type ='INCLUDE_EXCLUDE'and l2.lookup_code ='R'i l2.lookup_type ='CP_SPECIAL_RULES'UNION ALLselect q.application_id, q.concurrent_queue_name,q.user_concurrent_queue_name "Menedżer", "l1.mean". Typ", o.oracle_username "Object"z apps.fnd_concurrent_queue_content c, apps.fnd_concurrent_queues_vl q, apps.fnd_oracle_userid o,apps.fnd_lookups l1, apps.fnd_lookups l2where q.concurrent_queue_id qu. _application_idand c.type_code ='O'i c.type_id =o.oracle_idand l1.lookup_code =c.include_flag and l1.lookup_type ='INCLUDE_EXCLUDE'and l2.lookup_code ='O'i l2.lookup_typeUNION ALL_RUq_SP' .application_id, q.concurrent_queue_name,q.user_concurrent_queue_name "Manager", l1.meaning "Action", l2.meaning "Type", u.user_name "Object" z apps.fnd_concurrent_queue_content c, apps.fnd_concurrent_queues_vl, u.user_VL, apps. apps.fnd_lookups l1, apps.fnd_lookups l2where q.concurrent_queue_id =c.concurrent_queue_idand q.application_id =c.queue_application_idand c.type_code ='U'i c.type_id =u.user_idand l1.lookupinclude_log =c. 'INCLUDE_EXCLUDE'and l2.lookup_code ='U'and l2.lookup_type ='CP_SPECIAL_RULES'UNION ALLselect q.application_id, q.concurrent_queue_name,q.user_concurrent_queue_name "Menedżer", l1. co oznacza "Akcja", typ l2. to_char(c.type_id) "Object" z apps.fnd_concurrent_queue_content c, apps.fnd_concur rent_queues_vl q,apps.fnd_lookups l1, apps.fnd_lookups l2where q.concurrent_queue_id =c.concurrent_queue_idand q.application_id =c.queue_application_id i c.type_code nie w ('C','P','O',' ') i l1.lookup_code =c.include_flag i l1.lookup_type ='INCLUDE_EXCLUDE'and l2.lookup_code =c.type_code and l2.lookup_type ='CP_SPECIAL_RULES';Jak sprawdzić/znaleźć zmianę/maks./min dla wszystkich współbieżnych menedżerów
wybierz fcq.application_id,fcq.concurrent_queue_name,fcq.user_concurrent_queue_name,ftp.application_id,ftp.concurrent_time_period_name,fa.application_short_name,ftp.description,fcqs.min_processes,fcqsfcpcqsqscurrent_process_es. fcq,apps.fnd_concurrent_queue_size fcqs,apps.fnd_concurrent_time_periods ftp,apps.fnd_application fawhere fcq.application_id =fcqs.queue_application_idand fcq.concurrent_queue_id =fcqs.concurrent_queue_idand fcqs.period_application_id =ftp.application_idand fcqs.concurrent_time_period_id =ftp.concurrent_time_period_idand ftp.application_id =fa. identyfikator_aplikacji;
Zapytanie, aby sprawdzić wszystkie wartości opcji Współbieżny profil na poziomie witryny związany z menedżerem i tam wyszukaj
SELECT fpo.profile_nazwa_opcji,fpo.profile_id_option_id,fpov.profile_value_value,fpov.level_id,fa.application_short_name,fpo.user_profile_option_name,fpo.sql_validation,fpo.descriptionFROM apps.FNDLEapp_poWARTOŚĆ_OPLE_OPTION,fpo.app. .application_id =0i fpo.site_enabled_flag ='Y'i (fpo.profile_nazwa_opcji jak 'CONC_%'lub fpo.profile_nazwa_opcji jak 'FS_%'lub fpo.profile_nazwa_opcji jak 'PRINTER%'lub fpo.profile_nazwa_opcji',',I', FNDCPVWR_FONT_SIZE', 'MAX_PAGE_LENGTH', 'APPLWRK')) i fpo.profile_option_id =fpov.profile_option_id i fpo.application_id =fpov.application_id i fpo.application_id =fa.application_id i fpov._preid>Zapytanie, aby sprawdzić równoczesny status menedżera z zapleczand
select q.user_concurrent_nazwa_kolejki nazwa_usługi,a.nazwa_aplikacji srvc_nazwa_aplikacji,a.p application_idand ( fcp1.process_status_code in ('C','M')or ( fcp1.process_status_code in ('A', 'D', 'T')i istnieje (wybierz 1 z gv$sessionwhere fcp1.session_id =audsid ))) )/*actual_processes */, 0, decode(q.max_processes, 0,'NOT_STARTED', 'DOWN'),q.max_processes, 'UP', 'WARNING' ) service_status,q.max_processes target_processes,(select count(* )from apps.fnd_concurrent_processes fcp2where fcp2.concurrent_queue_id =q.concurrent_queue_idand fcp2.queue_application_id =q.application_idand ( fcp2.process_status_code in („C”, „M”) ', 'D', 'T') i istnieje (wybierz 1 z gv$sessionwhere fcp2.session_id =au dsid)))) rzeczywiste_procesy,'' wiadomość, s.service_handle srvc_handlefrom apps.fnd_concurrent_queues_vl q, apps.fnd_application_vl a,apps.fnd_cp_services sgdzie q.application_id =a.application_idand s.service_agerid to pokrycie sprawy* q. gdzie menedżer nie ma wierszy w FND_CONCURRENT_PROCESSES. Zewnętrzne połączenia go nie przetną. */select q.user_concurrent_nazwa_kolejki nazwa_usługi,a.nazwa_aplikacji srvc_nazwa_aplikacji,a.skrócona_nazwa_aplikacji srvc_nazwa_skróconej_aplikacji,q.concurrent_nazwa_kolejki srvc_short_name,decode(q.max_processes, 0'proces'_proces_es,'NOT' ' wiadomość, s.service_handle srvc_handlefrom apps.fnd_concurrent_queues_vl q, apps.fnd_application_vl a,apps.fnd_cp_services swhere q.application_id =a.application_idand s.service_id =q.manager_where processfrom 1 ,'M','A','D','T') i q.concurrent_queue_id =p.concurrent_queue_idand q.application_id =p.queue_application_id);Aby sprawdzić wszystkie uruchomione zadania ze szczegółami sesji DB w bieżącym węźle DB
ustawione wiersze 200set stron 200kolumna FAZA nagłówek 'Faza' format A8kolumna STATUS format 'Status' A8kolumna PROGRAM nagłówek 'Nazwa programu' format A25kolumna REQUESTOR nagłówek 'Żądający' format A9kolumna START_TIME format 'Czas rozpoczęcia' A15kolumna RUN_TIME wyrównaj lewy nagłówek ' Runtime(m)” format 9999.99kolumna Nagłówek OSPID format „OSPID” a5kolumna Nagłówek SID format „DBSID” 99999spool crunning.lstselect fcrv.request_id ZAPYTAJ,decode(fcrv.phase_code,'P','Oczekujące','R','Uruchomione ','I','Nieaktywne','Zakończone')FAZA,decode(fcrv.status_code, 'A','Oczekiwanie', 'B','Wznawianie', 'C','Normalny', 'F', „Zaplanowane”, „G”, „Ostrzeżenie”, „H”, „Wstrzymanie”, „I”, „Normalny”, „M”, „Brak menedżera”, „Q”, „Gotowość”, „R”, „Normalny”, „S”, „Zawieszony”, „T”, „Zakończenie”, „U”, „Wyłączone”, „W”, „Wstrzymane”, „X”, „Zakończone”, „Z”, „Oczekiwanie” ',fcrv.status_code)STATUS,substr(fcrv.program,1,25)PROGRAM,substr(fcrv.requestor,1,9)REQUESTOR,to_char(fcrv.actual_start_date,'MM/DD/RR HH24:MI')START_TIME ,round(((sysdate - fcrv.rzeczywista_data_początkowa)*1440) ,2)RUN_TIME,substr(fcr.oracle_process_id,1,7)OSPID,vs.sid SID--substr(fcr.os_process_id,1,7)OS_PIDz apps.fnd_conc_req_summary_v fcrv,apps.fnd_concurrent_requests fcr,v$ses $process vpwhere fcrv.phase_code ='R'i fcrv.request_id =fcr.request_idand fcr.oracle_process_id =vp.spidand vs.paddr =vp.addrorder według FAZY, STATUSU, PROŚBY desc/
Aby znaleźć plik śledzenia dla konkretnego równoczesnego żądaniast
format kolumny traceid a8kolumna format tracename a80kolumna format user_concurrent_name_program a40kolumna format execname a15kolumna format enable_trace a12ustaw wiersze 80ustaw strony 22ustaw nagłówekSELECT 'Identyfikator żądania:'||identyfikator żądania ,'Identyfikator śledzenia:'||oracle,'|Trace Flag_id req.enable_trace,'Nazwa śledzenia:'||dest.value||'/'||lower(dbnm.value)||'_ora_'||oracle_process_id||'.trc','Prog. Nazwa:'||prog.user_concurrent_program_name,'Nazwa pliku:'||execname.execution_file_name|| execname.subroutine_name ,'Status :'||decode(phase_code,'R','Running')||'-'||decode(status_code,'R','Normal'),'SID Serial:'||ses .sid||','|| ses.serial#,'Module :'||ses.modulefrom apps.fnd_concurrent_requests req, v$session ses, v$process proc,v$parameter dest, v$parameter dbnm, apps.fnd_concurrent_programs_vl prog,apps.fnd_executables execnamewhere req. request_id =&requestand req.oracle_process_id=proc.spid(+)and proc.addr =ses.paddr(+)and dest.name='user_dump_dest'and dbnm.name='db_name'and req.concurrent_program_id =prog.concurrent_program_idand req. program_application_id =prog.application_id i prog.application_id =execname.application_id i prog.executable_id=execname.executable_id;
Aby znaleźć ogólną aktywność zestawu żądań i jego różne czasy realizacji żądań
ustaw rozmiar linii 300col "Nazwa programu" format a50col Elapsed format 9999.99col "Process ID" format a10col REQUEST_DATE format a15col ACTUAL_START_DATE format a15col REQUEST format 999999999col PARENT format 999999999col argument_text format a50SELECT /*+ ORDERED USE_NL(x fcptr fc* fcr.request_id "REQUEST", fcr.parent_request_id "PARENT",fcr.oracle_process_id "ID procesu",fcptl.user_concurrent_program_name "Nazwa programu",fcr.argument_text,DECODE(fcr.phase_code,'X','Zakończony','E ', 'Błąd', 'C', 'Zakończono', 'P', 'Oczekuje', 'R', 'Uruchomiony',kod_fazowy) "Faza",DECODE(fcr.status_code,'X','Zakończone', „C”, „Normalne”, „D”, „Anulowane”, „E”, „Błąd”, „G”, „Ostrzeżenie”, „Q”, „Zaplanowane”, „R”, „Normalne”, „W” ','Wstrzymane','Nie wiem') "Status",--fcr.phase_code,--fcr.status_code,fcr.request_date,fcr.actual_start_date,fcr.actual_completion_date,(fcr.actual_completion_date - fcr.actual_40_start_date) "Upłynął"FROM (SELECT /*+ indeks (fcr1 FND_CONCURRENT_REQUESTS_N3) */fcr1.request_idFROM fnd_concurrent_requests fcr1W TUTAJ 1=1ROZPOCZNIJ fcr1.request_id =&request_id--CONNECT BY PRIOR fcr1.parent_request_id =fcr1.request_id) x,CONNECT BY PRIOR fcr1.request_id =fcr1.parent_request_id) x,fnd_concurrent_requests fcr_fcl_ws x.request_idAND fcr.concurrent_program_id =fcp.concurrent_program_idAND fcr.program_application_id =fcp.application_idAND fcp.application_id =fcptl.application_idAND fcp.concurrent_program_id =fcptl.concurrent_program_id' GUMA Fcptl =1'.T o znajdź sid z identyfikatora żądania
wybierz s.inst_id, fcr.request_id, fv.requestor, fv.Program cmgr_job,p.PID,p.SERIAL#,p.USERNAME p_user,p.SPID,to_char(s.logon_time,'DD-MON- RR HH24:MI:SS') Logon_Time,s.program,s.command,s.sid,s.serial#,s.username,s.process,s.machine,s.action,s.modulefrom apps.fnd_concurrent_requests fcr ,apps.FND_CONC_REQ_SUMMARY_V fv,gv$session s,gv$process pwhere fcr.request_id =&request_idand p.SPID =fcr.oracle_process_idand s.process =fcr.OS_PROCESS_IDand s.inst_id =p.paddr_ request_id =fcr.request_id;Aby znaleźć wszystkie szczegóły z konkretnego identyfikatora żądania/ zapytania, aby znaleźć szczegóły równoczesnego żądania/jak sprawdzić stan równoczesnego żądania z zaplecza/ zapytania, aby znaleźć równoczesny program run time
ustaw strony 100;col request_class_application_id format 99999999 nagłówek 'REQUEST_CLASS|APP_ID'col os_process_id format a8col application_short_name format a5col request_start_date format a18 nagłówek 'DATA WNIOSKU'col aktualna_data_format a18 nagłówek 'DATA POCZĄTKU'col aktualna data_COMPLETE nagłówek_DATE_ --select r.REQUEST_ID,u.user_name, decode(r.PHASE_CODE,'C', 'Complete','P', 'Pending', 'R', 'Running', r.PHASE_CODE) phase,decode(r .STATUS_CODE, „C”, „Normalna”, „I”, „Normalna”, „R”, „Normalna”, „Q”, „Gotowość”, „E”, „Błąd”, „X”, „Zakończono” ,'W', 'Paused' , r.STATUS_CODE) status,r.PRIORITY,decode(r.HOLD_FLAG,'N','"NIE wstrzymane",'T','"WSTRZYMANY"',r. HOLD_FLAG) Flaga wstrzymania, p. skrócona_nazwa_aplikacji,f.nazwa_programu_współbieżnego_użytkownika,f.nazwa_konkurencyjnego_programu,e.EXECUTABLE_NAME,e.EXECUTION_FILE_NAME,e.EXECUTION_METHOD_CODE,e.EXECUTION_FILE_PATH, v.RESPONSIBILITY_.nazwa_klasy_. r.REQUESTED_START_DATE,'DD-MO N-RRRR HH:MI') request_start_date,to_char(r.ACTUAL_START_DATE,'DD-MON-YYYY HH:MI') current_start_date,decode(r.ACTUAL_COMPLETION_DATE,null,'"Wciąż działa"',to_char(r.ACTUAL_COMPLETION_DATE, 'DD-MON-RRRR HH:MI')) real_completion_date,to_char(decode(r.ACTUAL_COMPLETION_DATE,null,SYSDATE,r.ACTUAL_COMPLETION_DATE)-decode(r.ACTUAL_START_DATE,null,SYSDATE,r.ACTUAL_START_DATE),'MI') "Upływ czasu",r.CPU_SECONDS,r.LOGICAL_IOS,r.PHYSICAL_IOS,r.ORACLE_PROCESS_ID,r.ORACLE_SESSION_ID,r.OS_PROCESS_ID,r.CD_ID,decode(r.ENABLE_TRACE,'N', '"NOT Tracing"', 'Y', '"TRACING"', r.ENABLE_TRACE) Trace,decode(f.run_alone_flag, 'N', '"NOT Alone"', 'Y', '"RUN ALONE"', f.run_alone_flag) Alone, r.ARGUMENT_TEXT Parameters,r.LOGFILE_NAMEfrom fnd_concurrent_requests r, fnd_user u, fnd_application p, fnd_concurrent_programs_vl f,fnd_EXECUTABLEs e, fnd_responsibility_vl v, fnd_concurrent_request_class qg i r.APCU. RRENT_PROGRAM_IDand f.EXECUTABLE_ID=e.EXECUTABLE_IDand v.responsibility_id =r.responsibility_idand q.request_class_id (+)=r.concurrent_request_class_idand r.request_id =&reqid;Sql, aby znaleźć oczekujące żądanie we wszystkich współbieżnych menedżerach/zapytaniu, aby znaleźć oczekujące jednoczesne żądania
wybierz request_id,b.user_concurrent_queue_namefrom apps.fnd_concurrent_worker_requests a,apps.fnd_concurrent_queues_vl bwhere a.phase_code ='P'and a.status_code ='I'i a.hold_flag !='Y'and a.date_requested=.concurrent_queue_id =b.concurrent_queue_id i a.control_code ma wartość null -- a a.concurrent_queue_name !='FNDCRM'i a.concurrent_queue_name nie są w kolejności ('FNDCRM') według żądania_id, b.user_concurrent_nazwa_kolejki/Jak znaleźć menedżera uruchamiającego identyfikator żądania/zapytanie, aby znaleźć współbieżnego menedżera dla programu współbieżnegom
Column Format OsId A7Column Oracle_Process_ID Format 99999Column Concurrent_Queue_Name Format A20Column Format dziennika A25Column Started_At Format A20Set Head OffSet Sprawdź OffSet Echo OffSelect'The ' || Nazwa_bieżącej_kolejki ||' współbieżny menedżer uruchomił Twoje żądanie od',to_char(Rzeczywista_data_początkowa,'PON-DD-RR HH:MI:SS AM') || ' - do - ' ||to_char(Actual_COMPLETION_data, 'PON-DD-RR HH:MI:SS AM'),'The ' || Nazwa_bieżącej_kolejki ||' współbieżny plik dziennika menedżera to ' || P.Logfile_Name, „Plik dziennika żądania to” || R.Logfile_NameFrom Fnd_Concurrent_Queues Q,Fnd_Concurrent_requests R,Fnd_Concurrent_Processes PWhere(P.Concurrent_Queue_ID =Q.Concurrent_Queue_ID AndQueue_Application_ID =Q.Application_ID )And R.Concurrent_And_Process on =P.Controlling_And_Proces =P. pre>Aby znaleźć historię programu Request ID
ustaw rozmiar linii 250col format data_żądania a15col format data_żądana_początkowa a15col format rzeczywisty_daty_początkowej a15col format rzeczywistej_daty_ukończenia a15col format tekstu argumentu a70col Format, który upłynął 9999.99select * z (wybierz a.request_id, a.parent_request_id,DECODE(a.kod_fazowy,'C','Zakończono' ,'I','Nieaktywne','P','Oczekuje','R','Uruchomiony') || ' ' ||DECODE(a.status_code,'A','Oczekiwanie','B',' Wznawianie”, „C”, „Normalne”, „D”, „Anulowane”, „E”, „Błąd”, „G”, „Ostrzeżenie”, „H”, „Wstrzymanie”, „I”, „Normalne” ','M','Brak menedżera','P','Zaplanowane','Q','Gotowość','R','Normalne','S','Zawieszone','T','Zakończenie' „U”, „Wyłączone”, „W”, „Wstrzymane”, „X”, „Zakończone”, „Z”, „Oczekiwanie”) „PHASE_STATUS”, a.request_date, a.requested_start_date, a.actual_start_date, a .actual_completion_date ,(nvl(actual_completion_date,sysdate) -ctual_start_date)*1440 "Upłynął", a.argument_text ,a.USER_CONCURRENT_PROGRAM_NAMEz apps.FND_CONC_REQ_SUMMARY_V a gdzie a.concurrent_programquez fndsconcurrent_id=( st_id=&1)---(nvl(rzeczywista_data_ukończenia,sysdate) - rzeczywista_data_początkowa)*1440> 10kolejność według a.request_id desc) gdzie rownum <100;Zapytanie, aby sprawdzić historię równoczesnych uruchomień programu
przesunięcie ttitle rozmiar linii 180ustaw rozmiar strony 60ustaw nowąstronę 0ustaw przerwanie przesunięcia terminu onttitle „Raport analizy CM” skip1col conc_que format a15 nagłówek „Conc Queue”col user_name format a12 nagłówek „Requester”col wymagany format 99999999 nagłówek „Req ID”col sdate format a9 nagłówek "Date"col astart format a8 nagłówek "ActSt|Time"col acomp format a8 nagłówek "ActEnd|Time"col rformat czasu 99,999 nagłówek "ExTme|(Sec)"kol wtime format 99,999 nagłówek "WtTme|(Sec)"col pname1 format a40 nagłówek "Short|Name"col pname2 format a65 nagłówek "Prog Name"col args format a25 nagłówek "Arguments"selecttrunc(rzeczywista_data_początkowa) sdate,request_id reqid,user_name,to_char(actual_start_date,'HH24:MI:SS') astart, to_char(rzeczywista_data_ukończenia,'HH24:MI:SS') acomp,((rzeczywista_data_początkowa - żądana_data_początkowa)*60*60*24) wtime,((rzeczywista_data_ukończenia - rzeczywista_data_początkowa)*60*60*24) rtime,que.concurrent_queue_name conc_que,prog .user_concurrent_program_name pname2,req.argument_text argsfromapplsys.fnd_concurrent_queues kolejka,aplikacja lsys.fnd_user usr,applsys.fnd_concurrent_programs prog,applsys.fnd_concurrent_requests req,applsys.fnd_concurrent_processes procwhere(rzeczywista_data_początkowa między to_date('&start_date','DD-MON-RRRR HH24:MI:SS','&endDD_date') -MON-RRRR HH24:MI:SS')oractual_completion_date między to_date('&start_dte', 'DD-MON-RRRR HH24:MI:SS')i do_date('&end_date', 'DD-MON-RRRR HH24:MI:SS '))anduser_concurrent_program_name jak '&program_name%'andque.application_id=proc.queue_application_idandque.concurrent_queue_id =proc.concurrent_queue_idandreq.controlling_manager=proc.concurrent_process_idandusr.user_id =req.g.proquested_current_qand.andname_proq. in('ACTIVATE','ABORT','DEACTIVATE','VERIFY')order byactual_start_date;Zapytanie, aby znaleźć uruchomione żądanie w Concurrent Manager/ jak sprawdzić uruchomione jednoczesne żądanie z zapytania o stan programu zaplecza/współbieżnego programu w aplikacjach Oracle
set pages 58set linesize 79Column Reqst Format 999999Column Requestor Format A10Column Orcl Format A7Column Program Format A10Column Started Format A14Column Manager Format A11Column LN Format a10Column Reqst HEADING 'Request|ID 'Column Requestor HEADING'Oclor'Request Kolumna Uruchomiona HEADING 'Rozpoczęto w'Column MANAGER HEADING 'Controlling|Manager'Column LN HEADING 'Logfile|name'Kolumna Program HEADING 'Program'select Request_Id Reqst, User_Name Requester, Oracle_Username Orcl,Fcr.Logfile_Name Program LN,Concurrent_Name_Queue_Program To_Char(Actual_Start_Date, 'Mm-Dd-Yy Hh24:Mi') Started,Run_Alone_Flag, Single_Thread_FlagFrom Fnd_Concurrent_Requests Fcr, Fnd_Concurrent_Programs Fcp,Fnd_Oracle_Userid O, Fnd_Concurrent_Processes P,Fnd_Concurrent_Queues Q, Fnd_UserWhereControlling_Manager =Concurrent_Process_IDAnd ( P.Concurrent_Queue_ID =Q.Concurrent_Queue_ID ANDP.Queue_Application_ID =Q.Application_ID )I O.Oracle_Id =Fcr.Orac le_IdAnd ( Fcr.Program_Application_Id =Fcp.Application_IdAnd Fcr.Concurrent_Program_Id =Fcp.Concurrent_Program_Id )And Requested_By =User_IdAnd Phase_Code ='R' i Status_Code ='R'Zamówienie według Actual_I_Date/> przed żądaniemZapytanie, aby znaleźć żądania zakończenia w menedżerze współbieżnym
set pages 58set linesize 79Column Reqst Format 999999Column Requestor Format A10Column Orcl Format A7Column Program Format A10Column Started Format A14Column Manager Format A11Column LN Format a10Column Reqst HEADING 'Request|ID 'Column Requestor HEADING'Oclor'Request Kolumna Uruchomiona HEADING 'Rozpoczęto w'Column MANAGER HEADING 'Controlling|Manager'Column LN HEADING 'Logfile|name'Kolumna Program HEADING 'Program'Select Request_Id Reqst, User_Name Requester, Oracle_Username Orcl,Fcr.Logfile_Name Program LN,Concurrent_Name_Queue_Program To_Char(Actual_Start_Date, 'Mm-Dd-Yy Hh24:Mi') Started,Run_Alone_Flag, Single_Thread_FlagFrom Fnd_Concurrent_Requests Fcr, Fnd_Concurrent_Programs Fcp,Fnd_Oracle_Userid O, Fnd_Concurrent_Processes P,Fnd_Concurrent_Queues Q, Fnd_UserWhereControlling_Manager =Concurrent_Process_IDAnd ( P.Concurrent_Queue_ID =Q.Concurrent_Queue_ID ANDP.Queue_Application_ID =Q.Application_ID )And O.Oracle_Id =Fcr.Orac le_IdAnd ( Fcr.Program_Application_Id =Fcp.Application_IdAnd Fcr.Concurrent_Program_Id =Fcp.Concurrent_Program_Id )And Requested_By =User_IdAnd Phase_Code ='R' and Status_Code ='T'Order By Actual_Start_Date, Request_Id/Query to find Paused Requests in Concurrent Manager
set pages 58set linesize 79Column Reqst Format 999999Column Requestor Format A10Column Orcl Format A7Column Program Format A10Column Started Format A14Column Manager Format A11Column LN Format a10Column Reqst HEADING 'Request|ID 'Column Requestor HEADING 'Requestor'Column Orcl HEADING 'Oracle|Name'Column Started HEADING 'Started at'Column MANAGER HEADING 'Controlling|Manager'Column LN HEADING 'Logfile|name'Column Program HEADING 'Program'Select Request_Id Reqst, User_Name Requestor, Oracle_Username Orcl,Fcr.Logfile_Name LN,Concurrent_Program_Name Program,To_Char(Actual_Start_Date, 'Mm-Dd-Yy Hh24:Mi') Started,Run_Alone_Flag, Single_Thread_FlagFrom Fnd_Concurrent_Requests Fcr, Fnd_Concurrent_Programs Fcp,Fnd_Oracle_Userid O, Fnd_UserWhere Status_Code ='W'And Fcr.Concurrent_Program_Id =Fcp.Concurrent_Program_IdAnd Fcr.Program_Application_Id =Fcp.Application_IdAnd Requested_By =User_IdAnd O.Oracle_Id =Fcr.Oracle_IdOrder By Actual_Start_Date, Request_Id/Check the log and outfile created from certain time period
select outfile_node_name,outfile_name, logfile_node_name,logfile_namefrom fnd_concurrent_requestswhere phase_code ='C' andactual_completion_dateRun the following query to check whether any specialization rule defined for any concurrent manager that includes/excludes the concurrent program in question. Query returns ‘no rows selected’ when there are no Include/Exclude specialization rules of Program type for the given concurrent program.
select 'Concurrent program '||fcp.concurrent_program_name||' is ' ||decode(fcqc.include_flag,'I','included in ','E','excluded from ')||fcqv.user_concurrent_queue_name specialization_rule_details from fnd_concurrent_queues_vl fcqv,fnd_concurrent_queue_content fcqc,fnd_concurrent_programs fcp where fcqv.concurrent_queue_id=fcqc.concurrent_queue_id and fcqc.type_id=fcp.concurrent_program_id and fcp.concurrent_program_name=''; Query to find the concurrent program id from concurrent request
select concurrent_program_id from fnd_concurrent_requests where request_id=&1;Last 100 execution detail of concurrent program
set linesize 250col request_date format a15col requested_start_date format a15col actual_start_date format a15col actual_completion_date format a15col argument_text format a70col Elapsed format 9999.99select * from (select a.request_id, a.parent_request_id,DECODE(a.phase_code,'C','Completed','I','Inactive','P','Pending','R','Running') || ' ' ||DECODE(a.status_code,'A','Waiting','B','Resuming','C','Normal','D','Cancelled','E','Error','G','Warning','H','On Hold','I',' Normal','M','No Manager','P','Scheduled','Q','Standby','R',' Normal','S','Suspended','T','Terminating','U','Disabled','W','Paused','X','Terminated','Z',' Waiting') "PHASE_STATUS ", a.request_date, a.requested_start_date, a.actual_start_date, a.actual_completion_date,(nvl(actual_completion_date,sysdate) - actual_start_date)*1440 "Elapsed", a.argument_text ,a.USER_CONCURRENT_PROGRAM_NAMEfrom apps.FND_CONC_REQ_SUMMARY_V a where a.concurrent_program_id=(select concurrent_program_id from fnd_concurrent_requests where request_id=&1)order by a.request_id desc) where rownum <100;To find the logfile /outfile/node name for the particular request
SELECT 'LOGFILE_NAME=' || logfile_nameFROM fnd_concurrent_requestsWHERE request_id =&req/SELECT 'LOGFILE_NODE_NAME=' || logfile_node_nameFROM fnd_concurrent_requestsWHERE request_id =&req/SELECT 'OUTFILE_NAME=' || outfile_nameFROM fnd_concurrent_requestsWHERE request_id =&req/SELECT 'OUTFILE_NODE_NAME=' || outfile_node_nameFROM fnd_concurrent_requestsWHERE request_id =&reqCheck ICM is running on what node
select a.concurrent_queue_name,a.target_node, substr(b.os_process_id,0,10) “OS Proc”, b.oracle_process_id “Oracle ID”, b.process_status_codefrom apps.fnd_concurrent_queues a, apps.fnd_concurrent_processes bwhere a.concurrent_queue_id=b.concurrent_queue_idand a.concurrent_queue_name=’FNDICM’and b.process_status_code=’A’order by b.process_status_code/Check OS process ID/Target node for CM
Select User_Concurrent_Queue_Name Manager, Q.Target_Node Node, Os_Process_IDfrom apps.fnd_concurrent_queues_vl Q,apps.Fnd_Concurrent_Processes Pwhere Q.Application_Id =Queue_Application_IDAnd (Q.Concurrent_Queue_ID =P.Concurrent_Queue_ID);To know the correct status of the Concurrent request from the back end
The view FND_AMP_REQUESTS_V shows the proper phase and statusselect request_id, phase, statusfrom fnd_amp_requests_v;Check the completion text for the concurrent request
select COMPLETION_TEXT from apps.fnd_concurrent_requests where REQUEST_ID=&n;To Check Actual and Target Processes for Internal Manager
select MAX_PROCESSES,RUNNING_PROCESSESfrom FND_CONCURRENT_QUEUESwhere CONCURRENT_QUEUE_NAME='FNDICM';To check the Actual and Target Processes for Standard Manager
select MAX_PROCESSES,RUNNING_PROCESSESfrom FND_CONCURRENT_QUEUESwhere CONCURRENT_QUEUE_NAME='STANDARD';To check the invalid objects related to FND
select substr(owner,1, 12) owner, substr(object_type,1,12) type,substr(status,1,8) status, substr(object_name, 1, 25) namefrom dba_objectswhere object_name like 'FND_%'and status='INVALID';Query to check whether any specialization rule defined for any concurrent manager that includes/excludes the concurrent program in question.
select 'Concurrent program '||fcp.concurrent_program_name||' is ' ||decode(fcqc.include_flag,'I','included in ','E','excluded from ')||fcqv.user_concurrent_queue_name specialization_rule_details from fnd_concurrent_queues_vl fcqv,fnd_concurrent_queue_content fcqc,fnd_concurrent_programs fcp where fcqv.concurrent_queue_id=fcqc.concurrent_queue_id and fcqc.type_id=fcp.concurrent_program_id and fcp.concurrent_program_name=''; Note:Program Short Name is visible when the program is queried in concurrent program definition form.
Query returns ‘no rows selected’ when there are no Include/Exclude specialization rules of Program type for the given concurrent program.
For each manager get the number of pending and running requests in each queue:
col "USER_CONCURRENT_QUEUE_NAME" format a40;SELECT a.USER_CONCURRENT_QUEUE_NAME,a.MAX_PROCESSES,sum(decode(b.PHASE_CODE,'P',decode(b.STATUS_CODE,'Q',1,0),0)) Pending_Standby,sum(decode(b.PHASE_CODE,'P',decode(b.STATUS_CODE,'I',1,0),0)) Pending_Normal,sum(decode(b.PHASE_CODE,'R',decode(b.STATUS_CODE,'R',1,0),0)) Running_NormalFROM FND_CONCURRENT_QUEUES_VL a, FND_CONCURRENT_WORKER_REQUESTS bwhere a.concurrent_queue_id =b.concurrent_queue_idAND b.Requested_Start_Date<=SYSDATEGROUP BY a.USER_CONCURRENT_QUEUE_NAME,a.MAX_PROCESSESTo Get Long Running Concurrent Programs:
SELECT fcr.oracle_session_id,fcr.request_id rqst_id,fcr.requested_by rqst_by,fu.user_name,fr.responsibility_name,fcr.concurrent_program_id cp_id,fcp.user_concurrent_program_name cp_name,TO_CHAR (fcr.actual_start_date, 'DD-MON-YYYY HH24:MI:SS')act_start_datetime,DECODE (fcr.status_code, 'R', 'R:Running', fcr.status_code) status,ROUND (((SYSDATE - fcr.actual_start_date) * 60 * 24), 2) runtime_min,ROUND (((SYSDATE - fcr.actual_start_date) * 60 * 60 * 24), 2)runtime_sec,fcr.oracle_process_id "oracle_pid/SPID",fcr.os_process_id os_pid,fcr.argument_text,fcr.outfile_name,fcr.logfile_name,fcr.enable_traceFROM apps.fnd_concurrent_requests fcr,apps.fnd_user fu,apps.fnd_responsibility_tl fr,apps.fnd_concurrent_programs_tl fcpWHERE fcr.status_code LIKE 'R'AND fu.user_id =fcr.requested_byAND fr.responsibility_id =fcr.responsibility_idAND fcr.concurrent_program_id =fcp.concurrent_program_idAND fcr.program_application_id =fcp.application_idAND ROUND (((SYSDATE - fcr.actual_start_date) * 60 * 24), 2)> 60ORDER BY fcr.concurrent_program_id,request_id DESC;Checking the incompatibilities between the programs/query to find incompatible program of a concurrent
The below query can be used to find all incompatibilities in an application instance.SELECT a2.application_name, a1.user_concurrent_program_name, DECODE (running_type, 'P', 'Program', 'S', 'Request set', 'UNKNOWN' ) "Type", b2.application_name "Incompatible App", b1.user_concurrent_program_name "Incompatible_Prog", DECODE (to_run_type, 'P', 'Program', 'S', 'Request set', 'UNKNOWN' ) incompatible_type FROM apps.fnd_concurrent_program_serial cps, apps.fnd_concurrent_programs_tl a1, apps.fnd_concurrent_programs_tl b1, apps.fnd_application_tl a2, apps.fnd_application_tl b2 WHERE a1.application_id =cps.running_application_id AND a1.concurrent_program_id =cps.running_concurrent_program_id AND a2.application_id =cps.running_application_id AND b1.application_id =cps.to_run_application_id AND b1.concurrent_program_id =cps.to_run_concurrent_program_id AND b2.application_id =cps.to_run_application_id AND a1.language ='US' AND a2.language ='US' AND b1.language ='US' AND b2.language ='US';GET THE CURRENT SQL STATEMENT RUNNING FOR A CONCURRENT REQUEST
SELECT A.REQUEST_ID, D.SID, D.SERIAL#, D.OSUSER, D.PROCESS, C.SPID,E.SQL_TEXTFROM APPS.FND_CONCURRENT_REQUESTS A,APPS.FND_CONCURRENT_PROCESSES B,V$PROCESS C,V$SESSION D,V$SQL EWHERE A.CONTROLLING_MANAGER =B.CONCURRENT_PROCESS_IDAND C.PID =B.ORACLE_PROCESS_IDAND B.SESSION_ID =D.AUDSIDAND D.SQL_ADDRESS =E.ADDRESSAND A.REQUEST_ID ='&REQUEST_ID';Cancelling Concurrent request/update concurrent request status from backend
--By request id update fnd_concurrent_requestsset status_code='D', phase_code='C'where request_id=&reqid;--By program_idupdate fnd_concurrent_requestsset status_code='D', phase_code='C'where CONCURRENT_PROGRAM_ID=&prgid;How to submit a concurrent program using the CONCSUB utility from the operating system
CONCSUB / \[WAIT=N|Y|] \CONCURRENT \[PROGRAM_NAME=] \[ORG_ID=<#>] - R12 onwards only[REPEAT_TIME=] \[REPEAT_INTERVAL=] \[REPEAT_INTERVAL_UNIT=] \[REPEAT_INTERVAL_TYPE= ] \[REPEAT_END=] \[START=] \[IMPLICIT= \[ ... ] how to enable trace for a running concurrent request
First Find the sid and serial# using below queries
For RAC
select s.inst_id, fcr.request_id, fv.requestor, fv.Program cmgr_job,
p.PID,
p.SERIAL#,
p.USERNAME p_user,
p.SPID,
to_char(s.logon_time,'DD-MON-YY HH24:MI:SS') Logon_Time,
s.program,
s.command,
s.sid,
s.serial#,
s.username,
s.process,
s.machine,
s.action,
s.module
from apps.fnd_concurrent_requests fcr,
apps.FND_CONC_REQ_SUMMARY_V fv,
gv$session s,
gv$process p
where fcr.request_id =&request_id
and p.SPID =fcr.oracle_process_id
and s.process =fcr.OS_PROCESS_ID
and s.inst_id =p.inst_id
and p.addr =s.paddr
and fv.request_id =fcr.request_id
;For Non-RAC, the above and below both can be used
select s.sid , s.serial# ,p.spid from fnd_concurrent_requests f,v$session s , v$process p where f.request_id =and f.oracle_process_id =p.spid and p.addr =s.paddrEnable Trace
EXEC DBMS_SYSTEM.SET_EV(&sid , &serial,10046, 12 ,'');Check the Trace file
Log on to the DB Tier …. Check for the trace file
_ora_ .trc Find the scheduled concurrent requests:
SELECT cr.request_id,
DECODE (cp.user_concurrent_program_name,
'Report Set', 'Report Set:' || cr.description,
cp.user_concurrent_program_name
) NAME,
argument_text, cr.resubmit_interval,
NVL2 (cr.resubmit_interval,
'PERIODICALLY',
NVL2 (cr.release_class_id, 'ON SPECIFIC DAYS', 'ONCE')
) schedule_type,
DECODE (NVL2 (cr.resubmit_interval,
'PERIODICALLY',
NVL2 (cr.release_class_id, 'ON SPECIFIC DAYS', 'ONCE')
),
'PERIODICALLY', 'EVERY '
|| cr.resubmit_interval
|| ' '
|| cr.resubmit_interval_unit_code
|| ' FROM '
|| cr.resubmit_interval_type_code
|| ' OF PREV RUN',
'ONCE', 'AT :'
|| TO_CHAR (cr.requested_start_date, 'DD-MON-RR HH24:MI'),
'EVERY:' || fcr.class_info
) schedule,
fu.user_name, requested_start_date
FROM apps.fnd_concurrent_programs_tl cp,
apps.fnd_concurrent_requests cr,
apps.fnd_user fu,
apps.fnd_conc_release_classes fcr
WHERE cp.application_id =cr.program_application_id
AND cp.concurrent_program_id =cr.concurrent_program_id
AND cr.requested_by =fu.user_id
AND cr.phase_code ='P'
AND cr.requested_start_date> SYSDATE
AND cp.LANGUAGE ='US'
AND fcr.release_class_id(+) =cr.release_class_id
AND fcr.application_id(+) =cr.release_class_app_id;History of concurrent requests which are error out in last 2 days
SELECT a.request_id "Req Id"
,a.phase_code,a.status_code
, actual_start_date
, actual_completion_date
,c.concurrent_program_name || ':' || ctl.user_concurrent_program_name "program"
FROM APPLSYS.fnd_Concurrent_requests a,APPLSYS.fnd_concurrent_processes b
,applsys.fnd_concurrent_queues q
,APPLSYS.fnd_concurrent_programs c
,APPLSYS.fnd_concurrent_programs_tl ctl
WHERE a.controlling_manager =b.concurrent_process_id
AND a.concurrent_program_id =c.concurrent_program_id
AND a.program_application_id =c.application_id
AND a.status_code ='E'
AND a.phase_code ='C'
AND actual_start_date> sysdate - 2
AND b.queue_application_id =q.application_id
AND b.concurrent_queue_id =q.concurrent_queue_id
AND ctl.concurrent_program_id =c.concurrent_program_id
AND ctl.LANGUAGE ='US'
ORDER BY 5 DESC;query to check trace enabled for concurrent program
SELECT A.CONCURRENT_PROGRAM_NAME "Program Name", SUBSTR(A.USER_CONCURRENT_PROGRAM_NAME,1,40) "User Program Name", SUBSTR(B.USER_NAME,1,15) "Last Updated By", SUBSTR(B.DESCRIPTION,1,25) DESCRIPTION FROM APPS.FND_CONCURRENT_PROGRAMS_VL A, APPLSYS.FND_USER B WHERE A.ENABLE_TRACE='Y' AND A.LAST_UPDATED_BY=B.USER_ID;Related Articles
Oracle Concurrent Manager :How an E-Business Suite Concurrent Manager Process Works,Oracle Concurrent Manager,What is internal monitor,What is service manager and troubleshooting
Concurrent Request Phase and status :All information about Concurrent Request Phase and Status .The meaning derived for each combination .
Core files in Oracle Concurrent manager :his page contains description about core file for oracle concurrent manager.Core file can be used to debug various issues in CM
Priority for concurrent Program :This post has detailed description about changing Priority for Concurrent Program or user or request to solve user critical report running issues
Concurrent Manager Interview questions :Check out 24 Concurrent Manager Interview questions to help you in EBS interview. This consists of all sort of question on standard manager,service manager
Parallel Concurrent Processing:What is PCP, How to setup it, how to define internal monitor
ORA-01427 :Check out this for the solution on ORA-01427:single-row subquery returns more than one row error ,how to resolve it when it happens with Concurrent ManagerPolecane kursy
Oto niektóre z zalecanych kursów, które możesz kupić, jeśli chcesz pójść o krok dalej
Poniżej podano linki do niektórych kursów
Oracle DBA 11g/12c — Administracja bazami danych dla Junior DBA :This course is good for the people who are starting as Junior DBA or aspire to be Oracle DBA. Zapewni to dobre zrozumienie zadań tworzenia kopii zapasowych i odzyskiwania oraz ogólnych zadań administracyjnych
Baza danych Oracle:Administracja Oracle 12C R2 RAC :This course covers the installation, administration of Oracle RAC. Dobry kurs dla Oracle DBA, który chce podnieść swoje umiejętności w zakresie Oracle RAC
Oracle Data Guard:Administrowanie bazą danych dla Oracle 12C R2 :This course covers the installation, administration of Oracle Dataguard. Dobry kurs dla Oracle DBA, który chce podnieść swoje umiejętności w zakresie Oracle DataguardRecommended Books
OCA/OCP Oracle Database 12c All-in-One Exam Guide (Exams 1Z0-061, 1Z0-062, &1Z0-063)
Oracle Database 12c DBA Handbook (Oracle Press)
Oracle DBA All-in-one Scripts – A guide every DBA must have:Oracle dba scripts collection used by expert database administrators everyday. Must have dba scripts for your daily activities!