Domain Controller(DC) Makinası Üzerinde Oracle Veritabanı / Oracle Database on Domain Controller

Eğer DC üzerinde oracle çalıştıracaksanız ve bu yazıya google da rastlamadıysanız bilinki başınız belada.

Oracle servisi kurulu bir sunucuya DC kurduğunuzda Oracle veritabanı servisini başlatamadığınızı

ora-12560:TNS:protocol adapter
DIM-00019: O/S-Error: (OS 50)…
hataları ile karşılaştığınızı göreceksiniz.

Oracle kurulumunda installer siz farketmesenizde sistemde “ora_dba” isimli bir group açar ve kurulumu yapan kullanıcıyı bu grubun içerisine dahil eder. Oracle veritabanı serviside bu gruptaki haklar sayesinde başlatılabilir.

DC kurulduğunda lokal gruplar ve kullanıcılar devre dışında kalıyor. Bu anlayacağınız üzere oracle servisini ile vedalaştığınız anlamına geliyor.
Neyseki Onur kardeşim(Bkz.Yüksektepeli) ile kasıp sistemi kandırmanın bir yöntemini bulduk.

Çözüm:
Lokaldeki ismi ile Domainde “ora_dba” isminde bir kullanıcı grubu açın ve içerisine kurulumu yapan kullanıcıyı dahil edin.
Geçmiş olsun.Servisi artık açabilirsiniz.

Bu mudur yani demeyin internette bakmadığım yer kalmadı, sonunda bilimum olasılıkları denerken bulduk.

___________________________________________________

When you plan to move your DC on the same machine with the Oracle Database, Be aware that Murphy will be with you.
When you install oracle software, the Installer will create local user group “ora_dba” and add the current user in it.
After DC installation, DC block all the local accounts both users and groups, then when you try to start oracle service, it throws the following errors:

ora-12560:TNS:protocol adapter
DIM-00019: O/S-Error: (OS 50)…

Then you realize that you are not alone, Murphy is on your order beside you.
Good news is that we found a tricky way after several tries to handle this problem with my friend, Onur Yüksektepeli.

Solution:

After DC installation, create a new user group on domain, then name will be the same as on the local group name, “ora_dba”.Then add the user who install the database on it.Apply the policy then that’s it.

Now you will see that the Oracle service can be started and you will be alone for a while.

Tagged , ,

Oracle 11g Standart Edition Kurulumu

[pro-player type=”mp4″ width=”500″ height=”350″]http://www.farukazakli.com/blog/wp-content/uploads/2010/12/11g_Oracle_Standart_Edition_Kurulumu.mp4[/pro-player]

Tagged ,

Oracle 11g – Enterprise Manager Kurulumu

Oracle 11g ‘de Enterprise Manager Kurulumu:

[pro-player type=”mp4″ width=”500″ height=”350″]http://www.farukazakli.com/blog/wp-content/uploads/2010/12/11g_Enterprise_Manager_Kurulumu.mp4[/pro-player]

Tagged , ,

IFS ERP – İade Malzeme Yönetimi Kredi Onayında Neden Koordinatör Gerekli?

IFS – İade Malzeme Yönetimi modülünde, müşterilerden gelen iadelere ait faturaların girilebilmesi için öncelikle bir onay mekanizmasını zorunlu kılar.

IMY-Kredi Onayı

IMY-Kredi Onayı

Onayı verecek kullanıcının da mutlaka uygulamada Sipariş Koordinatörü olarak tanımlanmış olması gerekir. Aksi durumda kredi onayı verilirken mevcut kullanıcıya ait koordinatör tanımının yapılmadığını belirten bir uyarı mesajı alırsınız ve ilerleyemezsiniz.

Herhangi bir kullanıcınızı koordinator olarak tanımlamak isterseniz yapmanız gereken “Envanter ve Dağıtım İçin Genel Data Envanter ve Dağıtım İçin Temel Data” ekranını açmak ve

IMY-Kredi Onayı Koordinator Tanıtılması

IMY-Kredi Onayı Koordinator Tanıtılması

kullanıcınıza Koordinatör tanımını yapmak.

IMY-Kredi Onayı Koordinator Tanıtılması

IMY-Kredi Onayı Koordinator Tanıtılması

Bu işlemden sonra artık bu kullanıcınızda İMY kredi onayı verebilir.

Tagged , ,

IFS ERP – Satış Siparişi / İş Emri Rezervasyonlarını Kaldırma

IFS’te rezervli stoklar, olması gerektiği gibi sadece rezervli edilen yer için kullanılabilir. Lakin ülkemizde rezerve edilen stoğu gidip yerinde bulan firma sayısı pek bir az. Sayım sırasında olmadığı fark edilen bir stoğuda sayım çıkışı yapmak için stoğun o an itibariyle boşta(available) olması gerekir. Eğer bu stok herhangi bir satış siparişine yahut üretim kaydına rezervli ise bu kalemle ilgili sayım düzeltmesi yapamazsınız. Yapılması gereken öncelikle o stok üzerindeki rezervasyonu kaldırmaktır.

Rezervasyon kaldırma işleminin normalde manuel olarak yapılması gerekir. Eğer ben bu rezervasonların tamamını tek seferde kaldırmak istiyorum, patronda arkamda diyorsanız o zaman ekteki scripti de kullanabilirsiniz.

002_rezervasyon_kaldirma.sql

Tagged ,

Oracle’da Arka Plandaki Çalışan Joblar – DBMS_Jobs

DBMS_Jobs, Oracle’da bizim adımıza karın tokluğuna(elektrik, cpu, ram, disk) çalışan işçilerimizdir. Bunlara yapacakları şeyleri söyler kurup bırakırız. Onlarda tam zamanında düzenli olarak işlerini yaparlar. Yaparlar ama  bazen bu işçilerin arka plan çalışmaları, bizim yanlış yönlendirmelerimiz(kodlamamız) yüzünden tüm sistemi kilitler, faydadan çok zararı olur, E-5 üzerinde 08:00-10:00 arasında yol temizliği yapmaya benzer.

Dolayısıyla neyi ne zaman(çalışma planı-execution plan) bu işçilere yaptıracağımıza ve nasıl(kodlama-source coding) yaptıracağımıza çok dikkat etmemiz gerekir.

İşçilerin(DBMS_Jobs) baz maaliyetleri düşük diye elimizi korkak alıştırmadık ve onlarcasını sisteme salıverdik. Peki bunları sonrasında nasıl takip edeceğiz? Sistemi yavaşlatan sistem kullanıcıları mı bizim işçilerimiz mi?

İşte size,İşveren DBA’lere bir başucu sorgusu,

ARKA PLANDA ÇALIŞAN JOBLAR:

Bu sorgu ile arka planda çalışan işleri(DBMS_Jobs) sorgulayabilir, ne kadar süredir o işin devam ettiğini görebilirsiniz.

[sql]
SELECT c.username kullanici,
c.machine bilgisayar,
c.program program,
b.what islem,
a.sid,
c.serial#,
a.job,
a.failures hata,
to_char(a.this_date, ‘mm/dd/yyyy hh24:mi’)isleme_baslama,
ROUND((SYSDATE-a.this_date)*24*60,2) calisma_suresi_dakika
FROM dba_jobs_running a,
dba_jobs b,
v$session c
WHERE a.job = b.job
AND a.sid = c.sid
ORDER BY a.this_date[/sql]

Arka Planda Çalışan Joblar

Arka Planda Çalışan Joblar

Tagged , ,

ORACLE VERITABANIN KAPATILMASI – SHUTDOWN

Oracle veritabanınızı tekrar açmayı düşünerek kapatıyorsanız, Oracle’ın kendi kapatma yollarından birisini kullanıyor olmanız gerekir.Aksi durumda veritabanını açmadan önce bildiğiniz tüm duaları okuyup veritabanınızın açılmasını beklemek durumunda kalabilirsiniz.

Üç tip yöntemle veritabanınız kapatabilirsiniz.
1. NORMAL: Halihazırdaki tüm işlerin bitmesini bekler. Bu komutu kullanacaksanız kullanıcılarınıza şu saatler   arasında veritabanı kapatılıp açılacaktır diye bir bilgi geçmemelisiniz. Karizmanız çizilebilir zira bu işlem saatler sürebilir. İlla da bu komutu kullanacağım diyorsanız veribanında bağlı kullanıcı olmadığına bari emin olun. Kurum olarak zaman sıkıntımız yok diyorsanız o zaman bu yöntem size pek bir uygun.

–Komut Satırı:
SQL> shutdown
2. IMMEDIATE: Bu yöntemde veritabanındaki tüm bağlantı (session)lar sonlandırılır ve tüm bekleyen işler geri alınır(rollback). Bekleyen işler  fazlaysa bu yöntemde de Oracle’ın bunları geri almasını beklemek zorunda kalırsınız.  Dolayısıyla bu işlemin ne kadar süreciğini de kestiremezsiniz.
–Komut Satırı:
SQL> shutdown immediate

3. ABORT: Bu yöntem yaygın bir biçimde görev yöneticisinden “Oracle” görevini sonlandırmak ile eşdeğer görülür. Tabi bu görüş yangın olmakla birlikte aynı zamanda yanlıştırda. ABORT illegal bir bir kapatma yöntemi değil, Oracle’ın öngördüğü kapatma yöntemlerden birisidir.  Bu yöntemde Oracle, kısaca tam da sizin beklentiniz olan tüm aktif işleri sonlandırıp veritabanını kapatır.

–Komut Satırı:
SQL> shutdown abort

4. MELEZ KAPAMA(KAPAMA ÇOK UZUN SÜRÜYOR ISE): 3 Yöntem vardı bu nerden çıktı diyebilirsiniz. Eğer “normal” ve “immediate” yöntemi çok uzun sürüyor ama onların yaptığı işleride oracle yapsın, veritabanı temiz bir kapama yapsın diyorsak ki genelde deriz bu durumda melez bir yöntem kullanmanızı tavsiye ederim.

–Komut Satırı:
SQL> shutdown abort
SQL> startup
SQL> shutdown immediate
Tagged

TO_SAYI : String İfadenin Sayıya Dönüştürülmesi

 

String bir ifadeyi sayıya dönüştürürken, ondalık ayırıca genellikle insanın eline ayağına dolaşır, TO_NUMBER kifayetsiz kalır, TO_SAYI sorununuzu çözer…

Göksel Hocama ithafen, TO_SAYI :)

CREATE OR REPLACE FUNCTION To_Sayi(
   i_ IN VARCHAR2 ) RETURN NUMBER
IS
   sayi_ NUMBER;
BEGIN
   BEGIN
   sayi_ := i_;
   EXCEPTION WHEN OTHERS THEN
      BEGIN
         sayi_ := to_number(i_);
      EXCEPTION WHEN OTHERS THEN
          BEGIN
             sayi_ := REPLACE(i_,‘.’,‘,’);
          EXCEPTION WHEN OTHERS THEN
              BEGIN
                 sayi_ := REPLACE(i_,‘,’,‘.’);
              EXCEPTION WHEN OTHERS THEN             
                 sayi_ := NULL;
              END;
          END;
      END;
   END ;
   RETURN sayi_;
END To_Sayi;
/
GRANT ALL ON TO_SAYI TO PUBLIC
/
Tagged

IFS ERP – Bakiye Hatasına Düşmüş Müşteri Faturaları Düzeltilmesi

Dövizli müşteri faturalarında zaman zaman fiş bakiyesi
kapanmadığı için “Yazdırıldı” durumunda kalır. Bu faturaların fişini
oluşturmak çoğu zaman zahmetli bir müdahaleyi gerektirir.

Aşağıda hazırladığım script ile bu tip durumdaki faturaları
düzeltmenize yardımcı olacaktır. WHERE cümlesini belki kendi koşıllarınıza göre
ilaveler getirmeniz gerekebilir. Script çalıştıktan sonra
İşleme
Hatası Oluşan Müşteri Faturaları”
faturaları “Fişleri
Oluştur”
deyip bu faturalar için mahsup fişlerinin oluşmasını
sağlayabilirsiniz.

DECLARE
   info_ VARCHAR2(2000);
   attr_ VARCHAR2(2000);
BEGIN
FOR rec_ IN (SELECT o.*
             FROM OUTGOING_INVOICE2 O
             WHERE NVL(ok_create_voucher, ‘FALSE’) = ‘FALSE’
             AND OBJSTATE = ‘Printed’
            )          
             LOOP
      FOR invrec_ IN (SELECT i.objid,i.objversion
                      FROM invoice i
                      WHERE i.company=rec_.company
                            AND i.invoice_id=rec_.Invoice_Id
                     ) LOOP
         Client_SYS.Clear_Attr(attr_);
         Client_SYS.Add_To_Attr(‘CURR_RATE’ , rec_.curr_rate,attr_ );
         INVOICE_API.Modify__(info_,invrec_.objid , invrec_.objversion,  attr_, ‘DO’ );
         FOR itemrec_ in (SELECT *
                       FROM invoice_item i
                       WHERE  i.company             = rec_.company
                              and i.invoice_id      = rec_.invoice_id
                              and i.identity        = rec_.identity
                              and i.party_type      = rec_.party_type
                              and i.NET_CURR_AMOUNT != 0) LOOP
         Client_SYS.Clear_Attr(attr_);
         Client_SYS.Add_To_Attr(‘CURR_RATE’        , rec_.curr_rate               , attr_);
         Invoice_Item_api.Modify__(info_,itemrec_.objid , itemrec_.objversion,  attr_, ‘DO’ );
         END LOOP;
         Invoice_API.Update_Invoice_Head ( rec_.company,
                                       rec_.identity,
                                       rec_.party_type,
                                       rec_.invoice_id);

           
     END LOOP;      
   END LOOP;    
END;

Tagged , ,

IFS ERP 7.xxx – TÜRKÇE DİL AYARI



IFS 7.xxx Uygulamaları kendi içerisinde doğrudan oracle erişim desteği ile geldiği için eskiden olduğu gibi kullanıcı bilgisayarlarında oracle client kurulumuna gerek duymaz.  Bu bağımlılığın kalkmasıyla birlikte IFS Uygulamasının, daha önceden Oracle Client kurulumu ile registry’e işlenen veritabanına bağlanırken kullanılacak karakter seti(NLS_LANG) tanımının, artık bağımsız bir şekilde tanımlanabilmesi ihtiyacı ortaya çıkmıştır.
IFS’te bunun için uygulama ile aynı dizin içerisinde “oracle.key” isimli bir dosya üretmiş ve içerisine NLS_LANG değerinin registride nerede durduğunun yazılmasını istemiştir. Herhangi bir metin editörü ile bu dosyanın içeriğine bakarsanız şu şekilde bir registry yolu görürsünüz.
SOFTWAREORACLEIFS Applications
Bu uygulamaya NLS_LANG parametre değeri için  Windows işletim sisteminde bu adreste bakması gerektiğini anlatır.
Registry’de “oracle.key” dosyasında gösterilmiş adreste yer alan NLS_LANG değeri ni Türkçe çalışıyorsanız  “TURKISH_TURKEY.WE8ISO8859P9” olarak girebilirsiniz.
64 bit İŞLETİM SİSTEMİ KULLANANLAR İÇİN EXTRA BİLGİ:
Eğer işletim sisteminiz 64 bit ise bu kısmı dikkatli okumanızda fayda var.
IFS Uygulamaları Client tarafında 32bit uygulamalardır. Eğer siz 32bit IFS Uygulamasını 64bit makinada çalıştırıyorsanız(hiç sıkıntı değil pekala IFS tarafından certified edilmiş her işletim sisteminde çalıştırabilirsiniz) sadece 64 bit Windows İşletim Sisteminin registry’e erişim mantığıyla ilgili anlatacağım detayı bilmeniz gerekir. Bilmiyorsanızda dert etmeyin bir kaç satır sonra öğrenmiş olacaksınız.
Windows 64 bit makinalarda Registry’i açarsanız HKEY_LOCAL_MACHINESOFTWARE adresinde 32 bit Windows İşletim Sisteminden farklı olarak extra bir anahtar görürsünüz, “Wow6432”. Bu anahtarı işletim sistemi, 32bit Uygulamaları, HKEY_LOCAL_MACHINESOFTWARE adresinde yer alan 64 bit uygulama anahtarlarından ayırıp farklı bir görüntü kümesinde saklamak amacıyla kullanır. Yani 32 bit uygulama Windows Registry’sinden HKEY_LOCAL_MACHINESOFTWARE… olarak  bir değer isteğinde bulunduğunda, bu talep otomatik olarak HKEY_LOCAL_MACHINESOFTWARE Wow6432… yönlendirilir ve burdaki değer aranır.
İşletim sistemi ile ilgili bu teknik bilgiyi verdikten sonra;
64bit İşletim Sistemi Çözüm: 
Eğer bir 64bit işletim sisteminiz varsa ve “oracle.key” dosyasindaki adres “SOFTWAREORACLEIFS Applications” şeklindeyse  NLS_LANG anahtarının bu adreste olması gerekir:
SOFTWARE Wow6432ORACLEIFS Applications
Tagged ,