Tuesday, October 23, 2007

How to determine if you are on the latest Autoconfig related patches

Print this post

This applies to Applications Version: 11.5.1 to 11.5.10

Solution

Please run below queries in SQLPLUS connected as APPS user:

SET head off Lines 120 pages 100
col n_patch format A65
col bug_number format A10
col patch_name format A10
spool LACF_ptch_level.txt
select ' LACF ' FROM dual;
/
select bug_number, decode(bug_number,
'2488995' ,'11i.ADX.A'
,'2682177' ,'11i.ADX.B'
,'2682863' ,'11i.TXK-C'
,'2757379' ,'11i.TXK-D'
,'2902755' ,'11i.TXK-E'
,'3002409' ,'11i.ADX.C'
,'3104607' ,'11i.TXK-F'
,'3219567' ,'11i.TXK-B'
,'3239694' ,'11i.TXK-G'
,'3271975' ,'11i.ADX.E'
,'3416234' ,'11i.TXK-H'
,'3453499' ,'11i.ADX.F'
,'3594604' ,'11i.TXK-I'
,'3817226' ,'11i.ADX.E.1'
,'3950067' ,'11i.TXK-J'
,'4104924' ,'11i.TXK-K'
,'4367673' ,'11i.TXK-J.1'
,'4717668' ,'11i.TXK-M'
,'5035661' ,'11i.One_off'
,'5107107' ,'11i.TXK-N ROLLUP PATCH (AUG 2'
,'5225940' ,'11i.POST ADX.F'
,'5456078' ,'11i.One_off_a'
,'5473858' ,'11i.ATG_PF.H RUP5'
,'5478710' ,'11i.TXK-O'
,'5759055' ,'11i.TXK-P'
,'5985992' ,'11i.TXK-Q'
) n_patch, last_update_date
FROM ad_bugs
WHERE bug_number IN ( '2488995' , '2682177' , '2682863' , '2757379' , '2902755' , '3002409' , '3104607' ,

'3219567' , '3239694' , '3271975' , '3416234' , '3453499' , '3594604' , '3817226' , '3950067' , '4104924' ,

'4367673' , '4717668' , '5035661' , '5107107' , '5225940' , '5456078' , '5473858' , '5478710' , '5759055' , '5985992' );

====================================================================

FOR MULTI NODE INSTANCES

set serveroutput on size 100000
DECLARE
TYPE p_patch_array_type is varray(100) of varchar2(10);
TYPE a_abstract_array_type is varray(100) of varchar2(60);
p_patchlist p_patch_array_type;
a_abstract a_abstract_array_type;
p_appltop_name VARCHAR2(50);
p_patch_status VARCHAR2(15);
p_appl_top_id NUMBER;
CURSOR alist_cursor IS
SELECT appl_top_id, name
FROM ad_appl_tops;
procedure println(msg in varchar2)
IS
BEGIN
dbms_output.put_line(msg);
END;
BEGIN
open alist_cursor;
p_patchlist := p_patch_array_type( '2488995'
,'2682177'
,'2682863'
,'2757379'
,'2902755'
,'3002409'
,'3104607'
,'3219567'
,'3239694'
,'3271975'
,'3416234'
,'3453499'
,'3594604'
,'3817226'
,'3950067'
,'4104924'
,'4367673'
,'4717668'
,'5035661'
,'5107107'
,'5225940'
,'5456078'
,'5473858'
,'5478710'
,'5759055'
,'5985992'
);
a_abstract := a_abstract_array_type( '11i.ADX.A'
,'11i.ADX.B'
,'11i.TXK-C'
,'11i.TXK-D'
,'11i.TXK-E'
,'11i.ADX.C'
,'11i.TXK-F'
,'11i.TXK-B'
,'11i.TXK-G'
,'11i.ADX.E'
,'11i.TXK-H'
,'11i.ADX.F'
,'11i.TXK-I'
,'11i.ADX.E.1'
,'11i.TXK-J'
,'11i.TXK-K'
,'11i.TXK-J.1'
,'11i.TXK-M'
,'11i.One_off'
,'11i.TXK-N ROLLUP PATCH (AUG 2'
,'11i.POST ADX.F'
,'11i.One_off_a'
,'11i.ATG_PF.H RUP5'
,'11i.TXK-O'
,'11i.TXK-P'
,'11i.TXK-Q'
);
LOOP
FETCH alist_cursor INTO p_appl_top_id, p_appltop_name;
EXIT WHEN alist_cursor%NOTFOUND;
IF p_appltop_name NOT IN ('GLOBAL','*PRESEEDED*')
THEN
println(p_appltop_name || ':');
for i in 1..p_patchlist.count
LOOP
p_patch_status := ad_patch.is_patch_applied('11i', p_appl_top_id, p_patchlist(i));
println('..Patch ' || a_abstract(i)||' '||p_patchlist(i)||' was '||p_patch_status);
END LOOP;
END IF;
println('.');
END LOOP;
close alist_cursor;
END;
/

No comments: