Yunus Emre
Software Engineer
Power Automate ile Oracle Database Bağlantısı
Power Platform dünyasına girdiğinizde karşınıza çıkan ilk duraklar genelde SharePoint listeleri veya Dataverse olur. Ancak kurumsal seviyede bir proje geliştiriyorsanız, veri kaynağı olarak Oracle Database kullanmanız istenebilir.
Oracle bağlantısı, ekosistemin “niş” alanlarından biri olduğu için standart Microsoft makaleleri bazen yüzeysel kalabiliyor. Kaynak az olduğu için yapay zekalarda sizi yanlış yönlendirebiliyor (En azından şimdilik).
Power Automate Gateway Bağlantısı
Yerel (Local) sunucunuzda barınan Oracle tablolarına bulut üzerinden dokunabilmek için sağlam bir köprüye ihtiyacınız var. Power Platform mimarisinde bu köprünün adı On-Premise Data Gateway‘dir.
Power Automate arayüzünde sol menüde yer alan “Veri” başlığı altındaki “Ağ geçitleri” (Gateways) alanına gidiyoruz. “Yeni ağ geçidi” butonuna tıkladığınızda sistem size otomatik olarak “GatewayInstall.exe” dosyasını indirecektir.
İndirilen dosyanın kurulumunu Oracle veritabanınızın bulunduğu sunucuya (veya o sunucuya 7/24 erişimi olan bir makineye) yapmanızdır. Kurulum sırasında Office 365 hesabınızla giriş yaptığınızda, gateway otomatik olarak bulut ortamınızla eşleşecek ve Power Automate ekranınızda “Online” olarak görünecektir.

Gateway hazır olduğuna göre, artık Oracle’ın kapısını çalabiliriz. Power Automate’de yeni bir akış (Flow) oluşturup “Oracle -> Satırları Al” (Get Rows) aksiyonunu eklediğinizde sizden bir bağlantı yapılandırması istenecektir. Bağlantı işlemini tablodaki gibi yapabilirsiniz.
| Bağlantı Adı | Sunucu | Kullanıcı Adı | Parola |
| OracleConnection | oracledb:1521/BT | powerplatform | *** |
Sunucu kısmına 1.1.1.1:1521/BT şeklinde yani IP:1521/SID formatında da giriş yapabilirsiniz. Gateway kısmına da oluşturduğumuz gateway’i seçiyoruz. Tüm bilgileri girip “Oluştur” dediğinizde, eğer yetkileriniz de tamamsa Oracle tablolarınızın bir liste halinde önünüze döküldüğünü göreceksiniz.
Not: Aynı gateway ve bağlantıyı power apps tarafında da kullanabilirsiniz.
Power Automate ile Oracle Database’e Veri Ekleme
Power Automate içindeki Oracle bağlayıcısı, bize SharePoint’ten alışık olduğumuz “Satır Ekle”, “Satırları Al”, “Filtrele” gibi standart aksiyonlar sunar. Ancak işin içine kurumsal bir Oracle mimarisi girdiğinde, bu standart aksiyonlar bazen beklenen performansı vermeyebilir veya arka planda sessiz hatalara yol açabilir.
Yaptığım denemelerde, standart “Satır Ekle” aksiyonunun veriyi eklemiş gibi görünmesine rağmen Oracle loglarına hata düşürdüğünü gözlemledim. Özellikle veritabanınızda TimeStamp (Zaman Damgası) kullanan tarih alanları varsa, standart aksiyonlar bu formatı doğru dönüştüremeyebiliyor. Eğer sadece basit metin (String) veya sayı (Integer) gönderiyorsanız standart aksiyonlar iş görebilir; ancak kompleks veri tiplerinde “Execute Oracle Query” aksiyonu ile doğrudan tabloya yazmak çok daha güvenli ve performanslı bir yöntem.
Örnek query şablonu;
INSERT INTO "POWERPLATFORM"."ORNEKTABLO" (
"ID",
"TIP",
"VKN",
"REQUESTNO",
"SON_DEGISTIREN",
"ISLEM_TRH"
)
VALUES (
triggerOutputs()?['body/ID'],
'triggerOutputs()?['body/Tip/Value']',
'triggerOutputs()?['body/VKN']',
if(empty(triggerOutputs()?['body/IstekNo']),'null',triggerOutputs()?['body/IstekNo']),
'triggerOutputs()?['body/Editor/DisplayName']',
TO_TIMESTAMP(
'formatDateTime(utcNow(), 'yyyy-MM-ddTHH:mm:ss.fffffff')',
'YYYY-MM-DD"T"HH24:MI:SS.FF7'
)
)
Oracle’a doğrudan sorgu gönderirken hata almamak için şu 5 kritik kurala dikkat etmelisiniz:
- Sayısal Değerler: Sayı gönderirken tek tırnak kullanmayın. (Örn:
ID = 101) - Metin (String) Değerler: Metinleri mutlaka tek tırnak içine alın. (Örn:
'Deneme Verisi') - Tarih Formatı (TimeStamp): En çok hata yapılan yer burası. Tarihleri Oracle’ın anlayacağı
TO_TIMESTAMPfonksiyonu ile göndermeli ve Power Automate tarafındaformatDateTimeile formatlamalısınız. - Noktalı Virgül (;) Tuzağı: Sorgunuzun sonuna asla noktalı virgül eklemeyin. Eklediğinizde akış hata vermeyebilir ancak verinin veritabanına işlenmediğini görürsünüz.
- Commit Şartı: Yazma işlemlerinden sonra verinin kalıcı olması için mutlaka yeni bir sorgu adımıyla
COMMITkomutunu göndermelisiniz.
Power Automate ve Oracle CLOB Hatası
Oracle veritabanında bir dosyayı veya uzun bir metni saklamak istediğinizde genellikle CLOB sütun tipini kullanırsınız. Ancak Power Automate üzerinden bu alanlara Base64 formatında bir dosya içeriği (örneğin bir PDF veya görsel) göndermeye çalıştığınızda, standart SQL sorguları sizi “yetersiz buffer” veya “string literal too long” gibi hatalarla karşılayabilir.
Bu sorunu aşmanın en sağlıklı yolu, veriyi doğrudan SQL cümlesinin içine yazmak yerine parametreli sorgu kullanmaktır. Parametreli sorgu, hem SQL Injection riskini önler hem de büyük verilerin (Base64) Oracle tarafından daha rahat işlenmesini sağlar.
Sorgu içerisinde kullandığınız : işareti, Oracle’a “bu değer bir parametre olarak gelecek” mesajını verir.
INSERT INTO "POWERPLATFORM"."DOSYALAR" (
"ID",
"SIRA_NO",
"DOSYA_BINARY"
)
VALUES (
:dosya_base64_id,
:sira_no,
:dosya
)
Siz bu sorguyu “Execute Oracle Query” aksiyonuna yazdığınızda, Power Automate aksiyonun alt kısmında bu değişkenler için otomatik olarak giriş alanları oluşturacaktır.
Power Automate içerisinde bir dosya içeriğini Base64’e çevirmek oldukça basittir. Aşağıdaki ifadeyi kullanarak içeriği dönüştürebilirsiniz: base64(outputs('Dosya_İçeriğini_Al')?['body'])
Örnek query’de ki “:” işlemi bu değerin parametre olarak gönderileceği anlamına geliyor. Siz bu query’i yazdığınızda aksiyonun alt kısmında bu değişkenler sizden istenecek. Orada verilerinizi gönderebilirsiniz. Automate’de base64(outputs(‘Ek_içeriğini_al’)?[‘body’]) kodu ile aldığımız dosyayı base64 formatına rahatlıkla çevirebiliyoruz.

Not: base64 uzunluğu (length) 4000000’den fazla ise veriyi gönderemezsiniz. Bu power automate’in string gönderme limitidir. Burada dosyanın boyutunu düşürme, parçalar halinde gönderme gibi yollar tercih edilebilir.
Kritik Limit: 4.000.000 Karakter Sınırı
Burada çok önemli bir kısıtlamadan bahsetmem gerekiyor: Power Automate’in string gönderme limiti yaklaşık 4 milyon karakterdir. Eğer göndermeye çalıştığınız Base64 verisinin uzunluğu (length) bu sınırı aşıyorsa, akışınız hata verecektir. Bu durumda şu yolları izlemelisiniz:
- Dosya Boyutunu Küçültme: Görselleri sıkıştırmak veya PDF kalitesini düşürmek.
- Parçalı Gönderim: Dosyayı parçalara bölüp Oracle tarafında birleştiren prosedürler yazmak.
- Bağlantı Gönderimi: Veri tabanına dosyanın sharepoint bağlantısı gönderilebilir.
Power Automate ile Oracle Database Veri Silme
Veri silme (Delete) işleminde de standart aksiyon yerine Query kullandım. Siz standart aksiyonu deneyebilirsiniz. Power platform sürekli geliştirilen bir platform olduğu için güncelleme ile bazı hatalar düzeltilmiş olabilir. Ancak hata alırsanız da bu büyük bir sorun değil. Aşağıdaki Query’i kullanarak silme işlemini yapabilirsiniz.
DELETE FROM POWERPLATFORM.ORNEKTABLO WHERE ID = triggerOutputs()?['body/ID']
Kritik Hatırlatma: Bu sorgudan hemen sonra bir “Execute Oracle Query” adımı daha ekleyip içerisine sadece
COMMITyazmayı unutmayın. Aksi takdirde verileriniz “lock” (kilitli) kalabilir veya hiç kaydedilmeyebilir.
SONUÇ
Yazı içerisinde Veri Ekleme ve Veri Silme süreçlerini detaylandırdık. Güncelleme (Update) işlemleri için de yine aynı mantığın geçerli olduğunu unutmamalısınız. INSERT INTO yapısında kullandığımız Manuel Query ve COMMIT disiplini aynı şekilde kullanılmalıdır.
UPDATE "POWERPLATFORM"."ORNEKTABLO"
SET
"REQUESTNO" =
int(triggerOutputs()?['body/IstekNo']),
"ISLEM_TRH" =
TO_TIMESTAMP(
'formatDateTime(utcNow(),'yyyy-MM-ddTHH:mm:ss.fffffff')',
'YYYY-MM-DD"T"HH24:MI:SS.FF7'
)
WHERE
"ID" = 10;
Bazen saatlerce uğraştığınız bir hatanın çözümü, aslında sadece sorgunun sonuna yanlışlıkla eklenen bir ; (noktalı virgül) karakterinde saklı olabilir. Oracle bağlantılarında karşılaşılan hataların çoğu yapısal olmaktan ziyade, bu tarz küçük ama kritik detaylardan kaynaklanıyor. Hatanın tam olarak nereden geldiğini bilmediğiniz zaman, paylaştığım “yaşanmış tecrübeler” size zaman kazandırabilir.
Özetle; Oracle ve Power Platform arasındaki bağlantıyı doğru kurduğunuzda, yerel verilerinizin gücünü bulutun esnekliğiyle birleştirmenin avantajına erişebiliyorsunuz. Bu alanda karşılaştığınız farklı hataları yorumlarda paylaşabilirsiniz.
Ağ geçidi kısmından sunucunuza gateway kurarak hızlı bir şekilde bağlantı yapabilirsiniz. Gayeway’e office365 kullanıcınız ile giriş yapmanız yeterli olacaktır.
Power Automate’de atacağınız veriyi “:” ifadesi kullanarak parametre olarak gönderdiğinizde clob hatası çözülecektir. Burada Power Automate’in veri limiti konusuna da dikkat etmelisiniz.