{"id":127,"date":"2009-04-04T18:12:13","date_gmt":"2009-04-04T12:42:13","guid":{"rendered":"http:\/\/www.oratraining.com\/blog\/?p=127"},"modified":"2009-04-04T18:12:13","modified_gmt":"2009-04-04T12:42:13","slug":"cmclean-sql-script-to-cleanup-concurrent-manager-tables","status":"publish","type":"post","link":"https:\/\/www.oratraining.com\/blog\/2009\/04\/cmclean-sql-script-to-cleanup-concurrent-manager-tables\/","title":{"rendered":"cmclean.sql script to cleanup concurrent manager tables"},"content":{"rendered":"<h4 style=\"font-size: 1em;\">Click here to download\u00a0<a href=\"http:\/\/www.oratraining.com\/docs\/oracle\/scripts\/cmclean.sql\" target=\"_blank\">cmclean.sql<\/a><\/h4>\n<p>REM<br \/>\nREM FILENAME<br \/>\nREM\u00a0\u00a0 cmclean.sql<br \/>\nREM DESCRIPTION<br \/>\nREM\u00a0\u00a0 Clean out the concurrent manager tables<br \/>\nREM NOTES<br \/>\nREM\u00a0\u00a0 Usage: sqlplus &lt;apps_user\/apps_passwd&gt; @cmclean<br \/>\nREM<br \/>\nREM<br \/>\nREM\u00a0\u00a0 $Id: cmclean.sql,v 1.4 2001\/04\/07 15:55:07 pferguso Exp $<br \/>\nREM<br \/>\nREM<br \/>\nREM +==============================+<br \/>\nset verify off;<br \/>\nset head off;<br \/>\nset timing off<br \/>\nset pagesize 1000<br \/>\ncolumn manager format a20 heading &#8216;Manager short name&#8217;<br \/>\ncolumn pid heading &#8216;Process id&#8217;<br \/>\ncolumn pscode format a12 heading &#8216;Status code&#8217;<br \/>\ncolumn ccode format a12 heading &#8216;Control code&#8217;<br \/>\ncolumn request heading &#8216;Request ID&#8217;<br \/>\ncolumn pcode format a6 heading &#8216;Phase&#8217;<br \/>\ncolumn scode format a6 heading &#8216;Status&#8217;<br \/>\nWHENEVER SQLERROR EXIT ROLLBACK;<!--more--><br \/>\nDOCUMENT<br \/>\nWARNING : Do not run this script without explicit instructions<br \/>\nfrom Oracle Support<br \/>\n*** Make sure that the managers are shut down\u00a0\u00a0\u00a0\u00a0 ***<br \/>\n*** before running this script\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ***<br \/>\n*** If the concurrent managers are NOT shut down, ***<br \/>\n*** exit this script now !!\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ***<br \/>\n#<br \/>\naccept answer prompt &#8216;If you wish to continue type the word &#8221;dual&#8221;: &#8216;<br \/>\nset feed off<br \/>\nselect null from &amp;answer;<br \/>\nset feed on<br \/>\nREM\u00a0\u00a0\u00a0\u00a0 Update process status codes to TERMINATED<br \/>\nprompt<br \/>\nprompt\u00a0 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nprompt\u00a0 &#8212; Updating invalid process status codes in FND_CONCURRENT_PROCESSES<br \/>\nset feedback off<br \/>\nset head on<br \/>\nbreak on manager<br \/>\nSELECT\u00a0 concurrent_queue_name manager,<br \/>\nconcurrent_process_id pid,<br \/>\nprocess_status_code pscode<br \/>\nFROM\u00a0\u00a0\u00a0 fnd_concurrent_queues fcq, fnd_concurrent_processes fcp<br \/>\nWHERE\u00a0\u00a0 process_status_code not in (&#8216;K&#8217;, &#8216;S&#8217;)<br \/>\nAND\u00a0\u00a0\u00a0\u00a0 fcq.concurrent_queue_id = fcp.concurrent_queue_id<br \/>\nAND\u00a0\u00a0\u00a0\u00a0 fcq.application_id = fcp.queue_application_id;<br \/>\nset head off<br \/>\nset feedback on<br \/>\nUPDATE\u00a0 fnd_concurrent_processes<br \/>\nSET\u00a0\u00a0\u00a0\u00a0 process_status_code = &#8216;K&#8217;<br \/>\nWHERE\u00a0\u00a0 process_status_code not in (&#8216;K&#8217;, &#8216;S&#8217;);<br \/>\nREM\u00a0\u00a0\u00a0\u00a0 Set all managers to 0 processes<br \/>\nprompt<br \/>\nprompt\u00a0 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nprompt\u00a0 &#8212; Updating running processes in FND_CONCURRENT_QUEUES<br \/>\nprompt\u00a0 &#8212; Setting running_processes = 0 and max_processes = 0 for all managers<br \/>\nUPDATE\u00a0 fnd_concurrent_queues<br \/>\nSET\u00a0\u00a0\u00a0\u00a0 running_processes = 0, max_processes = 0;<br \/>\nREM\u00a0\u00a0\u00a0\u00a0 Reset control codes<br \/>\nprompt<br \/>\nprompt\u00a0 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nprompt\u00a0 &#8212; Updating invalid control_codes in FND_CONCURRENT_QUEUES<br \/>\nset feedback off<br \/>\nset head on<br \/>\nSELECT\u00a0 concurrent_queue_name manager,<br \/>\ncontrol_code ccode<br \/>\nFROM\u00a0\u00a0\u00a0 fnd_concurrent_queues<br \/>\nWHERE\u00a0\u00a0 control_code not in (&#8216;E&#8217;, &#8216;R&#8217;, &#8216;X&#8217;)<br \/>\nAND\u00a0\u00a0\u00a0\u00a0 control_code IS NOT NULL;<br \/>\nset feedback on<br \/>\nset head off<br \/>\nUPDATE\u00a0 fnd_concurrent_queues<br \/>\nSET\u00a0\u00a0\u00a0\u00a0 control_code = NULL<br \/>\nWHERE\u00a0\u00a0 control_code not in (&#8216;E&#8217;, &#8216;R&#8217;, &#8216;X&#8217;)<br \/>\nAND\u00a0\u00a0\u00a0\u00a0 control_code IS NOT NULL;<br \/>\nREM\u00a0\u00a0\u00a0\u00a0 Also null out target_node for all managers<br \/>\nUPDATE\u00a0 fnd_concurrent_queues<br \/>\nSET\u00a0\u00a0\u00a0\u00a0 target_node = null;<br \/>\nREM\u00a0\u00a0\u00a0\u00a0 Set all &#8216;Terminating&#8217; requests to Completed\/Error<br \/>\nREM\u00a0\u00a0\u00a0\u00a0 Also set Running requests to completed, since the managers are down<br \/>\nprompt<br \/>\nprompt\u00a0 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nprompt\u00a0 &#8212; Updating any Running or Terminating requests to Completed\/Error<br \/>\nset feedback off<br \/>\nset head on<br \/>\nSELECT\u00a0 request_id request,<br \/>\nphase_code pcode,<br \/>\nstatus_code scode<br \/>\nFROM\u00a0\u00a0\u00a0 fnd_concurrent_requests<br \/>\nWHERE\u00a0\u00a0 status_code = &#8216;T&#8217; OR phase_code = &#8216;R&#8217;<br \/>\nORDER BY request_id;<br \/>\nset feedback on<br \/>\nset head off<br \/>\nUPDATE\u00a0 fnd_concurrent_requests<br \/>\nSET\u00a0\u00a0\u00a0\u00a0 phase_code = &#8216;C&#8217;, status_code = &#8216;E&#8217;<br \/>\nWHERE\u00a0\u00a0 status_code =&#8217;T&#8217; OR phase_code = &#8216;R&#8217;;<br \/>\nREM\u00a0\u00a0\u00a0\u00a0 Set all Runalone flags to &#8216;N&#8217;<br \/>\nREM\u00a0\u00a0\u00a0\u00a0 This has to be done differently for Release 10<br \/>\nprompt<br \/>\nprompt\u00a0 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nprompt\u00a0 &#8212; Updating any Runalone flags to &#8216;N&#8217;<br \/>\nprompt<br \/>\nset serveroutput on<br \/>\nset feedback off<br \/>\ndeclare<br \/>\nc\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pls_integer := dbms_sql.open_cursor;<br \/>\nupd_rows\u00a0 pls_integer;<br \/>\nvers\u00a0\u00a0\u00a0\u00a0\u00a0 varchar2(50);<br \/>\ntbl\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 varchar2(50);<br \/>\ncol\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 varchar2(50);<br \/>\nstatement varchar2(255);<br \/>\nbegin<br \/>\nselect substr(release_name, 1, 2)<br \/>\ninto\u00a0\u00a0 vers<br \/>\nfrom fnd_product_groups;<br \/>\nif vers &gt;= 11 then<br \/>\ntbl := &#8216;fnd_conflicts_domain&#8217;;<br \/>\ncol := &#8216;runalone_flag&#8217;;<br \/>\nelse<br \/>\ntbl := &#8216;fnd_concurrent_conflict_sets&#8217;;<br \/>\ncol := &#8216;run_alone_flag&#8217;;<br \/>\nend if;<br \/>\nstatement := &#8216;update &#8216; || tbl || &#8216; set &#8216; || col || &#8216;=&#8221;N&#8221; where &#8216; || col || &#8216; = &#8221;Y&#8221;&#8217;;<br \/>\ndbms_sql.parse(c, statement, dbms_sql.native);<br \/>\nupd_rows := dbms_sql.execute(c);<br \/>\ndbms_sql.close_cursor(c);<br \/>\ndbms_output.put_line(&#8216;Updated &#8216; || upd_rows || &#8216; rows of &#8216; || col || &#8216; in &#8216; || tbl || &#8216; to &#8221;N&#8221;&#8217;);<br \/>\nend;<br \/>\n\/<\/p>\n<p>prompt<\/p>\n<p>prompt\u00a0 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>prompt\u00a0 Updates complete.<br \/>\nprompt\u00a0 Type commit now to commit these updates, or rollback to cancel.<br \/>\nprompt\u00a0 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>prompt<\/p>\n<p>set feedback on<\/p>\n<p>REM\u00a0 &lt;= Last REM statment &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Click here to download\u00a0cmclean.sql REM REM FILENAME REM\u00a0\u00a0 cmclean.sql REM DESCRIPTION REM\u00a0\u00a0 Clean out the concurrent manager tables REM NOTES REM\u00a0\u00a0 Usage: sqlplus &lt;apps_user\/apps_passwd&gt; @cmclean REM REM REM\u00a0\u00a0 $Id: cmclean.sql,v 1.4 2001\/04\/07 15:55:07 pferguso Exp $ REM REM REM +==============================+ set verify off; set head off; set timing off set pagesize 1000 column manager format [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[29,4,5,6],"tags":[204,196,98,198],"class_list":["post-127","post","type-post","status-publish","format-standard","hentry","category-concurrent-manager","category-oracle","category-applications","category-oracle-applications-dba","tag-concurrent-manager","tag-oracle","tag-oracle-applications","tag-oracle-applications-dba"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/posts\/127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/comments?post=127"}],"version-history":[{"count":0,"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/posts\/127\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/media?parent=127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/categories?post=127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/tags?post=127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}