Etiket: postgresql create server

PostgreSQL Oracle_fdw

PostgreSQL Oracle_fdw

PostgreSQL yabancı sistemlere bağlanmak veri almak ve sorgulamak için kullanılan ve ortak cevap getirmek veya konuşturmak için tercüman görevi görmektedir. PostgreSQL  de birden fazla fdw(Foreign Data Wrapper ) bulunmaktadır .Bu yazımda bunlardan biri olan oracle_fdw kurulumu ve gerekli paketler nelerden ve nasıl yüklenir onları anlatacağım.

Oracle _fdw kurulumu yaparken oracle instant client’ı yüklememiz gerekiyor .İnstantclient da ise;

İnstantclient-basic_linux,
instantclient_sdk_linux,
instantclient_sqlplus

rpm’lerini yüklemeniz gerekiyor (Versiyon farketmez.)Kurulum için Postgresql için oracle_client kurulumu isimli makalemden yararlanabilirsiniz.

PostgreSQL için Oracle Client Kurulumu

Postgresql tarafında ise standart kurulum yaptıysanız postgresql-devel ve postresql-lib rpm paketlerini versiyonunuza göre indirip kurmalısınız. Oracle_client kurulumu için PostgreSQL için oracle client kurulumu isimli makalemi okuyabilirsiniz.

Gerekli oracle_client sürümünü indirip kurduktan sonra aşağıdaki adımları izleyerek oracle_fdw kurulumunu yapabilirsiniz.
İlk olarak Oracle_fdw extensionını indiriyoruz , indirmek için aşağıdaki linkten faydalanabilirsiniz.

https://github.com/laurenz/oracle_fdw

Oracle_fdw extension dosyalarını indirip makinemizdeki herhangi klasöre aktardıktan sonra  klasöre giriyoruz ve aşağıdaki komutu çalıştırıyoruz.

make

Klasörün içinde make komutunu çalıştırdıktan sonra aşağıdaki gibi çıktı almanız gerekiyor.

Yukarıdaki gibi çıktı almadıysanız ve oracle_utils.c:22:17: fatal error: oci.h: No such file or directory ve make: gcc : Command not found make:*** [oracle_fdw.o] Error 127  gibi  benzer hata aldıysanız Oracle_fdw oracle_utils.c:22:17: fatal error: oci.h: No such file or directory hatası çözümü isimli makelemden ve make: gcc : Command not found make:*** [oracle_fdw.o] Error 127 Hatası ve Çözümü  isimli makalelerden yararlanabilirsiniz.

Yukarıdaki işlem tamamlandıktan sonra  ,bir sonra ki komutu çalıştırarak devam edebilirsiniz.

 make install

Son olarak aşağıdaki komutu çalıştırıyoruz ve  işletim seviyesinde yapılan işlemlerimiz sona eriyor.Bu adımı yapmadan  önce bunun amacı PostgreSQL  kodu ile oracle_fdw kodunu beraber compile etmek için kullanılır.

make NO_PGXS=1

Psql ile postgres’e bağlandıktan sonra aşağıdaki komutu çalıştırarak extensionımızı oluşturuyoruz.

create extension oracle_fdw;

Extension kurulduktan sonra diğer extension kurulumlarında olduğu gibi server oluşturuyoruz.

CREATE SERVER oradb1 FOREIGN DATA WRAPPER oracle_fdw OPTIONS (dbserver 'oracle_ip:1521');

User mapping oluşturuyoruz.

CREATE USER MAPPING FOR pguser SERVER oradb1 OPTIONS (USER 'oracleuser', PASSWORD 'OracleUserSifre');

Ve son olarak foreign table oluşturuyoruz.

CREATE FOREIGN TABLE ftbl_ora_test1
 (
 id int OPTIONS (key 'true') NOT NULL,
 item varchar(10),
 upd_date timestamp
 )
 SERVER oradb1 OPTIONS (SCHEMA 'oracle_schema', TABLE 'oracle_tablo');

Tablomuzu da oluşturduktan sonra oracle_fdw extensionımızı kullanabiliriz artık.

1,441 total views, 22 views today

Postgresql  MSSQL Server arasında Foreign Data Wrapper

Postgresql MSSQL Server arasında Foreign Data Wrapper

Postgresql de farklı veritabanlarından veri çekilebileceğinden  Postgresql Foreign Data Wrapper isimli yazımda bahsederek postgresql den postgresql e fdw(Foreign Data Wrapper)  yapmıştık bu  yazımda Mssql ile Postgresql arasında  tds_fdw extensionından faydalanarak bağlantı yapacağız .

Postgresql den Mssql Server’a bağlanmak için tds_fdw extensionından faydalanacağız fakat bundan önce  kurmamız gereken birkaç paket olacak bunları aşağıdaki gibi yüklememiz gerekiyor.

Kuruluma geçmeden önce  Postgresql kurulumunu lib ve dev paketlerini yüklemeden yaptıysanız versiyonunuza göre rpm paketlerini bularak yüklemeniz gerekmektedir.

Postgresql de lib ve dev paketlerini kurduk varsayarak devam ediyoruz ve root kullanıcısında devam ediyoruz.

GNU Derleyicisini extension paketi  Tds_fdw uzantısının bağlı olduğu paketleri beraberinde getirdiği için   yüklememiz gerekiyor.

Yum install gcc-y

Başka bir extension bağımlılığımız  için yüklememiz gerek epel reposudur. Bunun sebebi extensionımız için gerekli olan freetds ‘in içinde olmasıdır.

İlk olarak aşağıdaki gibi rpm paketini indiriyoruz.

Not: Aşağıdaki komutu çalıştırdığınızda bulunduğunuz dizine indirecektir. Komutu indirmeden önce ‘pwd ‘ komutunu kullanarak bulunduğunuz dizini görebilirsiniz.

 wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

Aşağıdaki gibi indirildiğini ve kaydedildiğini görebilirsiniz.

İndirilen rpm paketini aşağıdaki gibi çalıştırıyoruz.

rpm -ivh epel-release-7-11.noarch.rpm

Epel reposu kurulduktan sonra Freetds ve Freetds-devel kitaplıklarını yüklüyoruz.

yum install freetds -y
yum install freetds-devel -y

Yukarıdaki kurulumlar bittikten sonra tds_fdw extension’ını indiriyoruz.

wget https://github.com/GeoffMontee/tds_fdw/archive/master.zip (wget yüklü değilse yum install wget komutu ile kurabilirsiniz.)

İndirdikten sonra zip dosyasından aşağıdaki gibi çıkarmamız gerekiyor.(unzip yüklü değilse yum install unzip komutu ile kurabilirsiniz.)

Unzip master.zip

Zip dosyasını çıkardıktan sonra tds_fdw klasörünün içine giriyoruz.

 cd tds_fdw-master/

Aşağıdaki  komutları sırasıyla çalıştırıyoruz.

 PATH=/usr/pgsql-10/bin:$PATH make USE_PGXS=1

Yukarıdaki gibi çıktı alamıyor ve hata olarak makefile54 benzeri hata alıyorsanız Postgresql makefile54 hatası çözümü isimli makalemden faydalanabilirsiniz.

Yukarıdaki  gibi çıktı aldıktan sonra  önceki library dosyalarını aşağıdaki gibi yüklüyoruz.

PATH=/usr/pgsql-10/bin:$PATH make USE_PGXS=1 install

 

Yukarıdaki gibi çıktıyı aldıktan sonra Psql e bağlanarak aşağıdaki gibi extension’ı create edebiliriz.

create extension tds_fdw;

Kurulumu yaptık ve şimdi Mssql ile postgresql arasında tds_fdw extension’ını kullanarak foreing data wrapper uygulamasını yapacağız. Bunun için ilk başta  postgresql üzerinde Foreign Data Wrapper için aşağıdaki gibi server oluşturacağız.

CREATE SERVER ms FOREIGN DATA WRAPPER tds_fdw OPTIONS(servername 'MSSQL_Sunucu_ipsi ',database 'fdw_d1',port '1433');

Serverımızı kurduk sıra  postgresql den nasıl bağlanacağımızı belirttiğimiz user mapping kısmına, bunun için aşağıdaki komutu kullanabilirsiniz.

CREATE USER MAPPING FOR postgres SERVER ms OPTIONS (username  'sa', password 'Faruk1234!');

Hangi user ile bağlanacağımızı belirttik şimdi ise postgresql de tablo oluşturup bunu mssql ile bağlamaya sıra geldi. Bunun için  aşağıdaki komuttan yararlanabilirsiniz.

CREATE FOREIGN TABLE ms_d1(id int ,ad nchar(10)) SERVER ms OPTIONS (query 'SELECT id,ad FROM dbo.d1_1');

MSSQL üzerinde bulunan fdw_d1 veritabanında ki, dbo şemasının altındaki d1_1 tablosundan sorgu çektiğimizde aşağıdaki gibi 6 kayıt gelmektedir.

Şimdi ise foreign data wrapper mimarisini kullanarak oluşturduğumuz tabloyu  kullanarak veriyi çekelim ve veriler aynı mı görelim.

Ms_d1 tablomuzdan sorgu çektik şimdide insert deneyelm.

 

Postgresql üzerinden kontrol edelim;

Yukarıda görüldüğü gibi insertler de postgresql üzerinden görüyoruz.

582 total views, 3 views today

Postgresql Foreign Data Wrapper

Postgresql Foreign Data Wrapper

Postgresql yalın halde sunulmuş RDMS veritabanlarından birisidir.Bundan dolayı dblink  , Foreign Data Wrapper gibi özelliklerden faydalanmak için extension yüklememiz gerekir.

Postgresql de bulunan Foreign Data Wrapper teknolojisi ile   farklı uzak sistemlere bağlanmanızı ve   uzak sistemler üzerinden sorgulama ,yazma işlemleri yapmanıza imkan sağlar.  Foreign Data Wrapper özelliği Postgresql ‘in 9.1 versiyonu ile gelmiştir.

Fdw(Foreing Data Wrapper) ile farklı sistemlerden  veri çekmek,yazmak  için farklı  extensionların yüklenmesi gerekmektedir. Bunlardan bir kaçı aşağıdaki gibidir.

  • Postgresql – Postgresql  => postgres_fdw
  • Postgresql – MSSQL        =>tds_fdw
  • Postgresql  – Redis          => redis_fdw
  • Postgresql – MYSQL       => Mysql_fdw
  • Postgresql -MongoDB    =>Mongo_fdw

Aşağıdaki uygulamamız da Postgresql  den  Postgresql  sunucuya Fdw yapacağız.

 

Foreing Data Wrapper için ilk adım olan extension paketini aşağıdaki gibi ekliyoruz.

create extension postgres_fdw ;

Extension paketi yüklendikten sonra foreign data wrapper için kullanacağımız  server’a erişebilmemiz için aşağıdaki komutu birinci makine de çalıştırıyoruz. Bu komut uzak bilgisayara bağlanmak için superuser kulanıcısı ile çalıştırılması gerekir.

CREATE SERVER c3 FOREIGN DATA WRAPPER postgres_fdw OPTIONS(host 'eklenecek_server_ipsi',port '5432');

Yukarıda erişmeye çalıştığımız makinenin connection bilgileri ile foreign data wrapper için serverımızı oluşturduk şimdi hangi kullanıcı ile erişeceğini belirtiyoruz.

Ben postgres user’ı ile yaptım siz farklı kullanıcı ile de yapabilirsiniz.

CREATE USER MAPPING FOR postgres SERVER c3 OPTIONS (username 'postgres',password 'postgres_şifresi');

Server ve User Mapping ‘i oluşturduktan sonra aşağıdaki gibi tablomuzu oluşturuyoruz.

CREATE FOREIGN TABLE foreign_table (
        id integer NOT NULL,
        data text
)
        SERVER c3
        OPTIONS (schema_name 'şema_ismi',table_name 'tablo_adi');

Ve foreign tablomuz oluşturuldu kontrol etmek için aşağıdaki komuttan faydalanabilirsiniz.

 \det+

Komut ile kontrol ettiğimizde aşağıdaki c3 adındaki server ismimiz ile foreign_table tablomuzun oluşturulduğunu görüyoruz.

618 total views, 4 views today

Theme: Overlay by Kaira Extra Text
Cape Town, South Africa