Hurriyet

31 Ekim 2013 Perşembe

Oracle E-Business Suite: AD Controller Nedir? - Ne İşe Yarar? - Adctrl

Application Dba araçları (adpatch,adadmin,autoconfig) çalışırken, bu araçlar yapacakları her işlem için "worker" dedikleri bir process oluştururlar. Eğer bu worker'lardan herhangi birisi kapanırsa bunların kapandığına  dair manager'a haber vermek, bunları tekrardan çalıştırmak için adctrl komutunu çalıştırırız. Bu komut ile karşımıza bazı seçenekler çıkar. Ad controller ile karşımıza çıkan seçenekler aşağıdaki gibidir.

Adcontroller'ın loglarını $APPL_TOP/admin/$SID/log klasörü altında bulabiliriz. Bu dosya alıtnda adcontroller tarafından gözelenen worker'ların ne yaptıklarıyla ilgili loglar tutulmaktadır. Adworker'ların işleri güncellendikçe buradaki loglara yazılırlar.
















Show Worker Status Ekranı:

1. seçenek seçildiğinde çalışan worker'lar ve bunların durumları gösterilir. Bu worker'lar failed olabilirler. 1. seçenek sayesinde patch'in ne durumda olduğunu görebiliriz. Eğer patch normalden uzun sürüyorsa yukarıda belirttiğimiz gibi $APPL_TOP/admin/$SID/log klasöründen çalışan worker'ların loglarına bakarız.Eğer burada timeout ya da takılma gibi bir sorundan bahsediliyorsa bu durumda worker'ımızı restart ederiz.

Tell Worker To Restart a Failed Job Ekranı:

2. seçenek seçildiğinde 1. ekranda görüp de fail etmiş bir job'ı tekrar çalıştırabiliriz. O fail eden job'ın numarasına göre burada fail etmiş worker olarak tekrar çalıştırabiliriz.

Tell Worker To Quit Ekranı:

3. seçenek ile herhangi bir worker kapatılabilir. Eğer birden fazla worker aynı işle uğraşıyorsa patch'te kilitlenmeler olabilir. Bu oluşan durumu engellemek için bazı worker'ları çıkmaya zorlayabiliriz.

Restart A Worker On The Current Machine:

Bu seçenekte de zaten çalışan, durumu "Running" olarak gözüken bir worker'ı tekrar çalıştırmaya zorlayabiliriz.

Ad Controller Interactive Olarak Nasıl Çalıştırılır?

Ad controller çalıştırmak için ilk önce $APPL_TOP/$APPLFENV ortam dosyasını çalıştırıp ardından adctrl komutunu çalıştırırız.

Adctrl'daki Gizli Opsiyon - Menu'deki Gizli 8.Seçenek:

Failed olan Worker'ları atlayıp sonradan tekrar çalıştırmak için konulmuş 8. opsiyon bulunmaktadır.
Bunun gizlenmesinin nedeni Oracle'ın çalışmayan Worker Log'larının incelenmesini ve düzeltilmesini sonradan da tekrardan çalıştırılmasını istemesinden dolayıdır. Eğer hızlıca bu konu geçilirse o zaman sorunun ana kaynağı öğrenilemez. Bu amaçlarla gizlidir. Oracle Support tarafından da önerilmedikçe kullanılması tavsiye edilmez.

Oracle E-Business Suite: AD Job Timing Report Nedir? - Ne İşe Yarar?

AD Job Timing raporu Autopatch(adpatch)  veya AD Administration(adadmin) tool'ları çalıştırıldığında otomatik olarak çalıştırılır. Bu rapor içerisinde çalıştırılan process'lerle ilgili bilgiler, session'la ilgili istatistikler depolanır. Ayrıca çalıştırılan porgramların zamanla ilgili istatistikleri de kaydedilir. Bu istatistikler $APPL_TOP/admin/(SID)/out klasörü altında "adt.lst" dosyası içerisinde kaydedilir. 


AD Job Timing Raporu Nasıl Çalıştırılır?

Bu rapor çalıştırılmadan önce ortam parametreleri dosyası çalıştırılır. "$APPL_TOP/$APPLFENV." Bu komut çalıştırıldıktan sonra sqlplus ile veritabanına bağlanıp "$AD_TOP/admin/sql/adtimrpt.sql" scriptini çalıştırırız ve çalıştırırken de 2 tane parametre veririz.

sqlplus apps/apps @$AD_TOP/admin/sql/adtimrpt.sql \ (session id) (output file)



Oracle E-Business Suite: Parametreli PL\SQL Concurrent Program Örneği - PL\SQL Concurrent Program Example With Parameters

PL\SQL concurrent programı yaratmak için ilk önce veritabanına girip pl\sql prosedürümüzü yaratırız. Bu örneğimiz için deneme_berke1 adında bir prosedür yaratacağız. Bu prosedür veritabanında zamanı sorgulayıp sonrasında parametreyi alıp scott şeması altındaki deneme1 tablosunu belirli değerlerle doldurmaktadır.

 procedure deneme_berke1  
 (errbuf out NOCOPY varchar2, retcode out NOCOPY varchar2,app_name in varchar2)   
 is  
 x date;  
 z varchar2(100);  
 begin   
 select sysdate into x from dual;  
 dbms_output.put_line(x);  
 dbms_output.put_line(app_name);  
 insert into scott.deneme1 values(app_name,'FAILURE',x);  
 END deneme_berke1;  

Bu işlemi yaparken E-Business Suite Concurrent programlarına özel 2 tane parametre ekleriz. Bunlar eklenmezse bu hata oluşur.

Bu 2 parametreyi ekledikten sonra programımızda kullanacağımız parametreyi de ekleyip prosedürümüzü derleriz.

Prosedürümüz tamamlanınca concurrent program oluşturma safhasına geçeriz.

Concurrent Program Oluşturulması:

Concurrent Program oluşturmak için " System Administrator>Concurrent:Program>Executables " ekranına gideriz. Ekranda pl/sql program adını gireriz. Execution Method olarak "PL\SQL Stored Procedure" seçilir.


Concurrent Program executable'ını yarattıktan sonra concurrent program'ı define ederiz. Bunun için " System Administrator>Concurrent:Program>Define " seçeneğine gireriz.



Concurrent Program'ımızı yarattıktan sonra bu concurrent'ı çalıştırmak için "System Administrator>Security:Responsibility>Request" formuna girilip concurrent'ımızı gerekli sorumluluk'un içerisine tanımlarız.




Bu tanımlamaları yaptıktan sonra concurrent programımızı system administrator sorumluluğundaki request'lerden çalıştırabiliriz.

Not:  Buradaki concurrent program örneği aşağıdaki yazıda tekrar kullanılmıştır. "Request Set Oluşturulması"

Oracle E-Business Suite: Patch Impact Analysis - Patch'lerin Uygulanmasının Sonuçları - Etkilerinin Analizi

Oracle DBA'lerinin en genel işleri arasında veritabanı ortamlarına patch'lerin geçilmesi yer almaktadır. Bu geçilen patch'lerin etkilerinin analiz edilmesi, herhangi bir sorun durumunda hangi dosyaların etkilendiğinin görülmesi çok önemlidir. Bunun için aşağıdaki sorguyu kullanabiliriz.

 select f.bug_number "BUG_NBR",  
 a.filename "FILE_NAME",  
 substr(c.version,1,20) "PATCH_VERSION",  
 substr(d.version,1,20) "SITE_VERSION",  
 b.executed_flag,  
 b.creation_date "PATCH_DATE"  
 from  
 ad_files a,  
 ad_patch_run_bug_actions b,  
 ad_file_versions c,  
 ad_file_versions d,  
 ad_patch_run_bugs e,  
 ad_bugs f  
 where a.file_id=b.file_id  
 and c.file_version_id=b.patch_file_version_id  
 and d.file_version_id=b.onsite_file_version_id  
 and b.executed_flag = 'Y'  
 and e.bug_id=f.bug_id  
 and e.patch_run_bug_id=b.patch_run_bug_id  
 and f.bug_number='&Patch_number'  
 order by b.creation_date desc;  

Bu sorguda bizden patch numarası istenir. Bunun sonucunda bize etkilenen dosyalar gösterilir.

Oracle E-Business Suite Console'dan Patch Impact Analysis Nasıl Yapılır?

Bu işlem için Oracle Application Manager'a bağlanılır. Oradan "System Administrator" sorumluluğuna tıklayıp karşımıza çıkan ekranda "Site Map">"Maintenance">"Patch Wizard" seçeneklerine tıklayıp "Recommend Patches" işine tıklarız. Buradan da araştırdığımız patch numarasını girip araştırma "Patch Impact Analysis" yapabiliriz.





30 Ekim 2013 Çarşamba

Oracle E-Business Suite: Error - "Concurrent Requests'de Request'lerin Inactive - Nomanager" Gösterilmesi

Concurrent Request Manager'da Developer'lardan gelen bir çağrı üzerine kontrol ettiğim bir request'in "Inactive - Nomanager" olarak gözüktüğünü fark ettim. İlk aklıma gelen düşünce concurrent request'in atandığı bellirli bir concurrent manager olabilirdi. O yüzden o concurrent manager'ı bulup, sonra o concurrent manager'ın ayakta olup olmadığını kontrol ettim. 

Bunun için "adapcctl.sh status" komutunu girdim ve ICM (Internal Concurrent Manager'ın) açık olup olmadığına baktım.



Açık olduğunu gördükten sonra Concurrent Manager'ı kapattım ve cmclean.sql dosyasını çalıştırdım ve tekrar açtım. 

Cmclean.sql dosyasını aşağıdaki path'de bulabilirsiniz.

"/orappl/(SID)/apps/apps_st/appl/ad/12.0.0/admin/template/install/template/db/adcmclean.sql"

Yukarıda takip ettiğim adımların sonucunda sorunun çözüldüğünü gördüm.

25 Ekim 2013 Cuma

Oracle E-Business Suite: Patch'ler Nasıl Merge Edilir? - Patch Merge Etmek

AD Merge Patch aracıyla(admgrpch) birden fazla application patch'i tek bir patch haline getirilir. $AD_TOP/bin altında bulunur.

-Patch'leri merge etmeden önce dikkatlice okumak gerekir. Patch'lerin içindeki readme dosyaları dikkatlice incelenerek içinde özel talimatlar olup olmadığına bakılır. Eğer varsa o patch merge edilmez. Elle kendimizin patch geçmesi gerekir.

-Merge edilecek patch'ler için bir klasör oluşturulur.

-Patch'lerin zip dosyaları oluşturduğumuz klasör içerisine konulur. (Zip dosyalarının açılması)

-Patch'ler unzip edildikten sonra AD Merge Patch komutu çalıştırılır.

Örnek kullanım:

admrgpch patch'lerin_unzip_edildiği_klasör merge_patch'ın_yaratılacagı_yer \ -merged_name merge'lü_patch'in_ismi

-Patch merge edildikten sonra herhangi bir sorun ihtimaline karşı log dosyası kontrol edilir.(admrgpch.log)

-Sonrasında patch'imiz normal bir şekilde apply edilir.


Oracle E-Business Suite: Application Dba(AD) Araçları - AD Tools

Oracle Applications yönetim araçları olarak "ad" kısaltması ile başlayan birden fazla araç vardır. Bu araçlar ile uygulamaları terminalden yönetebiliriz. Bu araçlar sayesinde kurulum, upgrade, update, patch ve maintenance gibi işlemleri gerçeleştirebiliriz.

Ana olarak kullanılan Application Dba(AD) araçları AD Administration(adadmin), AutoUpgrade(adaimgr), AutoPatch(adpatch) 'dir. Bunlar arasında birbirleriyle iletişim olabilir. Bir araç diğer bir aracı çağırabilir.

Özet olarak bulunan programlar aşağıdaki gibidir:

-Adadmin: AD Administration aracı ile Oracle Applications üzerinde maintenance işlemlerini gerçekleştiririz.

-Adpatch: AutoPatch ile patch'ler uygulanır.

-Adaimgr: AutoUpgrade, Oracle Applications upgrade aracıdır. Son versiyona yükseltir.

-Adctrl: AD Controller ile AutoUpgrade, AD Administration veya AutoPatch uygulamalarının "worker"'ları izlenir. Eğer bir programın worker'ları bozulursa bunları tekrar çalıştırıp, programa haber verir.

-Adutconf.sql: AD Configuration ile Oracle Application uygulamaları hakkında bilgi edinebiliriz. Örnek olarak modüllerin versiyonları,durumları gibi bilgileri bu sql'i çalıştırarak edinebiliriz. - (Adutconf için buradan daha fazla bilgi edinebilirsiniz.)

-Adident: Dosyaların versiyonlarını görmek için kullanabiliriz. Bu bilgi genellikle Oracle Support tarafından kullanılır. (AD File Identification)

-Adrelink: Oracle Executable programları Oracle Server Product Library'leriyle bağlar. (Adrelink)

-Admrgpch: Birden fazla patch'i tek bir patch haline getirir. (Admrgpch)

-AutoConfig: Sistem konfigürasyon dosyalarının ayarlanmasını sağlar. (Autoconfig)

Ortamın Ayarlanması:

Herhangi Application DBA aracı kullanmadan önce ortam değişkenlerinin ayarlanması tavsiye edilir. Eğer bu ayarlar bash_profile'a veya .profile'a atanmıyorsa her açılan session'da tekrar girilmesi gerekir. (Linux Unix Ortam Bash'lerin Rolü)

Ayarların set edilmesi için applmgr kullanıcısıyla makineye bağlanılır. $APPL_TOP/APPLFENV.env dosyası çalıştırılır.

AD Araçlarının Çalıştırılması:

Yukarıda belirttiğimiz araçlar çalıştırıldığında örnek olarak adpatch,adadmin,adctrl  kullanıldığında bu programların log dosyaları yaratılır. Böylece eğer programdan "ctrl+c" denerek çıkıldığında veya program çalışması abort edildiğinde, program eğer tekrar çalışırsa eski log dosyası belirtilerek oradan tekrar çalıştırılması sağlanabilir.




Oracle E-Business Suite: Admrgpch Nedir? - Ne İşe Yarar?

AutoPatch (adpatch) uygulaması her çalıştığında bir sürü bilgi talep eder ve uygulamaya bağlanmaya çalışır. Bu bilgilerin tekrar tekrar girilmesini engellemek için bazı generic ve birleştirilmeye uygun patch'ler birleştirilerek programların uygulama süresi kısaltılabilinir.

$AD_TOP/bin altında executable olarak bulunur; ama genellikle daha önceden PATH klasörüne eklendiği için herhangi bir klasör altından çalıştırılabilinir.

Oracle E-Business Suite: Adrelink Nedir? - Ne İşe Yarar?

Adrelink uygulaması Oracle Applications'da tanımlı executable program'ları Oracle Server Product Library'leriyle tekrar bağlantısını sağlar.

Adrelink.sh'ının yaptığını yapan benzer bir araç adadmin aracının içinde yer almaktadır. Ancak bu yolla ad executable'ları bağlanamadığı için ad relink elle çalıştırılmalıdır. Eğer bir hata çıkarsa $APPL_TOP/admin/log dizini altında dosyaya kaydedilir.

Gerekirse log dosyası silinebilir. Çünkü program her çalıştığında yoksa çalışır varsa da üzerine ekler.

Çalıştırılma Syntax'ı:

 $ adrelink.sh force={y | n} []  \  
 []  

Not: Eğer Oracle Applications ürünlerinden bir tanesi relink edilecekse Concurrent Manager'lar kapatılmalıdır.

Oracle E-Business Suite: AD File Identification Nedir? - Ne İşe Yarar?

Adident ile Oracle Application'daki dosyaların versiyon ve diğer bilgilerini görebiliriz. Bu program genelde Oracle Support'tan bir sorun üzerine açtığımız SR'lar sonucunda gelen bilgi isteklerini karşılamak için kullanılır.

Kullanım Şekli:

 $ adident $AD_TOP/sql/adutconf.sql  
 adutconf.sql: 115.13 (0)  

ya da

$ adident Header $AD_TOP/sql/adutconf.sql   
 /orappl/EBSUAT/apps/apps_st/appl/ad/12.0.0/sql/adutconf.sql:  
 $Header adutconf.sql 120.0.12010000.2 2008/10/14 11:14:48 bbhumire ship $

Eğer dosyada versiyon bilgisi varsa gösterilir; yoksa hata verir.

Oracle E-Business Suite: AD Configuration Nedir? - Ne İşe Yarar?

AD Configuration aracı adutconf kısa adıyla geçer. Bu program bir sql script'idir. Oracle Uygulamaları hakkında standart bilgileri gösterir. Bu  araç ile Oracle EBS database'imizin o anlık bir snapshot'ını çıkarabiliriz. Adutconf.sql'ini çalıştırdığımızda adutconf.lst adlı bir rapor dosyası çıkar. Bunun içerisinde de:


  • Ürün Grupları
  • Lisanslı Ürünler
  • Lisanslı Ürünlerin Bilgileri
  • Kurulu Diller
  • İnit.ora Ayarları 
gibi bilgiler yer alır. 

Adutconf.sql  $AD_TOP/sql klasörü içerisinde yer alır. Çalıştırmak için aşağıdaki komutu uygulayabiliriz.

 cd $AD_TOP/sql  
 sqlplus apps/ @adutconf.sql  





9 Ekim 2013 Çarşamba

Oracle E-Business Suite: Custom Application Top Yaratılması - Custom Top Nasıl Yaratılır?

Custom Application Top bize farklı bir modül yaratacağımız zaman gerekir. Custom olarak yaratacağımız formların,programların, ayrı bir iş kolu için yaratacağımız bir modülde depolanması gerektiğinde bunlardan yaratabiliriz.


1. Öncelikle yaratacağımız custom top için dizin hiyeraşisini oluştururuz. Burada oluşturacağımız örnek modülümüzün adı "xxabc" olsun. Buna göre aşağıdaki klasörler $APPL_TOP altında yaratılır.

 cd $APPL_TOP  
 mkdir XXABC  
 mkdir XXABC/12.0.0  
 mkdir XXABC/12.0.0/admin  
 mkdir XXABC/12.0.0/admin/sql  
 mkdir XXABC/12.0.0/admin/odf  
 mkdir XXABC/12.0.0/sql  
 mkdir XXABC/12.0.0/bin  
 mkdir XXABC/12.0.0/reports  
 mkdir XXABC/12.0.0/reports/US  
 mkdir XXABC/12.0.0/forms  
 mkdir XXABC/12.0.0/forms/US  
 mkdir XXABC/12.0.0/lib  
 mkdir XXABC/12.0.0/out  
 mkdir XXABC/12.0.0/log  
 mkdir XXABC/12.0.0/help  
 mkdir XXABC/12.0.0/html  
 mkdir XXABC/12.0.0/java  
 mkdir XXABC/12.0.0/mds  
 mkdir XXABC/12.0.0/media  
 mkdir XXABC/12.0.0/mesg  
 mkdir XXABC/12.0.0/patch  

2. Bu dizinler yaratıldıktan sonra bu yeni yarattığımız modül "environment" dosyasına eklenir.

export XXABC_TOP=$APPL_TOP/XXABC/12.0.0

Eklendikten sonra $APPL_TOP/admin altında bulunan topfile.txt dosyası değiştirilir ve içine aşağıdaki örnekteki satır eklenir. Burada $APPL_TOP dizini direk olarak verilmelidir. Aşağıdaki gibi parametre olarak verilmelidir. Aşağıda sadece xxabc'den sonra hangi dizin gelmesi gerektiği gösterilmektedir. $APPL_TOP/admin/topfile.txt içine bakılırsa anlaşılabilinir.


xxabc $APPL_TOP


 vi $APPL_TOP/admin/topfile.txt  
   
 xxabc /orappl/........  

$INST_TOP/appl/admin/$CONTEXT_NAME.xml 'e  uygun giriş yapılır. Bu örneğimiz için aşağıdaki bilgiyi gireriz.


/oracle/$SID/apps/apps_st/appl/xxabc_top/12.0.0

 3. Tablespace yaratılır.

 CREATE TABLESPACE TSXXKR DATAFILE   
  '+DATA' SIZE 50M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED  
 LOGGING  
 ONLINE  
 EXTENT MANAGEMENT LOCAL AUTOALLOCATE  
 BLOCKSIZE 8K  
 SEGMENT SPACE MANAGEMENT AUTO  
 FLASHBACK ON; 

4. Kullanıcı yaratılır.

CREATE USER XXABC 
  IDENTIFIED BY XXABC 
  DEFAULT TABLESPACE TSXXABC  
  TEMPORARY TABLESPACE TEMP  
  PROFILE DEFAULT  
  ACCOUNT UNLOCK;  

Gerekli yetkiler de verilir.

 grant connect, resource to XXABC;  

5. Application'a schema'mız kaydedilir.

System Administrator sorumluluğunda Application>Register diyerek orada uygun alanlar aşağıdaki gibi doldurulur.

Application : XXABC Custom Application
Short Name : XXABC
Basepath : XXABC_TOP
Description : XXABC Custom Application

6. Oracle kullanıcımız kaydedilir.

System Administrator sorumluluğunda Security>Oracle>Datagroup seçeneğine gidilerek kullanıcımız kaydedilir.

Database User Name : XXABC
Password : XXABC
Description XXABC Custom Application User

7. En son Application tarafında Autoconfig çalıştırılır. (Autoconfig Nedir? Nasıl Çalıştırılır?)





Oracle E-Business Suite: Autoconfig Nedir? - Nasıl Çalıştırılır?

Autoconfig Nedir?

Autoconfig Oracle Applications'da konfigürasyon aracı olarak kullanılır. Ne zaman konfigürasyonda bir değişiklik yapılırsa ya da bir patch readme'sinde yazılırsa autoconfig script'i çalıştırılır. Application instance'ındaki standart değişikliklerin yapılması için kullanılan, kurulum,konfigürasyonve patch'leme işlemlerinde çalıştırılan ana araçtır.

APPL_TOP konfigürasyonları ile ayarların tutulduğu ve Application'ın çalışması ile ilgili bilgilerin barındırıldığı ana merkez "Applications Context" olarak belirtilir. Autoconfig çalıştığında Context dosyasındaki bilgileri kullanarak konfigürasyon dosyalarını oluşturur ve veritabanındaki profilleri günceller.

Autoconfig ile context dosyası değiştirilir(xml dosyası). Değiştirilen bu context dosyasıyla ilgili konfigürasyon modifikasyonuula ilgili bilgiler toplanır. Bunlar uygun konfigurasyon dosyasına yazılır ya da gerekli dosyalar yaratılır. Buna göre uygun process'ler çalıştırılır. Belirli konfigürasyon dosyalarına ek olarak httpd.conf, jserv.properties, appsweb.cfg dosyaları da konfigüre edilir. Veritabanında tutulan çeşitli ayarların değiştirilmesi mümkündür.

Applications context file'ı $INST_TOP/appl/admin/$CONTEXT_NAME.xml 'dir. Bu context file içinde
  • Database Bilgisi
  • Form ve Web Servis Bilgileri
  • Port Numaraları
  • Application Bilgileri
yer alır. 

Not: $CONTEXT_NAME=$SID_$HOSTNAME 'dir.

Database context file'ı ise $ORACLE_HOME/appsutil/$CONTEXT_NAME.xml 'dir. Database tarafında autoconfig çalıştırıldığında bu dosya değişir.

Application tarafında çalıştığında application context file'ını kullanıp konfigürasyon dosyalarını oluşturup database profillerini güncelleştirirken, database tarafında çalıştığında database context file'ını kullanır. 


Autoconfig Nasıl Çalıştırılır?

Application tarafında:  $ADMIN_SCRIPTS_HOME altında database tarafında: $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME dizinlerinde bulunur.

Not: $ADMIN_SCRIPTS_HOME=$INST_TOP/admin/scripts

Adautocfg.sh,  $AD_TOP/bin altındaki adconfig.sh'ı çağırır. O da yine $AD_TOP/bin altındaki adconfig.pl'i çağırır.

Application tarafındaki aşamalar Sırasıyla:

  1. Application kullanıcısıyla bağlanılır. (Genelde applmgr oalrak)2.
     2. $APPL_TOP/$SID_$MAKINE_ADI.env adlı environment dosyası çalışıtırılır. 

     3. Application kapatılır.
     
        ./$ADMIN_SCRIPTS_HOME/adstpall.sh apps/password

     4. $ADMIN_SCRIPTS_HOME altındaki ./adautocfg.sh çalıştırılır.

     5. Autoconfig. çalıştırıldıktan sonra bulunduğumuz klasörden afterconfig.sh çalıştırırız.

     6. Application açılır.

         $ADMIN_SCRIPTS_HOME altındaki ./adstrtall.sh çalıştırılır.


Log Dosyası:

Autoconfig'in log dosyası $INST_TOP/admin/log/$(date) dizinindedir. Bununla birlikte
$INST_TOP/admin/install altında install scriptleri $INST_TOP/admin/scripts altında control script'leri bulunur. 

Context File:

Autoconfi dosyası $INST_TOP/appl/admin/$CONTEXT_NAME.xml adlı dizindedir. 
Bu dosyada değişiklikler yapılır.

8 Ekim 2013 Salı

PL\SQL Örnekleri

Burada bana gelen bazı isteklere göre pl\sql örnekleri koyacağım.

1- PL\SQL'de tabloya veri yazdırma:

Bu örneğim için ilk olarak bir deneme tablosu yarattım.

create table scott.deneme as select * from dual;  

Sonrasında hemen tablo içerisinde var olan bilgiyi  tabloya tekrar koyan bir pl\sql kodu yazdım.


 declare
 x varchar2(10);  
   
 begin  
   
 select * into x from dual;  
 dbms_output.put_line(x);   
 insert into scott.deneme values(x);  
 end;    

Burada bir değişken yaratıp o değişkene tablomuz içindeki tek değer olan dummy tablosundaki x değerini "X" parametresine atıp o "X" parametresini de tablomun içine attım.

Sonuçları görmek için "commit" lemeyi unutmayın. Gözden kaçabilir. Insert yaptığınız için hemen sonuçlar kaydedilmemektedir.


2- PL\SQL'de bir tablodan gelen her sonucu işleyip ona göre başka bir tabloya yazmak, girmek.
Aynı zamanda  "CURSOR FOR LOOP" örneği olarak da kullanılabilinir.

Önce geçen örnekte olduğu gib tekrar bir tablo yaratırız.

create table scott.deneme1 as select * from scott.emp;

Sonra procedure'umuz yazarız.

 declare  
   
 y SCOTT.EMP%ROWTYPE;  
  cursor z is select * from scott.emp;  
 begin  
   
 for a in z   
 loop  
   
 dbms_output.put_line(a.ename);   
 insert into scott.deneme1 values(a.empno,a.ename,a.job,a.mgr,a.hiredate,a.sal,a.comm,a.deptno);  
 end loop;  
   
 end; 

Buradaki örneğimizde bize bir tablodan hem bir sürü sayıda sonuç hem de birden fazla bilgi gelmektedir. Örneğin "select * from scott.emp" için aşağıdaki sonuçlar gelmektedir.

 7369     SMITH     CLERK     7902     12/17/1980     800          20  
 7499     ALLEN     SALESMAN     7698     2/20/1981     1600     300     30  
 7521     WARD     SALESMAN     7698     2/22/1981     1250     500     30  
 7566     JONES     MANAGER     7839     4/2/1981     2975          20  
 7654     MARTIN     SALESMAN     7698     9/28/1981     1250     1400     30  
 7698     BLAKE     MANAGER     7839     5/1/1981     2850          30  
 7782     CLARK     MANAGER     7839     6/9/1981     2450          10  
 7788     SCOTT     ANALYST     7566     12/9/1982     3000          20  
 7839     KING     PRESIDENT          11/17/1981     5000          10  
 7844     TURNER     SALESMAN     7698     9/8/1981     1500     0     30  
 7876     ADAMS     CLERK     7788     1/12/1983     1100          20  
 7900     JAMES     CLERK     7698     12/3/1981     950          30  
 7902     FORD     ANALYST     7566     12/3/1981     3000          20  
 7934     MILLER     CLERK     7782     1/23/1982     1300   

Bu kadar sayıda gelen sonucu ayrı ayrı işlemek için bir for loop'una ihtiyacımız vardır. Burada bunun için bir cursor, bir de kullanacağımız rowtype tipinde değişken yaratırız. Ondan sonra cursorımıza çekeceğimiz değerlerin sorgusunu veririz.  For loop'u içinde de aldığımız her değeri tekrar tablomuzu sokarız. Yani tablonunun içindeki verileri çoğaltmış oluruz. En son olarak commit'leyip "select count(*) from scott deneme1"  'den ne kadar kere verilerimizi çoğaltmış olduğumuzu görebiliriz.

3- Bu yazımızda da tablo geri döndürmenin PLSQL de nasil yapıldığını göstereceğiz.

Oracle E-Business Suite: Error - "Function Not Available To This Responsibility. Change Responsibilities or Contact System Administrator"

Aşağıdaki hatayı bir forms ekranında help>diagnostics>custom code>personalize ekranına giderken karşılaştım. Bu sorunun 12.1.3 versiyonuna yükseltildiğinde karşılaşıldığını öğrendim.



Bu sorunun çözümü ise görece basitti. İlgili sorumluluğa "Utilities:Diagnostics" profil değerini "YES" olarak atadım ve sorun çözüldü.



7 Ekim 2013 Pazartesi

Oracle Veritabanı: Log Miner Kurulumu - Ayarlanması - Kullanılması

LogMiner archived redo logs'ların kullanılmasını, analiz edilmesini, okunmasını sağlar. Bize tarihsel olarak bir ilerleme görüntüsü verir. Bununla birlikte undo operasyonları yapmamıza sağlar ve mantıksal hatalarda yapılmaması gereken işlemlerde geri dönüşü sağlar.

LogMiner özellikle yanlışlıkların ve hataların tespit edilmesinde yararlı olur. Redo log dosyaları incelendikten ve sonuçları anlamları bir bilgiye çevrildikten sonra v$logmnr_contents tablosundan  inceleme yapabiliriz.  Kullanılan Sql'lerle birlikte bunların undo sql'leri gösterilir ve bunlardan da geri çevirme işlemi yapılabilinir.

Bundan başka LogMiner ile bir tablonun değişikliklerinin takip edilmesi,  b  ir kullanıcı tarafından yapılan değişikliklerin izlenilmesi işlemleri de yapılabilinir.

LogMiner paketi database ile birlikte gelir. "Advanced" kurulum sırasında yüklenip yüklenmemesi opsiyon olarak sorulur.

LogMiner Kullanım Amaçları:

-Bir database olayını belirlemek için.
-Kullanıcılar tarafından gerçekleştirilen işlemleri bulmak için.
-Veri değişikliğine karşı undo transaction'ları gerçekleştirme.
-Veritabanında gerçekleştirilen operasyonların audit'lenmesi.

LogMiner Konfigürasyonu ve Dictionary File'ın Yaratılması:

LogMiner var olan verileri kullanmak için bir "dictionary file" kullanır. LogMiner'ın kullandığı veriler "raw data" olduğu için bu bilgileri daha anlamlı hale getirmek için bir dictionary file gerekir. Bu da bir parametrenin aktifleştirilmesiyle olur.

 UTL_FILE_DIR=/u01/app/oracle/oradata/LogMıner

Yukarıda LogMiner için klasörümüzü belirttikten sonra aşağıda da kullanacağımız dictionary file dosyasını belirtiriz. Paketi çalıştırıp dosyamızı belirtilen klasörün altında yaratırız.

BEGIN  
  DBMS_LOGMNR_D.build (  
   dictionary_filename => 'dictfile.ora',  
   dictionary_location => '/u01/app/oracle/oradata/LogMıner');  
 END;  
 /  


LogMiner Kullanacağı Logların Belirtilmesi: 

Analiz edilecek loglar da paketin yardımıyla eklenmelidir. dbms_logmnr.new opsiyonu ile bir liste oluşturulur.

 BEGIN  
  DBMS_LOGMNR.add_logfile (  
   options   => DBMS_LOGMNR.new,  
   logfilename => '/u01/app/oracle/oradata/archive/berkeArchive00001');  
    /  

dbms_logmnr.addfile opsiyonu ile var olan listeye logfile eklenir.

 EXECUTE DBMS_LOGMNR.ADD_LOGFILE( 
 LOGFILENAME => '/u01/app/oracle/oradata/archive/berkeArchive00001', -  
 OPTIONS => dbms_logmnr.addfile);  

dbms_logmnr.removefile opsiyonu ile log dosyaları kaldırılır.

 EXECUTE DBMS_LOGMNR.ADD_LOGFILE( 
 LOGFILENAME => '/u01/app/oracle/oradata/archive/berkeArchive00001', 
 OPTIONS => dbms_logmnr.removelogfile);  

LogMiner'ı  Başlatmak:

LogMiner'ı başlatmak için birden fazla opsiyon bulunmaktadır. Belirli bir SCN numarası, zaman aralığı verilerek ya da bütün logları kullanarak  analiz yaptırabiliriz.

 BEGIN  
  -- Start using all logs  
  DBMS_LOGMNR.start_logmnr (  
   dictfilename => '/u01/app/oracle/oradata/LogMıner/dictfile.ora');  
   


SCN Aralığı:

  DBMS_LOGMNR.start_logmnr (  
   dictfilename => '/u01/app/oracle/oradata/LogMıner/dictfile.ora',  
   startscn   => 98231321,  
   endscn    => 98298845);  
 END;

Zaman Aralığı:

  DBMS_LOGMNR.start_logmnr (  
   dictfilename => '/u01/app/oracle/oradata/LogMıner/dictfile.ora',  
   starttime  => TO_DATE('01-JAN-2013 00:00:00', 'DD-MON-YYYY HH:MI:SS'),  
   endtime   => TO_DATE('01-MAR-2013 10:00:00', 'DD-MON-YYYY HH:MI:SS'));  
   


Analiz Edilen Loglarla İlgil Bilgilerin Sorgulanması:

LogMiner tarafından kullanılan başlıca tablolar aşağıdaki gibidir.


 DBA_LOGMNR_LOG       
 DBA_LOGMNR_PURGED_LOG       
 DBA_LOGMNR_SESSION       
 GV$LOGMNR_CALLBACK                Synonym for GV_$LOGMNR_CALLBACK  
 GV$LOGMNR_CONTENTS                Synonym for GV_$LOGMNR_CONTENTS  
 GV$LOGMNR_DICTIONARY                Synonym for GV_$LOGMNR_DICTIONARY  
 GV$LOGMNR_DICTIONARY_LOAD        Synonym for GV_$LOGMNR_DICTIONARY_LOAD  
 GV$LOGMNR_LATCH                    Synonym for GV_$LOGMNR_LATCH  
 GV$LOGMNR_LOGFILE                    Synonym for GV_$LOGMNR_LOGFILE  
 GV$LOGMNR_LOGS                    Synonym for GV_$LOGMNR_LOGS  
 GV$LOGMNR_PARAMETERS            Synonym for GV_$LOGMNR_PARAMETERS  
 GV$LOGMNR_PROCESS                Synonym for GV_$LOGMNR_PROCESS  
 GV$LOGMNR_REGION                    Synonym for GV_$LOGMNR_REGION  
 GV$LOGMNR_SESSION                    Synonym for GV_$LOGMNR_SESSION  
 GV$LOGMNR_STATS                    Synonym for GV_$LOGMNR_STATS  
 GV$LOGMNR_TRANSACTION            Synonym for GV_$LOGMNR_TRANSACTION  
 V$LOGMNR_CALLBACK                    Synonym for V_$LOGMNR_CALLBACK  
 V$LOGMNR_CONTENTS                Synonym for V_$LOGMNR_CONTENTS  
 V$LOGMNR_DICTIONARY                Synonym for V_$LOGMNR_DICTIONARY  
 V$LOGMNR_DICTIONARY_LOAD            Synonym for V_$LOGMNR_DICTIONARY_LOAD  
 V$LOGMNR_LATCH                    Synonym for V_$LOGMNR_LATCH  
 V$LOGMNR_LOGFILE                    Synonym for V_$LOGMNR_LOGFILE  
 V$LOGMNR_LOGS                        Synonym for V_$LOGMNR_LOGS  
 V$LOGMNR_PARAMETERS                Synonym for V_$LOGMNR_PARAMETERS  
 V$LOGMNR_PROCESS                    Synonym for V_$LOGMNR_PROCESS  
 V$LOGMNR_REGION                    Synonym for V_$LOGMNR_REGION  
 V$LOGMNR_SESSION                    Synonym for V_$LOGMNR_SESSION  
 V$LOGMNR_STATS                    Synonym for V_$LOGMNR_STATS  
 V$LOGMNR_TRANSACTION                Synonym for V_$LOGMNR_TRANSACTION 


Bunlardan:

  •  v$logmnr_dictionary: kullanılan dictionary dosyasını gösterir.
  • v$logmnr_parameters: Logminer için geçerli parametreler.
  • v$logmnr_logs: kullanılan logları gösterir.  Bu loglara göre istediğimiz ayrımları, istediğimiz zaman aralıklarını yapabiliriz.
  • v$logmnr_contents: incelenen log dosyalarının içeriklerini gösterir.
Aşağıdaki sorguyla hem gönderilen sorguyu hem de bunun redosunu görebiliriz. 


 SELECT scn, operation, sql_redo, sql_undo  
 FROM  v$logmnr_contents;  


LogMiner'ın kapatılması:

LogMiner'ın kullanımı bittikten sonra kapatılması gerekmektedir.


 BEGIN  
  DBMS_LOGMNR.end_logmnr;  
 END;  
 /


Hangi tabloların ne zaman, ne kadar erişildiğini de LogMiner'ın v$logmnr_contents tablosunu sorgulayarak bulabiliriz.

 SELECT seg_owner, seg_name, count(*) AS Hits FROM  
 v$logmnr_contents WHERE seg_name NOT LIKE '%$' GROUP BY  
 seg_owner, seg_name;  

Referans:
http://www.oracle-base.com/articles/8i/logminer.php
http://www.oracle-class.com/?page_id=589
http://docs.oracle.com/cd/B19306_01/server.102/b14215/logminer.htm
http://www.oracleflash.com/24/How-to-read-or-analyze-redo-log-files-using-LogMiner.html
http://psoug.org/reference/dbms_logmnr.html
http://www.oracle-base.com/articles/11g/flashback-and-logminer-enhancements-11gr1.php
http://docs.oracle.com/cd/A87860_01/doc/server.817/a76956/archredo.htm#12680
http://turkceoracle.com/2011/05/log_miner-kurulumu-konfigurasyonu-ve-kullanimi.html

















6 Ekim 2013 Pazar

Linux / Unix : Redhat Hostname Değişimi Nasıl Yapılır? - Hostname Değiştirmek

Redhat işletim sistemi /etc/sysconfig/network altındaki bilgileri okuyarak hostnam bilgisini belirtir. Bu kayıt işlemi her seferinde /etc/rc.d/rc.sysinit script'i ile yapılır.

/etc/sysconfig/network dosyasının içinde aşağıdaki gibi örnek bilgiler bulunur.

 NETWORKING=yes  
 HOSTNAME=”plain.domainname.com”  
 GATEWAY=”192.168.0.1?  
 GATEWAYDEV=”eth0?  
 FORWARD_IPV4=”yes”  

Hostname'in değiştirilmesi için root olarak buradaki dosyadaki "hostname" parametresinin değiştirilmesi gerekir.

 su - root  
 vi /etc/sysconfig/network  

Geçici olarak değiştirmek istiyorsak root olarak hostname komutunu kullanabiliriz.

hostname berke  

Yukarıdaki şekilde kullanırsak hostname'in adını geçici olarak değiştirmiş oluruz. Halbuki /etc/sysconfig/network dosyasını root olarak değiştirirsek kalıcı olarak "hostname"'i değiştirmiş oluruz.



Oracle Veritabanı: Rman - Backup Sets Nedir?

Backıp set'ler rman'e özel bir bir logical object'dir. Rman tarafından işlenilebilen bu backup türünde backup piece'leri bulunur.

Backup set'ler backup piece'lerin toplamından oluşur. Bu backup piece'ler backup komutu içinde yer alan datafile'ların, controlfile'ların ya da diğer database object'lerinin backup'larından oluşur.

Veritabanında datafile'ların, control file'ların, archived redo logs'larının ve server parameter file'ın backup'ları alınabilinir. Ayrıca diğer backup set'lerin de backup'ları alınabilinir.

-- Genel Backup'ları Alınan Dosyalar
 BACKUP DATABASE;  
 BACKUP TABLESPACE users, tools;  
 BACKUP (SPFILE) (CURRENT CONTROL FILE);  
 BACKUP BACKUPSET 12;  
 BACKUP DATAFILECOPY '/tmp/system01.dbf';

Datafile'ların backup'ları alınırken, veritabanı open veya mount mod'da olmalıdır. Eğer database "archivelog" mod'da ise database'in açık veya kapalı olabilir. "Noarchivelog" modunda ise veritabanının düzgün bir şekilde kapanmış olması gerekir.

Backup Set Compression:

Backup Set'lerin ana özelliğidir. Boş olan data block'larının backup'lanmamasıdır. Image copy'lerde backup set'lerin tersine bütün datafile block'ları bulunur. Bu yüzden de daha büyüktür. Backup set'lerde image copy'lere göre farklı olarak sadece dolu bloklar alınır.


Oracle E-Business Suite: FNDLOAD Nedir? - Örnekleri

Fndload Ne İşe Yarar?

Fndload bizim ebs makinaları arasında senkronizasyonumuzu sağlar. Fndload ile ana yapılar yani alert'ler, flexfield'lar, form'lar gibi bir sürü farklı bilgi  diğer uygulamalara aktarılır. Geliştirme ortamlarından production ortamlarına da geçişler geliştirmelerin veya değişikliklerin fndload sonucunda oluşan ldt dosyalarının taşınması ile olur.

Genel Kullanım Amaçları: 
- Kurulum'larda
- Upgrade'lerde
- Maintenance (Bakım) Çalışmalarında

Fndload aslında bir concurrent programdır. Oracle Application verilerini belirli bir formatta dosyaya yazar. Bu dosya yazmadan önce hangi verileri nasıl yazacağını, hangi verileri alıp almayacağıyla ilgili bir ayar dosyası okur. Bu konfigürasyon dosyasının adı lct'dir.  

Genel olarak Fndload bir uygulama biriminden istenilen bilgileri indirebilir. Bu bilgiler text dosyasına yazılıp başka bir makinaya upload edilebilinir. Fndload ile hem upload hem de download yapılabilinir.

Fndload ile Yapılabilinecekler:

 · Concurrent Programs, Executables   
 · Request Groups, Request Sets   
 · Profile Options   
 · Key and Descriptive Flexfields   
 · Menus and Responsibilities   
 · Forms and Form Functions/Personalizations   
 · Attachments   
 · Messages   
 · Value Sets and Values   
 · Lookup Types   
 · User Responsibilities   
 · Printer Definitions   
 · FND Dictionary   
 · Help Configuration   
 · Document Sequences   
 · Alerts   
 · Concurrent Manager Schedules   

Fndload hem concurrent program olarak hem de komut satırından çalıştırılabilinir.

Fndload Syntax'ı:

Fndload apps/sifresi@SID 0 Y mode configurasyon_dosyası  output_dosyası

-Kullanıcı adı mutlaka apps olmalıdır yoksa ORA-6550 hatası alınır.
-lct dosyaları modifiye edilmemelidir. Çünkü hem bu değişiklikler upload veya download sırasında sorun çıkartabilir hem de desteklenmemektedir. 
-mode: Download veya Upload

Concurrent Program'lar için Fndload download örneği:

FNDLOAD apps/pwd@seeddb 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct xxaoa_file_name.ldt PROGRAM APPLICATION_SHORT_NAME="prod" CONCURRENT_PROGRAM_NAME="concurrent name" 

Concurrent Program'lar için Fndload upload örneği:

FNDLOAD apps/pwd 0 Y UPLOAD ${FND_TOP}/patch/115/import/afcpprog.lct myfile.ldt - CUSTOM_MODE=FORCE




4 Ekim 2013 Cuma

Oracle Veritabanı: ORAPWD - Oracle Password File Komutu

Orapwd komutu Oracle Database için bir password yaratma aracıdır.

Orapwd komutunu çalıştırmadan önce remote_login_passwordfile parametresi set edilmelidir.

Remote_login_passwordfile parametresi ile Oracle şifre dosyasına bakılıp bakılmayacağını ve kaç tane database'in password file'ı kullanabileceğini bilir.

Değerler:


  • None: Oracle şifre dosyalarını görmezden gelir. Kullanıcılar işletim sistemi tarafından onaylanmalıdırlar.
  • Shared:  Birden fazla database password dosyasını kullanabilir ama tek tanınan kullanıcı sys'dir.
  • Exclusive: Password dosyası sadece bir database tarafından kullanılabilinir. Password dosyası sys'den başka kullanıcıları da tutabilir.


Bu parametre kullanılır hale getirilmezse uzaktaki bir makinadan sysdba olarak bağlanılamaz.

Bir Kullanıcı Orapwd Dosyasına Nasıl Atanır?

Orapwd dosyasına kullanıcının eklenmesi için sysdba yetkisi verilmesi gerekir.

GRANT SYSDBA TO Berke;

Kaldırmak için

REVOKE SYSDBA FROM Berke;

Password dosyasındaki kayıtlı kullanıcılar kimlerdir?

select * from v$pwfile_users;  


Orapwd nasıl kullanılır?


orapwd file=orapwSID password=oracle entries=5 force=y

Kullanım syntax'ı yukarıdaki gibidir.

File argümanı; şifre dosyasına isim atamak için kullanılır.
Entries argümanı opsiyonel olarak kaç tane kullanıcı hesabına yer ayrılacağını gösterir. Yani bir şifre dosyasında kaç tane kullanıcının şifresi tutulacağı belirtilir.
Force argümanı eğer "y" ise varsa var olan şifre dosyasının silinip tekrar yaratılmasını sağlar.
Ignorecase argümanı da opsiyonel olup eğer değeri "y" ise şifrelerin büyük veya küçük harflerle yazılması önemli olmaz.





Oracle Veritabanı: DB_UNIQUE_NAME Parametresinin Değiştirilmesi


DB_UNIQUE_NAME Değiştirme Adımları:
  1. Sqlplus'a bağlanılır. Buradan parametremiz değiştirilir. Bu değişiklik spfile'ı etkileyecek şekilde olur.
 >sqlplus "/ as sysdba"  
 SQL> SHOW PARAMETER db_unique_name;  
 SQL> ALTER SYSTEM SET db_unique_name=Berke SCOPE=spfile;      

    2. Database'imiz açılıp kapatılır.

 SQL> shutdown immediate;  
 SQL> startup;  

Not: Database Unique Name parametresi değişitnce aynı zamanda diagnostic destination ve archivelog dizinleri değişir.

 Diagnostic_dest/diag/rdbms///trace/alert.log  
 Db_recovery_file_dest//archivelog/  


Parametrenin değiştiğinden emin olmak için SQL olarak aşağıdaki sorguyu koyabiliriz.

SQL>show parameter unique_name ; 
En son olarak da parametre dosyamızı yedekleriz. 

SQL>create pfile from spfile;  



Linux / Unix Komutu : Diff Komutu Kullanımı - Dosyaların Karşılaştırılması ve Aradaki Farkların Bulunması

Diff komutu ile 2 dosya birbirleriyle karşılaştırılırlar. En fazla 3 dosya karşılaştırılabilinir. Bu karşılaştırma sonucunda farklı olan satırları belirtir. Birbirleriyle karşılaştırıp farklılıkları gösterir.

En çok ne için kullanılabilinir?

1- Dosyalardeki değişiklikleri kontrol etmek için.

2- Konfigürasyon dosyalarındaki farklara bakmak için.

Nasıl Kullanılır?

Kullanımı çok basittir. diff komutu yanına 2 tane parametre alır dosya adı olarak.

 diff abc abc1  

Buradaki kullanımda abc ve abc1'i 2 farklı dosya adı olarak vermekteyiz.

En çok kullanılan argümanıysa -u'dur. Bu argüman ile de en son ne zaman değişiklik yapıldığı da görülür.

 >diff -u abc abc1   
 --- abc 2013-10-04 11:11:54.000000000 +0300  
 +++ abc1    2013-10-04 11:15:56.000000000 +0300  
 @@ -1,6 +1,6 @@  
  a  
 - a  
 - a  
 + ax  
 + axd  
  a  
  a  
  a  


abc1 dosyası en yakın tarihte değiştirilmiş iken  1 den 6 ya kadar olan satırlarda sadece 2. ve 3. satırlarda farklılık bulunmaktadır.


Oracle Veritabanı: Session_ID 'imizi Nasıl Buluruz?

Oracle Session_ID'yi nasıl bulabiliriz? 

Bu sorunun cevabını ilk düşündüğümüzde  v$session tablosu aklıma gelse de orada istediğim cevabı bulamadım. 

v$session tablosunda bütün session'larla ilgili bilgiler bulunurken, bana kendi sistemimle ilgili bilgi-session id 'si gerekiyordu. 

Bunun için hızlıca aşağıda sorgulardan bir tanesini kullanabiliriz.

select   
   sys_context('USERENV','SID')   
 from dual;  
  ---------  
 select   
   sid   
 from   
   v$mystat   
 where   
   rownum <=1;  
  ----------  
 select   
   to_number(substr(dbms_session.unique_session_id,1,4),'XXXX') mysid   
 from dual;  
  ---------- 
 select distinct   
   sid   
 from v$mystat;  














3 Ekim 2013 Perşembe

Oracle E-Business Suite: OPatch Error - "Opatch failed after uncompleted/interrupted patch"

Buradaki hata karşıma Oracle Application Upgrade'i sırasında gelmişti. Oracle Application'a Database Patch'i geçerken patch lock sorunu oluştu. Bu soruna gerek olup olmadığını önce aşağıdaki  yazımızda bulunan uygulama database'ine uygulanmış  patchleri gösteren sorguyla inceleyebiliriz.

Uygulanan Patch'ler

ya da

Application'a uygulanan patch'leri $ORACLE_HOME klasöründe bulunan .patch_storage klasörüne giderek  de görebiliriz.


Bahsettiğimiz Oracle Patch Hatası:

 Problems with the lock file  
 Lock file exists, details are:  
 Interim Patch is holding the lock from xxxxxxx,  
 probably due to previous unsuccessful operation  
   
 ERROR: OPatch failed during pre-reqs check  

Bu hatayla karşılaşınca Opatch $ORACLE_HOME/.patch_storage klasöründe bir dosya oluşturup kurulumun önüne geçer. O zaman $ORACLE_HOME altındaki .patch_storage klasörü altındaki patch_locked dosyası silinir.

rm -i $ORACLE_HOME/.patch_storage/patch_locked  









Oracle Veritabanı: Database’in Otomatik Olarak Başlatılması ve Kapatılması - Automatic Startup and Shutdown

İşletim sistemimizi Oracle Database'i otomatik olarak açıp kapatacak hale getirmek için bazı adımlar  atmamız gerekir. Sistemimizin otomatik olarak açılması ve kapanmasını sağlamak, bizim database'imizin  beklenmedik bir kapanma sonrasında hemen açılmasını sağlar.

Database'in otomatik açılması ve kapanması için $ORACLE_HOME/bin altında bulunan dbstart ve dbshut script'lerini kullanacağız. 

Sistemimizin ne kadar süredir açık olup olmadığını görmek için uptime komutunu kullanabiliriz. 

 >uptime  
  09:56AM  up 152 days, 16:48, 1 user, load average: 3.23, 2.13, 1.96 

1- /etc/oratab dosyası editlenir.

root kullanıcısıyla  /etc/oratab dosyası düzeltilir. İstediğimiz SID'li instance'ın satırını bulup N'yi Y yaparız.

 $ORACLE_SID:$ORACLE_HOME:{Y|N}  

Burada $ORACLE_SID database'in adıdır. $ORACLE_HOME ise database home'umumuzdur. Sondaki Y:N seçeneği de Y'ye indirgenir.

Bu durumda  ORCL:/oracle/app/product/11.2.0.3/dbhome_1:Y'e getirmemiz gerekir.

Bu işlemi yapmamızın amacı işletim sisteminin açılıp kapanmasıyla birlikte database'inde açılıp kapanmasıdır.

2- /etc/init.d/dbora dosyası yaratılır. 

/etc klasörü altında yaratılıcak dosyalar da root izni gerektiği için su root yapılması gerekir. 

 ORACLE_HOME=/oracle/app/product/11.2.0.3/dbhome_1  
 ORACLE_OWNER=oracle 
   
 case "$1" in  
  'start')  
   su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"  
   touch /var/lock/subsys/dbora  
   ;;  
  'stop')  
   su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"  
   rm -f /var/lock/subsys/dbora;;  
 esac 

Burada dbstart ve dbshut dosyalarının klasörlerinin yerleri, $ORACLE_HOME ve $ORACLE_OWNER bilgileri yazılır. dbstart ve dbshut script'leri bütün $ORACLE_HOME/bin'lerinde bulunan bir script'dir.

3- Bu dosyaların çalıştırılması için sonrasında hak değişimi ve grup değişimi yapılır.

chgrp dba /etc/init.d/dbora  
 chmod 750 /etc/init.d/dbora  


4- dbora dosyasını otomatik olarak çalışacak şekilde ayarlarız. 

 /sbin/chkconfig --add dbora 

Yukarıdaki komut ile dbora servisini ekleriz. dbora dosyası init.d altında yaratıldığı için özel olarak klasör belirtmemiz gerekmez.


Bu şekilde ayarladıktan sonra artık database'imiz otomatik olarak açılıp kapanabilmektedir.























Oracle E-Business Suite: OPatch Error - OPatch detects your platform as XX while this patch XXXXX supports platforms: 0 (Generic Platform)

Burada belirtilen hata genel bir hatadır. Bu hata bazı patch'lerin çalıştırılmasından önce OPATCH_PLATFORM_ID parametresinin set edilmesi gerektiği için çıkmaktadır.


Creating log file "/oracle/berke/apps/tech_st/10.1.3/.patch_storage/XXXX/6702510_07-13-2009_10-52-56.log"  
 Invoking fuser to check for active processes.  
 OPatch detects your platform as XX while this patch XXXXXX supports platforms:   
 0 (Generic Platform)  
 This patch is not suitable for this operating system.  
 Please contact support for the correct patch.  


Bu hatayla karşılaşıldığı zaman OPATCH_PLATFORM_ID=0 yani generic bir platform anlamına gelecek şekilde set edilirse bu hata geçilebilinir.

export OPATCH_PLATFORM_ID=0  





2 Ekim 2013 Çarşamba

Oracle E-Business Suite: Form Compile Etmek - Form Compiling - Bozulan Formları Düzeltme

E-Business Suite'de üzerinde değişiklik yaptığımız veya bozulan form'ları compile etmek için 2 tane yol vardır.

1. yol:

  • Application kapatılır.
  • Application Maintenance Mode'una alınır. (Nasıl Alınır?)
  • Adadmin komutu çalıştırılır. Oradan burada gösterdiğimiz yol izlenir. Adadmin > Generate Application Files > Generate Form Files yapılır.

2. yol: 

Burada önemli olan compile edeceğimiz form'ların compilation sırasında kullanılmıyor olmasıdır.

  • Bunun için Forms Server'a gidilir.Genelde Forms Server Concurrent Server'la birlikte aynı makinada bulunur. 
  • Applmgr kullanıcısı ile bağlanılır ve gerekli bütün ortam parametreleri set edilir(genelde zaten set edilmiştir.)
  • $AU_TOP/forms/US klasörü altına gidilir. 
  • f60gen veya frmcmp_batch.sh komutu ile fmx dosyaları yaratılır. Fmx dosyaları sonra uygun yerlerine geri konur. f60gen ve frmcmp_batch.sh komutu Unix'tedir. ifcmp60.exe komutu windows'tadır.
Not: Daha çok frmcmp_batch.sh komutu çalıştırılır.

 $ f60gen module=(form_ismi).fmb userid=apps/apps output_file=/forms/US/(form_ismi).fmx
Not: f60gen eski sistemlerde bulunabilinir. Yeni sistemlerde frmcmp_batch.sh komutunun kullanılması tavsiye edilir.

veya

Customized Form'lar için yani (Custom.pll) kullanılıyorsa  
   
 frmcmp_batch.sh module=/u01/oracle/berke/apps/apps_st/appl/au/12.0.0/forms/US/XXX.fmb userid=APPS/APPS output_file=/u01/oracle/berke/apps/apps_st/appl/inv/12.0.0/forms/US/XXX.fmx module_type=form compile_all=special  
 Yukarıdaki lokasyon $AU_TOP/resource/'tur.
 Eğer Customized Form kullanmıyorsak:.  
   
 frmcmp_batch.sh module=/u01/oracle/berke/apps/apps_st/appl/au/12.0.0/forms/US/XXX.fmb userid=APPS/APPS output_file=/u01/oracle/berke/apps/apps_st/appl/inv/12.0.0/forms/US/XXX.fmx module_type=form 


Yukarıdaki örnekte $AU_TOP altındaki bir form compile edilip $INV_TOP altına atılır. Yani bir form $AU_TOP altında compile edilip istenilen yere atılır. Bunun dışında eğer compile edilen object library ise olduğu yerde bırakılır.