Mục lục
Người quản lý đồng thời là gì
- Người quản lý đồng thời là người điều khiển quá trình xử lý nền cho Ứng dụng Oracle.
- Chức năng chính của Người quản lý đồng thời là điều chỉnh và kiểm soát các yêu cầu của quy trình dựa trên một bộ quy tắc.
- Đây là một kỹ thuật được sử dụng để thực thi đồng thời các chương trình không tương tác, phụ thuộc vào dữ liệu trong nền.
- Ứng dụng Oracle đi kèm với các trình quản lý được xác định trước, bao gồm Trình quản lý đồng thời nội bộ (ICM), Trình quản lý tiêu chuẩn, Trình quản lý giải quyết xung đột (CRM) và Trình quản lý giao dịch (TM).
- Người quản lý đồng thời nội bộ kiểm soát tất cả những Người quản lý đồng thời khác đang điều hành các quy trình của hệ thống thăm dò ý kiến yêu cầu.
- Trong Ứng dụng, bạn cũng có thể tạo bất kỳ số lượng Người quản lý đồng thời nào để xử lý các loại yêu cầu hoặc chương trình cụ thể và chuyên môn hóa chúng cho yêu cầu kinh doanh của bạn
- ICM (Người quản lý đồng thời nội bộ) kiểm soát tất cả những người quản lý đồng thời khác.
- Người quản lý Chuẩn chấp nhận bất kỳ và tất cả các yêu cầu. Nó không có quy tắc chuyên môn hóa được xác định trước và luôn hoạt động. Bạn không nên thêm các quy tắc chuyên môn hóa vào trình quản lý tiêu chuẩn vì nó thường gây ra vấn đề.
- Trình quản lý giải quyết xung đột giải quyết các xung đột, chẳng hạn như yêu cầu không tương thích.
Khắc phục sự cố Trình quản lý đồng thời là một phần chính của quản trị ứng dụng Oracle. Dưới đây là Top 30 Truy vấn Người quản lý Đồng thời Hữu ích nhất để giúp bạn giải quyết các vấn đề. Chỉ cần đăng nhập vào cơ sở dữ liệu oracle với các ứng dụng như người dùng phù hợp để có được tất cả thông tin chi tiết
Top 30 truy vấn người quản lý đồng thời hữu ích nhất
Truy vấn để kiểm tra cài đặt của ICM trong môi trường Trình quản lý đồng thời
select 'PCP' "name", valuefrom apps.fnd_env_contextwhere variable_name ='APPLICDCP' andconcurrent_process_id =(chọn max (concurrent_process_id) từ apps.fnd_concurrent_processes trong đó concurrent_queue_id =1) UNION ALL chọn 'RAC' "name (", decode *), 0, 'N', 1, 'N', 'Y') "giá trị" từ V $ thread 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 TẤT CẢ chọn tên, giá trị từ apps.fnd_concurrent_queue_paramsid queue =1 và concurrent_premia =0Truy vấn để kiểm tra chi tiết cho tất cả Trình quản lý đồng thời được bật
select fcq.application_id "Application Id", 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", fcq.node_name ". node_name2 "Phụ", fcq.cache_size "Kích thước bộ nhớ cache", fcp.concurrent_processor_name "Thư viện chương trình", sleep_secondsfrom apps.fnd_concurrent_queues_vl fcq, apps.fnd_application fa, apps.fnd_concurrent_processors fcplication_idq.fcurrent_processors fcplication_idq =fcappq.application fcq.concurrent_processor_id =fcp.concurrent_processor_id và fcq.enabled_flag ='Y';Cách kiểm tra loại yêu cầu và Chương trình dành cho Người quản lý đồng thời
định dạng hành động cột a10 định dạng trình quản lý cột a20 định dạng đối tượng a20 định dạng loại cột a10 bộ trang 0 bộ dòng 400 chọn q.application_id, q.concurrent_queue_name, q.user_concurrent_queue_name "Manager", l1.metering "Action", l2.metering "Type", p .user_concurrent_program_name "Đối tượng" từ 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_queucue_id_current_current.queue_application_id =c. 'và 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'and l2.lookup_code ='P' và l2.lookup_type ='CP_SPq. application_id, q.concurrent_queue_name, q.user_concurrent_queue_name "Người quản lý", l1.metering "Hành động", "Ứng dụng" "Loại", a.application_name "Đối tượng" từ apps.fnd_concurrent_queue_content c, apps.fnd_concu rrent_queues_vl q, apps.fnd_application_vl a, apps.fnd_lookups l1. c.include_flagand l1.lookup_type ='INCLUDE_EXCLUDE'UNION ALLselect q.application_id, q.concurrent_queue_name, q.user_concurrent_queue_name "Manager", l1.metering "Action", l2.metering "Type", x.complex_rule_name "Object". 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_idand q.idandue_. complex_rule_idand c.type_application_id =x.application_idand l1.lookup_code =c.include_flag và l1.lookup_type ='INCLUDE_EXCLUDE'và l2.lookup_code =' C'and l2.lookup_type ='CP_SPECIAL_RULES'UNION ALLselect, qidelect .concurrent_queue_name, q.user_concurrent_queue_name "Trình quản lý", l1.means "Hành động", l2.mentic "Loại", r.request_class_name "Đối tượng" từ apps.fnd_concurrent_queue_content c, apps.fnd_concurrent_queues_vups q, apps.fnd_conc1. , apps.fnd_lookups l2where q.concurrent_queue_id =c.concurrent_queue_idand q.application_id =c.queue_application_idand c.type_code ='R'and c.type_id =r.request_class_idand c.type_application_code =r.applicationup_idand .lookup_type ='INCLUDE_EXCLUDE'and l2.lookup_code =' R'and l2.lookup_type ='CP_SPECIAL_RULES'UNION TẤT CẢ chọn q.application_id, q.concurrent_queue_name, q.user_concurrent_queue_name "Người quản lý", l1.metering "Hành động" Gõ ", o.oracle_username" Object "từ 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 =cquelication_idcurrent =c.queue_id =c.quelication_idcurrent _application_idand c.type_code ='O'and c.type_id =o.oracle_idand l1.lookup_code =c.include_flag và l1.lookup_type =' INCLUDE_EXCLUDE'và l2.lookup_code ='O'and l2.lookup_type =' CP_SPECIAL_RULES q'UNION .application_id, q.concurrent_queue_name, q.user_concurrent_queue_name "Trình quản lý", l1.metering "Hành động", l2.metering "Loại", u.user_name "Đối tượng" từ apps.fnd_concurrent_queue_content c, apps.fnd_concurrent_queues_vl q, apps.FND_OAM_vl q, apps.FND_OAM 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'and c.type_id =u.user_idand l1.lookup_code =c.typelude ='INCLUDE_EXCLUDE'and l2.lookup_code =' U'and l2.lookup_type ='CP_SPECIAL_RULES'UNION TẤT CẢ chọn q.application_id, q.concurrent_queue_name, q.user_concurrent_queue_name "Manager", l1.metering "Action", l2.metering "Type" to_char (c.type_id) "Đối tượng" từ 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_idand c.type_code not in ('C', 'P', 'O', 'R', 'U ') và l1.lookup_code =c.include_flag và l1.lookup_type =' INCLUDE_EXCLUDE 'và l2.lookup_code =c.type_code và l2.lookup_type =' CP_SPECIAL_RULES ';Cách kiểm tra / tìm sự thay đổi / tối đa / phút cho Tất cả người quản lý đồng thời
select 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, fcq.user_concurrent_queue_name, ftp.application_id, ftp.concurrent_time_period_name, fa.application_short_name, ftp.description, fcqs.mincess_processes, fcmendqsc.squepages, appscurrent_maxsqmendqsc.s.sc.s. 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. application_id;Truy vấn để kiểm tra tất cả các giá trị của đồng thời Tùy chọn hồ sơ cấp trang web liên quan đến Người quản lý và ở đó tra cứu
SELECT fpo.profile_option_name, fpo.profile_option_id, fpov.profile_option_value, fpov.level_id, fa.application_short_name, fpo.user_profile_option_name, fpo.sql_validation, fpo.descriptionFROM_VL_FND_PROPT_Ứng dụng .application_id =0and fpo.site_enabled_flag ='Y'and (fpo.profile_option_name like' CONC _% 'or fpo.profile_option_name like' FS _% 'or fpo.profile_option_name like' PRINTER% 'or fpo.profile_option_name in (' EDITOR_CHAR ') FNDCPVWR_FONT_SIZE ',' MAX_PAGE_LENGTH ',' APPLICWRK ')) và fpo.profile_option_id =fpov.profile_option_idand fpo.application_id =fpov.application_idand fpo.application_id =fa.application_idand fpov.level =fa.application_idand fpov.levelTruy vấn để kiểm tra trạng thái người quản lý đồng thời từ phụ trợ nd
select q.user_concurrent_queue_name service_name, a.application_name srvc_app_name, a.application_short_name srvc_app_short_name, q.concurrent_queue_name service_short_name, decode ((select count (*) from apps.furrent_concand_conque_processes) application_idand (fcp1.process_status_code in ('C', 'M') or (fcp1.process_status_code in ('A', 'D', 'T')) và tồn tại (chọn 1 từ gv $ sessionwhere fcp1.session_id =audsid))) ) / * thực_trình * /, 0, giải mã (q.max_processes, 0, 'NOT_STARTED', 'DOWN'), q.max_processes, 'UP', 'WARNING') service_status, q.max_processes target_processes, (select count (* ) từ 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') / * Connecting hoặc Migrating * ',' D ',' T ') và tồn tại (chọn 1 từ gv $ sessionwhere fcp2.session_id =au dsid)))) thực tế_processes, '' message, 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 / * Need to cover the case trong đó người quản lý không có hàng nào trong FND_CONCURRENT_PROCESSES. Các liên kết bên ngoài sẽ không cắt nó. * / select q.user_concurrent_queue_name service_name, a.application_name srvc_app_name, a.application_short_name srvc_app_short_name, q.concurrent_queue_name srvc_short_name, decodeWN (q.max_processescesses, 0, 'NOT_STARTes', service 'message, 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_typeand_urrent_fndcess_esccode' app process in (select 1 , 'M', 'A', 'D', 'T') và q.concurrent_queue_id =p.concurrent_queue_idand q.application_id =p.queue_application_id);Để kiểm tra Tất cả các công việc đang chạy với chi tiết phiên DB trên nút DB hiện tại
đặt dòng 200 bộ trang 200 cột Tiêu đề PHASE Định dạng 'Giai đoạn' A8 Cột TRẠNG THÁI Tiêu đề 'Trạng thái' Định dạng A8 Cột TIÊU ĐỀ CHƯƠNG TRÌNH 'Tên chương trình' Định dạng A25 cột YÊU CẦU Tiêu đề 'Người yêu cầu' Định dạng A9 Cột START_TIME Tiêu đề 'Thời gian bắt đầu' A15 Cột RUN_TIME căn đều tiêu đề bên trái ' Runtime (m) 'định dạng 9999.99 cột OSPID tiêu đề' OSPID 'định dạng a5 cột SID tiêu đề' DBSID 'định dạng 99999spool crrunning.lstselect fcrv.request_id REQUEST, decode (fcrv.phase_code,' P ',' Pending ',' R ',' Running ',' I ',' Không hoạt động ',' Đã hoàn thành ') PHASE, giải mã (fcrv.status_code,' A ',' Waiting ',' B ',' Resuming ',' C ',' Normal ',' F ', 'Đã lên lịch', 'G', 'Cảnh báo', 'H', 'Tạm dừng', 'I', 'Bình thường', 'M', 'Không có người quản lý', 'Q', 'Chế độ chờ', 'R', 'Bình thường', 'S', 'Đã tạm ngưng', 'T', 'Đang kết thúc', 'U', 'Đã tắt', 'W', 'Tạm dừng', 'X', 'Đã chấm dứt', 'Z', 'Đang chờ ', 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.actual_start_date) * 1440) , 2) RUN_TIME, substr (fcr.oracle_process_id, 1,7) OSPID, so với SID SID - substr (fcr.os_process_id, 1,7) OS_PIDfrom apps.fnd_conc_req_summary_v fcrv, apps.fnd_concurrent_requests fcr, v $ phiên $ process vpwhere fcrv.phase_code ='R'and fcrv.request_id =fcr.request_idand fcr.oracle_process_id =vp.spidand vs.paddr =vp.addrorder theo PHASE, STATUS, REQUEST desc /Để tìm tệp theo dõi cho lệnh lặp lại đồng thời cụ thể st
định dạng theo dõi cột a8 định dạng theo dõi cột a80 định dạng cột user_concurrent_program_name a40 định dạng thực thi cột a15 định dạng enable_trace a12set dòng 80 bộ trang 22 bộ đầu tắt req.enable_trace, 'Trace Name:' || dest.value || '/' || low (dbnm.value) || '_ora_' || oracle_process_id || '.trc', 'Prog. Tên:'|| prog.user_concurrent_program_name,' Tên tệp:'|| tên tệp thực thi || exe .sid || ',' || ses.serial #, 'Mô-đun:' || ses.modulefrom apps.fnd_concurrent_requests req, v $ session ses, v $ process proc, v $ tham số đích, v $ tham số dbnm, apps.fnd_concurrent_programs_vl prog, apps.fnd_executables Operatingnamewhere req. request_id =&requestand req.oracle_process_id =proc.spid (+) và proc.addr =ses.paddr (+) và dest.name ='user_dump_dest'and dbnm.name =' db_name'and req.concurrent_program_id =prog.concurrent_q .program_idand req.concurrent_q .program_idand req.concurrent_q. program_application_id =prog.application_idand prog.application_id =executename.application_idand prog.executable_id =executename.executable_id;Để tìm hoạt động tổng thể của bộ Yêu cầu và thời gian hoàn thành yêu cầu khác nhau của nó
đặt kích thước dòng 300col Định dạng "Tên chương trình" a50col Định dạng đã qua 9999.99col Định dạng "Process ID" a10col Định dạng REQUEST_DATE a15col Định dạng ACTUAL_START_DATE a15col Định dạng YÊU CẦU 999999999col Định dạng PARENT 999999999col Định dạng đối số_text a50SELECT / * + ORDERED SỬ DỤNG_NL (x fcptr fcp) fcr.request_id "REQUEST", fcr.parent_request_id "PARENT", fcr.oracle_process_id "Process ID", fcptl.user_concurrent_program_name "Tên chương trình", fcr.argument_text, DECODE (fcr.phase_code, 'X', 'Đã kết thúc', 'E ',' Lỗi ',' C ',' Đã hoàn thành ',' P ',' Đang chờ xử lý ',' R ',' Đang chạy ', phase_code) "Giai đoạn", DECODE (fcr.status_code,' X ',' Đã chấm dứt ', 'C', 'Bình thường', 'D', 'Đã hủy', 'E', 'Lỗi', 'G', 'Cảnh báo', 'Q', 'Đã lên lịch', 'R', 'Bình thường', 'W ',' Tạm dừng ',' Không chắc chắn ') "Trạng thái", - fcr.phase_code, - fcr.status_code, fcr.request_date, fcr.actual_start_date, fcr.actual_completion_date, (fcr.actual_completion_date - fcr.actual_start_date) * 1440_date "Đã qua" FROM (SELECT / * + chỉ mục (fcr1 FND_CONCURRENT_REQUESTS_N3) * / fcr1.request_idFROM fnd_concurrent_requests fcr1W TẠI ĐÂY 1 =1START VỚI fcr1.request_id =&request_id - KẾT NỐI BỞI CẦU TRƯỚC fcr1.parent_request_id =fcr1.request_id) x, KẾT NỐI BẰNG CỬA HÀNG fcr1.request_id =fcr1.parent_request_graid) fcr1.parent_request_id =fcr1.request_id )x x.T o tìm sid từ id yêu cầu
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.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.inst_idand p.addr f. request_id =fcr.request_id;Để tìm tất cả những thứ chi tiết từ id / truy vấn yêu cầu cụ thể để tìm chi tiết yêu cầu đồng thời / cách kiểm tra trạng thái yêu cầu đồng thời từ phụ trợ / truy vấn để tìm chương trình đồng thời r un time
đặt các trang 100; định dạng col request_class_application_id 99999999 tiêu đề 'REQUEST_CLASS | APP_ID'col os_process_id định dạng a8col application_short_name format a5col request_start_date format a18 title' REQUEST DATE'col reality_start_date format a18 'START DATE tiêu đề ngày' định dạng thực tế --chọn giai đoạn r.REQUEST_ID, u.user_name, decode (r.PHASE_CODE, 'C', 'Complete', 'P', 'Pending', 'R', 'Running', r.PHASE_CODE), decode (r .STATUS_CODE, 'C', 'Bình thường', 'I', 'Bình thường', 'R', 'Bình thường', 'Q', 'Chế độ chờ', 'E', 'Lỗi', 'X', 'Đã chấm dứt' , Trạng thái 'W', 'Tạm dừng', r.STATUS_CODE), r.PRIORITY, decode (r.HOLD_FLAG, 'N', '"NOT on hold",' Y ',' "ON HOLD" ', r. HOLD_FLAG) Hold_flag, p.application_short_name, f.user_concurrent_program_name, f.concurrent_program_name, e.EXECUTABLE_NAME, e.EXECUTION_FILE_NAME, e.EXECUTION_METHOD_CODE, e.EXECITY_name_FILE_PICATHname, r.REQUEST_clest r.REQUESTED_START_DATE, 'DD-MO N-YYYY HH:MI ') request_start_date, to_char (r.ACTUAL_START_DATE,' DD-MON-YYYY HH:MI ') real_start_date, decode (r.ACTUAL_COMPLETION_DATE, null,' "Still Running" ', to_char (r.ACTUAL_COMPLETION_DATE ,MPLETION_DATE) 'DD-MON-YYYY 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), 'MIART_DATE) "Chạy theo thời gian", 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) Theo dõi, giải mã (f.run_alone_flag, 'N', '"NOT Alone",' Y ',' "RUN ALONE" ', f.run_alone_flag) Một mình, 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 qwhere u.user_id =r.requested_byand p.application_id =r.PROGRAM_APPLICATION_IDand r.CONCURRENT_PROGRAM_ID =f.CONCU 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 để tìm yêu cầu Đang chờ xử lý trong tất cả Trình quản lý đồng thời / truy vấn để tìm các yêu cầu đồng thời đang chờ xử lý
select request_id, b.user_concurrent_queue_namefrom apps.fnd_concurrent_worker_requests a, apps.fnd_concurrent_queues_vl ở đâu a.phase_code ='P'and a.status_code =' Iand a.hold_flag! ='Y'and a.requested_st .concurrent_queue_id =b.concurrent_queue_idand a.control_code là null - và a.concurrent_queue_name! ='FNDCRM'và a.concurrent_queue_name không có trong (' FNDCRM ') thứ tự byrequest_id, b.user_concurrent_prequeue_name /Cách tìm người quản lý nào chạy ID yêu cầu / truy vấn của bạn để tìm người quản lý đồng thời cho chương trình đồng thời m
Định dạng OsId cột A7 Định dạng cột Oracle_Process_ID 99999 Định dạng cột Concurrent_Queue_Name Định dạng A20 Định dạng nhật ký cột A25 Định dạng cột bắt đầu_At A20 Đặt đầu tắt Đặt xác minh Tắt Đặt tiếng vọng TắtSelect'The '|| Đồng thời_Queue_Name || ' người quản lý đồng thời chạy yêu cầu của bạn từ ', to_char (Ngày_thực_thực_ngày,' MON-DD-YY HH:MI:SS AM ') || '- to -' || to_char (Actual_COMPLETION_date, 'MON-DD-YY HH:MI:SS AM'), 'The' || Đồng thời_Queue_Name || ' tệp nhật ký trình quản lý đồng thời là '|| P.Logfile_Name, 'Tệp nhật ký yêu cầu là' || 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.Controlling head / Request R. trước>Để tìm Lịch sử của chương trình ID yêu cầu
đặt định dạng linesize 250col request_date a15col request_start_date format a15col fact_start_date format a15col reality_completion_date format a15col objects_text format a70col Elapsed format 9999.99select * from (select a.request_id, a.parent_request_id.pha ',' Completed ' , 'I', 'Không hoạt động', 'P', 'Đang chờ xử lý', 'R', 'Đang chạy') || '' || DECODE (a.status_code, 'A', 'Đang chờ', 'B', ' Tiếp tục ',' C ',' Bình thường ',' D ',' Đã hủy ',' E ',' Lỗi ',' G ',' Cảnh báo ',' H ',' Đang chờ ',' I ',' Bình thường ',' M ',' Không có người quản lý ',' P ',' Đã lên lịch ',' Q ',' Chế độ chờ ',' R ',' Bình thường ',' S ',' Bị treo ',' T ',' Đang kết thúc ' , 'U', 'Đã tắt', 'W', 'Tạm dừng', 'X', 'Đã chấm dứt', 'Z', 'Đang chờ') "PHASE_STATUS", a.request_date, a.requested_start_date, a.actual_start_date, a .actual_completion_date, (nvl (real_completion_date, sysdate) - real_start_date) * 1440 "Elapsed", a.argument_text, a.USER_CONCURRENT_PROGRAM_NAMEfrom apps.FND_CONC_conc_vn_SUMMARY_program_ select from concurrent_idests_quence_qua một nơi st_id =&1) --- (nvl (real_completion_date, sysdate) - fact_start_date) * 1440> 10order by a.request_id desc) trong đó rownum <100;Truy vấn để kiểm tra lịch sử chạy chương trình đồng thời
ttitle offset linesize 180set pagesize 60set newpage 0set pause offset termout onttitle 'CM Analysis Report' via1col conc_que format a15 tiêu đề "Conc Queue" col user_name format a12 title "Requestor" col reqid format 99999999 col reqid format 99999999 col reqid format a9 tiêu đề "Ngày" định dạng col astart a8 tiêu đề "ActSt | Time" định dạng col acomp a8 tiêu đề "ActEnd | Time" định dạng col rtime 99.999 tiêu đề "ExTme | (Sec)" định dạng col wtime 99.999 tiêu đề "WtTme | (Sec)" col pname1 định dạng a40 tiêu đề "Ngắn | Tên" định dạng col pname2 a65 tiêu đề "Tên người thử nghiệm" định dạng col args a25 tiêu đề "Đối số" selecttrunc (real_start_date) sdate, request_id reqid, user_name, to_char (real_start_date, 'HH24:MI:SS') astart, to_char (real_completion_date, 'HH24:MI:SS') acomp, ((real_start_date - request_start_date) * 60 * 60 * 24) wtime, ((real_completion_date - real_start_date) * 60 * 60 * 24) rtime, que.concurrent_queue_name conc_que, que.concurrent_queue_name conc_que .user_concurrent_program_name pname2, req.argument_text argsfromapplsys.fnd_concurrent_queues hàng, ứng dụng lsys. -MON-YYYY HH24:MI:SS ') oractual_completion_date between to_date (' &start_dte ',' DD-MON-YYYY HH24:MI:SS ') và to_date (' &end_date ',' DD-MON-YYYY HH24:MI:SS '))anduser_concurrent_program_name like '&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.requested_byandprog.concurrent_program_id =req.concurrent_program_idandprog.application_id =req.program_application_idand prog.concurrent_program_name not trong ('ACTIVATE', 'ABORT', 'DEACTIVATE', 'VERIFY') theo thứ tự byactual_start_date;Truy vấn để tìm Yêu cầu đang chạy trong Trình quản lý đồng thời / cách kiểm tra yêu cầu đang chạy đồng thời từ truy vấn trạng thái chương trình phụ trợ / đồng thời trong ứng dụng oracle
set trang 58set linesize 79Column Reqst Format 999999Column Requestor Format A10Column Orcl Format A7 Định dạng Chương trình Cột A10 Định dạng Bắt đầu Cột A14 Định dạng Trình quản lý Cột A11 Định dạng Cột LN a10 Cột bắt đầu HEADING 'Đã bắt đầu tại'Column MANAGER HEADING' Kiểm soát | 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_Queue_Name Manager, Concurrent_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) Và O.Oracle_Id =Fcr.Orac le_IdAnd (Fcr.Program_Application_Id =Fcp.Application_IdAnd Fcr.Concurrent_Program_Id =Fcp.Concurrent_Program_Id) Và được yêu cầu_By =User_IdAnd Phase_Code ='R' và Status_Code ='R'Order theo thực tế, Request_Start_Date / Truy vấn để tìm Yêu cầu chấm dứt trong Trình quản lý đồng thờiset trang 58set linesize 79Column Reqst Format 999999Column Requestor Format A10Column Orcl Format A7 Định dạng Chương trình Cột A10 Định dạng Bắt đầu Cột A14 Định dạng Trình quản lý Cột A11 Định dạng Cột LN a10 Cột bắt đầu HEADING 'Đã bắt đầu tại'Column MANAGER HEADING' Kiểm soát | 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_Queue_Name Manager, Concurrent_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 ManagerRecommended Courses
The following are some of the recommended courses you can buy if you want to get a step further
Given below are the links to some of the courses
Oracle DBA 11g/12c – Database Administration for Junior DBA :This course is good for the people who are starting as Junior DBA or aspire to be Oracle DBA. This will provide a good understanding of backup &recovery and General administration tasks
Oracle Database:Oracle 12C R2 RAC Administration :This course covers the installation, administration of Oracle RAC. A good course for Oracle DBA who want to upgrade his skills for Oracle RAC
Oracle Data Guard:Database Administration for Oracle 12C R2 :This course covers the installation, administration of Oracle Dataguard. A good course for Oracle DBA who want to upgrade his skills for 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!