Tagged: ODI Toggle Comment Threads | Tuş takımı kısayolları

  • dutali 12:51 am on 2016-01-29 Kalıcı Bağlantı | Cevapla
    Tags: context, dwh, etl, forced context, ODI, odi error, Oracle Data Integrator   

    Yanlışlıkla zorlamalı çerçeve (forced context) atama.ETL de çalışıyor ama.. 

    ODI ile interface geliştirmede çok dar bir kullanım alanı olan forced context (zorlamalı kontekst) özelliği zaman zaman amaç dışı-muhtemelen yanlışlıkla- seçilebiliyor. Bazı durumlarda canlı ortamda dahi farkedilmeyen hatalara sebep olabilen bu özelliği mümkün mertebe kullanmamak en iyisi. Zorlamalı kontekst (Forced context) , istediğiniz bir ETL in hangi çerçevede (context) ETL’i çalıştırısanız çalıştırın ETL in çalıştığı çerçevenin değişmemesini sağlar. Bu çok nadir ihtiyaç duyulabilen bir durumdur.

    Aşağıda zorlamalı kontekst in nasıl seçildiği ve tüm sistemde varsa muhtemel hataların nasıl topluca tespit edilebildiği anlatılacak

     

    Aşağıdaki imajda  kaynak tablolardan biri seçili ve Property Inspector paneli en altta görünüyor. Burada sarı ile işaretli alan yukarıda bahsettiğimiz zorlamalı çerçeveyi belirlemek için kullanılır. Örnek olarak EMPLOYEE tablosundan DIM_EMPLOYEE tablosuna veri aktaran uyduruk bir interface kullanıyorum

     

    [dev_temiz] Oracle Data Integrator 11g _ INT_FCT_CUST_ORDER_ACCT - 28_1_2016 , 22_47_35

     

     

    Aynı ekran target datastore seçili iken de görünür. Faraza,  bu inetraface’de bir yerlerde hata ararken bunun ne işe yaradığını daha önce hiç merak etmediğimden belki işe yarar (?)  diye bu alanı kurcalıyor ve yanlışlıkla DEV olrak bırakıyorum. Görüntüsü şu şekilde

    [dev_temiz] Oracle Data Integrator 11g - 28_1_2016 , 23_21_51

     

    Interface’i  test ettiğimde hiç bir hata almıyorum. Zaten geliştirme ortamındayım. Conetxt alanıda daDEV seçili. Bu inetrface in senaryosunu çıkarıp canlı ortamda çalıştırdığımda, eğer canlı ortamda geliştirme ortamının bağlantı bilgileri bulunuyor ise ve doğrudan veritabanı erişimi var ise bu ETL , PROD konteksti  ile  çalıştırsam da gene çalışacak fakat kaynak olarak canlı ortamdaki employee tablosunu değil de geliştirme ortamındaki employee tablosunu kullanacaktır. Aynı şekilde eğer bu hatayı target datastore üzerinde yapsaydım , ETL hata almayacak fakat canlı ortamdaki tabloya değil geliştirme ortamındaki dim_employee tablosunu dolduracaktı.

     

    Sistemde bir tane böyle bir hata gördü iseniz ilgili ETL i açıp Context alanını “Execution Context”  olarak değiştirseniz problem çözülür. Tabi daha ileri görüşlü iseniz bu hatayı bir kere yapanların birçok kere daha yapmış olabileceğini varsayarsınız. Bütün ETL objelerini teker teker kontrol edebilirsiniz tabii ki. Bu zaman kaybına katlanmak istemiyorsanız daha kolay bir yolu var; ODI repository şemasından kontrol etmek. Bunu yapabilemk için maalesef ilgili veritabanına bağlanma yetkiniz olması gerekir

    Kontrol etmeniz gereken alanlar; kontekst ataması yapılmış tüm objeleri bulmak, ve bunların senaryolarını bulmak, daha önceden bu şekilde çalışmış oturumları bulmak.

    Şu sorgu ile zorlamalı kontekst kulllanan kaynak tabloları görebilirsiniz

    SELECT *
    FROM snp_source_tab d
    WHERE d.context_code IS NOT NULL

     

    Target datastore üzerindekileri bulmak için ise snp_pop tablosundaki targ_ctx_code kolonunu kontrol etmelisiniz

     

    SELECT p.targ_ctx_cod, p.*
    FROM snp_pop p
    WHERE p.targ_ctx_code IS NOT NULL

     

    Diğer obje türleri için de gene context_code alanlarını arayabilirsiniz. (Prosedürler  üzerinde bu hata nedense yapılmıyor)

    Ya da tüm netcede senaryosunu çalıştıracağınızdan senaryolara bakabilirsiniz. Bu bilgi senaryoların alt adımlarında tutulur . Çünkü zorlamalı kontekst ataması alt adım bazında yapılır . Aşağıdaki sorgu ile zorlamalı kontekst kullanarak çalışan tüm işleri görebilirsiniz

     

    SELECT tsk.def_context_code – hedef tablo için zorlamalı kontekst bilgisi
    , tsk.col_context_code –kaynak tablo için zorlamalı kontekst bilgisi
    , tsk.*
    FROM snp_scen_task tsk
    WHERE     1 = 1
    AND (def_context_code IS NOT NULL OR col_context_code IS NOT NULL)

     

     

    Not: ODI üzerinde geliştirme ortamı hazırlanırken hatalı bir uygulama olarak geliştirme ve canlı ortamlarda aynı kontekst isimleri farklı adreslere gidecek şekilde tanımlanabiliyor. Zorlamalı kontekst böyle bir ortamda kullanılırsa hataya sebep olmaz. Yani iki yanlış bir doğru eder. (Siz gene de toploji’yi doğru tasarlayın)

     
    • Anonim 3:59 pm on 2016-12-17 Kalıcı Bağlantı | Cevapla

      Merhaba ,
      Sizin anlattığınızdan farklı olarak prosedürlerde forced context set edilip kalmış bir durumla karşılaştım.
      Production için zorlanmış fakat ben testte çalıştırmak için başlatmıştım.
      Dolayısıyla production a güncelleme yapıyormuşum.
      Böyle bir tecrübeyi yazıya aldığınız için teşekkürler.
      Syg.

      Beğen

c
Compose new post
j
Next post/Next comment
k
Previous post/Previous comment
r
Cevapla
e
Düzenle
o
Show/Hide comments
t
En üste git
l
Go to login
h
Show/Hide help
shift + esc
Vazgeç
%d blogcu bunu beğendi: