[Home] [Help]
PACKAGE BODY: APPS.FND_CP_FNDSM
Source
1 package body fnd_cp_fndsm as
2 /* $Header: AFCPFSMB.pls 120.4.12000000.4 2007/11/02 16:29:29 ckclark ship $ */
3
4 procedure mark_shutdown_fndsm( node IN varchar2)
5 is
6 begin
7 update FND_CONCURRENT_PROCESSES
8 set PROCESS_STATUS_CODE = 'S',
9 LAST_UPDATE_DATE = sysdate
10 where CONCURRENT_QUEUE_ID =
11 ( select CONCURRENT_QUEUE_ID
12 from FND_CONCURRENT_QUEUES
13 where MANAGER_TYPE = '6'
14 and NODE_NAME = node)
15 and PROCESS_STATUS_CODE not in ('S', 'K');
16
17 update FND_CONCURRENT_QUEUES
18 set running_processes = 0,
19 max_processes = 0,
20 control_code = null
21 where MANAGER_TYPE = '6'
22 and NODE_NAME = node;
23
24 end mark_shutdown_fndsm;
25
26 procedure mark_killed_fndsm( node IN varchar2)
27 is
28 begin
29 update FND_CONCURRENT_PROCESSES
30 set PROCESS_STATUS_CODE = 'K',
31 LAST_UPDATE_DATE = sysdate
32 where CONCURRENT_QUEUE_ID =
33 ( select CONCURRENT_QUEUE_ID
34 from FND_CONCURRENT_QUEUES
35 where MANAGER_TYPE = '6'
36 and NODE_NAME = node)
37 and PROCESS_STATUS_CODE not in ('S', 'K');
38
39 update FND_CONCURRENT_QUEUES
40 set running_processes = 0,
41 max_processes = 0,
42 control_code = null
43 where MANAGER_TYPE = 6
44 and NODE_NAME = node;
45
46 end mark_killed_fndsm;
47
48 procedure shutdown_all_fndsm
49 is
50 begin
51 update FND_CONCURRENT_PROCESSES
52 set PROCESS_STATUS_CODE = 'S',
53 LAST_UPDATE_DATE = sysdate
54 where MANAGER_TYPE = 6
55 and PROCESS_STATUS_CODE not in ('S', 'K');
56
57 update FND_CONCURRENT_QUEUES
58 set running_processes = 0,
59 max_processes = 0,
60 control_code = null
61 where MANAGER_TYPE = '6';
62 end shutdown_all_fndsm;
63
64 /* 2849672- Add IN parameter twotask, so that the process row for each
65 FNDSM will have db_instance populated. */
66 /* 5867853- register_fndsm_fcp is used by ICM to insert FNDSM row, then FNDSM
67 is spawned and uses register_fndsm_db to update the row. This procedure
68 should be an autonomous transaction with a commit so that it is instantly
69 available to FNDSM for update. */
70 procedure register_fndsm_fcp( cpid IN number,
71 node IN varchar2,
72 ospid IN number,
73 logfile IN varchar2,
74 mgrusrid IN number,
75 twotask IN varchar2)
76 is
77 PRAGMA AUTONOMOUS_TRANSACTION;
78 begin
79
80 update FND_CONCURRENT_PROCESSES
81 set PROCESS_STATUS_CODE = 'K',
82 LAST_UPDATE_DATE = sysdate,
83 LAST_UPDATED_BY = mgrusrid
84 where PROCESS_STATUS_CODE not in ('S','K')
85 and MANAGER_TYPE = 6
86 and NODE_NAME = node;
87
88 update FND_CONCURRENT_QUEUES
89 set running_processes = 1,
90 max_processes = 1,
91 control_code = null
92 where MANAGER_TYPE = 6 and NODE_NAME = node;
93
94 INSERT INTO FND_CONCURRENT_PROCESSES
95 (CONCURRENT_PROCESS_ID, ORACLE_PROCESS_ID,
96 QUEUE_APPLICATION_ID, CONCURRENT_QUEUE_ID,
97 SESSION_ID,
98 Creation_Date, Created_By,
99 LAST_UPDATE_DATE, LAST_UPDATED_BY,
100 PROCESS_START_DATE, PROCESS_STATUS_CODE,
101 MANAGER_TYPE, OS_PROCESS_ID,
102 LOGFILE_NAME,
103 NODE_NAME, SQLNET_STRING)
104
105 (select
106 cpid, '999999',
107
108 Q.APPLICATION_ID, Q.CONCURRENT_QUEUE_ID,
109
110 '999999',
111 sysdate, mgrusrid,
112 SYSDATE, mgrusrid,
113 SYSDATE, 'A',
114 6, ospid,
115 logfile,
116 node, twotask
117
118 from FND_CONCURRENT_QUEUES Q
119 where Q.MANAGER_TYPE = 6
120 and Q.NODE_NAME = node
121 );
122 commit;
123
124 exception
125 when others then
126 rollback;
127 raise;
128
129 end register_fndsm_fcp;
130
131 PROCEDURE register_fndsm_fcq(node varchar2)
132 is
133 mgr_name varchar2(36);
134 sm_name varchar2(241);
135 qcount number;
136 ncount number;
137 dummy number;
138 begin
139 mgr_name := 'FNDSM_' || node;
140 IF lengthb(mgr_name) > 30
141 THEN
142 mgr_name := substrb(mgr_name,1,30);
143 END IF;
144
145 select count(*)
146 into qcount
147 from fnd_concurrent_queues
148 where node_name = node
149 and manager_type = '6';
150
151
152
153 if (qcount = 0) then
154 select count(*)
155 into ncount
156 from fnd_concurrent_queues
157 where upper(CONCURRENT_QUEUE_NAME) = upper(mgr_name);
158
159 if (ncount <> 0) then
160 select fnd_concurrent_queues_s.nextval
161 into dummy
162 from dual;
163
164 mgr_name := substrb('FNDSM_'||dummy||'_'||node,
165 1, 30);
166 end if;
167
168 sm_name := fnd_message.get_string('FND', 'CONC-FNDSM NAME');
169 if(sm_name = 'CONC-FNDSM NAME') then
170 sm_name := 'Service Manager';
171 end if;
172
173 delete from fnd_concurrent_queues_tl
174 where upper(CONCURRENT_QUEUE_NAME) = upper(mgr_name)
175 AND application_id = (SELECT application_id FROM fnd_application WHERE application_short_name = 'FND');
176
177 begin
178 fnd_manager.register(sm_name || ': ' || node, 'FND',
179 mgr_name, sm_name, 'Service Manager',
180 null, null, node, null, null, null,
181 'FNDSM', 'FND', null, 'US' );
182 end;
183 end if;
184
185 end register_fndsm_fcq;
186
187 PROCEDURE register_fndim_fcq(node varchar2)
188 is
189 mgr_name varchar2(36);
190 im_name varchar2(241);
191 ncount number;
192 qcount number;
193 dummy number;
194 begin
195 mgr_name := 'FNDIM_' || node;
196 IF lengthb(mgr_name) > 30
197 THEN
198 mgr_name := substrb(mgr_name,1,30);
199 END IF;
200
201 select count(*)
202 into qcount
203 from fnd_concurrent_queues
204 where manager_type = '2'
205 and node_name = node;
206
207 if (qcount = 0) then
208 select count(*)
209 into ncount
210 from fnd_concurrent_queues
211 where upper(CONCURRENT_QUEUE_NAME) = upper(mgr_name);
212
213 if (ncount <> 0) then
214 select fnd_concurrent_queues_s.nextval
215 into dummy
216 from dual;
217
218 mgr_name := substrb('FNDIM_'||dummy||'_'||node,
219 1, 30);
220 end if;
221
222 im_name := fnd_message.get_string('FND', 'CONC-FNDIM NAME');
223 if(im_name = 'CONC-FNDIM NAME') then
224 im_name := 'Internal Monitor';
225 end if;
226
227 delete from fnd_concurrent_queues_tl
228 where upper(CONCURRENT_QUEUE_NAME) = upper(mgr_name)
229 AND application_id = (SELECT application_id FROM fnd_application WHERE application_short_name = 'FND');
230
231 begin
232 fnd_manager.register(im_name || ': ' || node, 'FND',
233 mgr_name, im_name, 'Internal Monitor',
234 null, null, node, null, null, null,
235 'FNDIMON', 'FND', null, 'US' );
236 end;
237 end if;
238
239 end register_fndim_fcq;
240
241 PROCEDURE register_oamgcs_fcq(node IN varchar2,Oracle_home IN varchar2
242 DEFAULT null, interval IN number DEFAULT 300000)
243 is
244 mgr_name varchar2(36);
245 name varchar2(241);
246 svcparams varchar2(256);
247 qcount number;
248 ncount number;
249 dummy number;
250 begin
251 mgr_name := 'OAMGCS_' || node;
252 svcparams := 'NODE=' || node || ';ORACLE_HOME='|| Oracle_home ||';LOADINTERVAL=' ||TO_CHAR(interval) ||
253 ';RTI_KEEP_DAYS=1;FRD_KEEP_DAYS=7';
254 IF lengthb(mgr_name) > 30
255 THEN
256 mgr_name := substrb(mgr_name,1,30);
257 END IF;
258
259 select count(*)
260 into qcount
261 from fnd_concurrent_queues
262 where node_name = node
263 and TO_NUMBER(manager_type) = (select service_id
264 from fnd_cp_services where service_handle='OAMGCS');
265
266 if (qcount = 0) then
267 select count(*)
268 into ncount
269 from fnd_concurrent_queues
270 where upper(CONCURRENT_QUEUE_NAME) = upper(mgr_name);
271
272 if (ncount <> 0) then
273 select fnd_concurrent_queues_s.nextval
274 into dummy
275 from dual;
276
277 mgr_name := substrb('OAMGCS_'||dummy||'_'||node,
278 1, 30);
279 end if;
280
281 name := fnd_message.get_string('FND', 'CONC-OAMGCS NAME');
282
283 if(name = 'CONC-OAMGCS NAME') then
284 name := 'OAM Generic Collection Service';
285 end if;
286
287 delete from fnd_concurrent_queues_tl
288 where upper(CONCURRENT_QUEUE_NAME) = upper(mgr_name)
289 AND application_id = (SELECT application_id FROM fnd_application WHERE application_short_name = 'FND');
290
291 begin
292 if not fnd_manager.Manager_exists(name || ':' ||node,'FND') then
293 fnd_manager.register_si(manager=>name || ': ' || node,
294 application=>'FND',
295 short_name=>mgr_name,
296 service_handle=>'OAMGCS',
297 PRIMARY_NODE=>node);
298 end if;
299 /* Bug 2557014: use work_shift_id parameter insted of
300 workshift_name parameter to ensure Standard workshift
301 is found in NLS instances */
302 if not fnd_manager.manager_work_shift_exists(name || ':' ||node,'FND','Standard') then
303 fnd_manager.assign_work_shift(manager_short_name=>mgr_name,
304 manager_application=>'FND',
305 work_shift_id => 0,
306 processes=>1,
307 sleep_seconds=>30,
308 svc_params=>svcparams);
309 end if;
310 end;
311 end if;
312
313 end register_oamgcs_fcq;
314
315
316 procedure register_fndsm_db( ospid IN number,
317 cpid IN number,
318 instance IN varchar2)
319 is
320 PRAGMA AUTONOMOUS_TRANSACTION;
321 nodename varchar2(30);
322 opid number;
323 audsid number;
324 dbname varchar2(8);
325 dbdomain varchar2(120);
326 dbinstname varchar2(16);
327 insnum number;
328 begin
329 select instance_number
330 into insnum
331 from v$instance;
332
333 select instance_name
334 into dbinstname
335 from v$instance;
336
337 select value
338 into dbname
339 from v$parameter
340 where name = 'db_name';
341
342 select value
343 into dbdomain
344 from v$parameter
345 where name = 'db_domain';
346
347 select userenv('SESSIONID')
348 into audsid
349 from dual;
350
351 select p.pid
352 into opid
353 from v$process p, v$session s
354 where s.audsid = userenv('SESSIONID')
355 and p.addr = s.paddr;
356
357 select node_name
358 into nodename
359 from fnd_concurrent_processes
360 where concurrent_process_id = cpid;
361
362 update fnd_concurrent_processes
363 set oracle_process_id = opid,
364 session_id = audsid,
365 db_name = dbname,
366 db_domain = dbdomain,
367 db_instance = dbinstname,
368 sqlnet_string = instance,
369 instance_number = insnum
370 where os_process_id = ospid
371 and process_status_code = 'A'
372 and node_name = nodename;
373
374 commit;
375
376 exception
377 when others then
378 rollback;
379
380 end register_fndsm_db;
381
382 procedure insert_service_fcp( cmpid IN number,
383 qapid IN number,
384 qid IN number,
385 mgrusrid IN number,
386 mgrtype IN varchar2,
387 node IN varchar2)
388 is
389 PRAGMA AUTONOMOUS_TRANSACTION;
390 begin
391 INSERT INTO FND_CONCURRENT_PROCESSES
392 (CONCURRENT_PROCESS_ID, ORACLE_PROCESS_ID,
393 QUEUE_APPLICATION_ID, CONCURRENT_QUEUE_ID,
394 OS_PROCESS_ID, SESSION_ID,
395 Creation_Date, Created_By,
396 LAST_UPDATE_DATE, LAST_UPDATED_BY,
397 PROCESS_START_DATE, PROCESS_STATUS_CODE,
398 MANAGER_TYPE, NODE_NAME,
399 Lk_Handle)
400 VALUES
401 (cmpid, '999999',
402 qapid, qid,
403 '999999', '999999',
404 Sysdate, mgrusrid,
405 SYSDATE, mgrusrid,
406 SYSDATE, 'Z',
407 mgrtype, upper(node),
408 'SERVICE');
409
410 commit;
411
412 exception
413 when others then
414 rollback;
415 raise;
416
417 end insert_service_fcp;
418
419 end fnd_cp_fndsm;