Hurriyet

23 Eylül 2013 Pazartesi

Oracle E-Business Suite: Profil Değerlerini Set Eden Sql

Geçenlerde Oracle E-Business Suite'de yaşadığım bir problemden dolayı Application'a bağlanamadım. Bu problemin sorunu yaşamadan önceki yaptığım profil ayarlarıyla ilgili olduğunu düşündüm. Nitekim haklıymışım ama bunu çözene kadar ecel terleri döktüm. Size önerim profile değerlerini test ortamlarda mutlaka test ederek uygulayın. Profil değerlerinin sisteme etkisi çok büyük.

Aşağıdaki sql ile uygulamada kayıtlı bütün profil değerlerini bulabiliriz. Bu sayede eski değiştirdiğim profili ve değerini bulabildim. Bu script'in genel olarak kullanışlı olduğunu düşünüyorum çünkü bu sayede sisteme yüklenen ve kontrol edilmesi istenen profiller ve değerleri kolayca bulunabilinirler.

Script'de istenen başka değerleri sonuçları kısarak aramak için aşağıda comment'li olan yerlerde bazı kısımların commentlerini  ihtiyacınıza göre kaldırabilirsiniz.


 select p.profile_option_name SHORT_NAME, n.user_profile_option_name NAME,  
 decode(v.level_id, 10001, 'Site', 10002, 'Application',   
 10003, 'Responsibility', 10004, 'User', 10005, 'Server',   
 10007, 'SERVRESP', 'UnDef') LEVEL_SET,   
 decode(to_char(v.level_id), '10001', '',   
 '10002', app.application_short_name,   
 '10003', rsp.responsibility_key,  
 '10005', svr.node_name,  
 '10006', org.name,  
 '10004', usr.user_name,  
 '10007', 'Serv/resp',  
 'UnDef') "CONTEXT",  
 v.profile_option_value VALUE  
 from fnd_profile_options p,  
 fnd_profile_option_values v,  
 fnd_profile_options_tl n,  
 fnd_user usr,  
 fnd_application app,  
 fnd_responsibility rsp,  
 fnd_nodes svr,  
 hr_operating_units org  
 where p.profile_option_id = v.profile_option_id (+)  
 and p.profile_option_name = n.profile_option_name  
 and upper(n.user_profile_option_name) like upper('%&profile_name%')  
 and usr.user_id (+) = v.level_value  
 and rsp.application_id (+) = v.level_value_application_id  
 and rsp.responsibility_id (+) = v.level_value  
 and app.application_id (+) = v.level_value  
 and svr.node_id (+) = v.level_value  
 and org.organization_id (+) = v.level_value  
   
 -- Buradaki ayarda eğer profil değerlerini biliyorsak tırnak içerisine   
 -- istediğimiz değeri atayabiliriz.  
 -- and v.profile_option_value=' '  
   
   
 -- Hangi level'da olduğunu da ayarlayabilmek için gereklidir.  
 -- Eğer aradığımız profilin hangi level için set edildiğini biliyorsak buradan   
 -- o level comment'ini kaldırırız.  
 --and v.level_id='10001' -- Site  
 --and v.level_id='10002' -- Application  
 --and v.level_id='10003' -- Responsibility   
 --and v.level_id='10004' -- User  
 --and v.level_id='10005' -- Server  
 order by short_name, level_set;  


Değerleri bulduktan sonra sıra o profili yeni değerinden daha küçük bir değere geri döndürmeye gelmişti. Bunun için de aşağıdaki scripti kullandım.  Bu script sayesinde OAM dashboard'una girmeden işimi halledebildim. Aşağıdaki script ile ayrıca klon alımı gibi durumlarda hızlıca kurumsal değişiklikler yapılabilinir.

 DECLARE  
 stat boolean;  
 BEGIN  
 dbms_output.disable;  
 dbms_output.enable(100000);  
 stat := FND_PROFILE.SAVE('profil_adı', 'profil_degeri', 'seviyesi');  
 IF stat THEN  
 dbms_output.put_line( 'Stat = profile guncellendi' );  
 ELSE  
 dbms_output.put_line( 'Stat = HATA - profile guncellenmedi' );  
 END IF;  
 commit;  
 END;  
 /  

Örnek Kullanım:

 DECLARE  
 stat boolean;  
 BEGIN  
 dbms_output.disable;  
 dbms_output.enable(100000);  
 stat := FND_PROFILE.SAVE('GL_DEBUG_MODE', 'No', 'SITE');  
 IF stat THEN  
 dbms_output.put_line( 'Stat =  profile guncellendi' );  
 ELSE  
 dbms_output.put_line( 'Stat = HATA - profile guncellenmedi' );  
 END IF;  
 commit;  
 END;  
 /  


Hiç yorum yok:

Yorum Gönder