">

Postgresql Foreign Data Wrapper

Postgresql Foreign Data Wrapper

Merhaba, 

FOREIGN DATA WRAPPER kurulumunu anlatacağım ve bir kaç da ipucu veriyor olacağım.,

root kullanıcısı ile aşağıdaki komutlar çalıştırılır;

  •   yum makecache
  •   yum install postgresql11-devel
  •   yum install gcc
  •   yum install unzip
  •   cd /tmp
  •   wget https://github.com/laurenz/oracle_fdw/archive/ORACLE_FDW_2_1_0.zip
  •   cd /tmp/oracle_fdw-ORACLE_FDW_2_1_0
  •   yum install centos-release-scl
  •   yum install llvm-toolset-7
  •   yum install llvm5.0
  •   scl enable llvm-toolset-7 bash
  •   make
  •   make install 

Yukardaki komutlar kısaca fdw yi centos-7 işletim sistemine kurulumunu sağlar.

Sonraında Oracle client kurmamız gerekiyor. onuda aşağıdaki komutlar ile kurabilirsiniz.

  • cd /etc/yum.repos.d
  • wget http://yum.oracle.com/public-yum-ol7.repo
  • yum install oracle-instantclient18.3-basic
  • yum install oracle-instantclient18.3-devel
  • yum install oracle-instantclient18.3-jdbc
  • yum install oracle-instantclient18.3-sqlplus

Bunların hepsi tamamlandığında tnsnames.ora dosyana veri tabanı bilgilerini eklemeyi unutmayın.

Postgresql veritabanınızda aşağıdaki komutları düzenleyip sırası ile çalıştırın.

  • CREATE EXTENSION IF NOT EXISTS oracle_fdw ;
  • CREATE FOREIGN DATA WRAPPER prod_fdw HANDLER public.oracle_fdw_handler VALIDATOR public.oracle_fdw_validator OPTIONS (nls_lang 'TURKISH_TURKEY.UTF8');
  • CREATE SERVER server_ismi FOREIGN DATA WRAPPER prod_fdw OPTIONS (dbserver '//oracle_scan_name_or_ip:port/service_name');
  • CREATE USER MAPPING FOR postgresql_veritabanı_kullanıcısı SERVER server_ismi OPTIONS (user 'user_name', password 'password');

Artık Postgresql veri tabanınızdan oracle'a erişim sağlayabilirsiniz. Burda benim tavsiyem postgresql veri tabanında bir şema oluşturun ve istediğniz orale tablolarını bu şemaya import edebilirsiniz.

  • CREATE SCHEMA fdw;

Burada "ORACLE_SCHEMA_ISMI" olarak verdiğiniz şemadaki tüm tabloları fdw şemasına import eder, fakat orada LIMIT TO kullanımı ile sadece şu tabloları da at diye bilirsiniz. Yada limit to yerine except kullanırsanız o tablo dişindaki diğer tüm tabloları import et diye bilirsiniz.

  • IMPORT FOREIGN SCHEMA "ORACLE_SCHEMA_ISMI" --LIMIT TO (tablo1,tablo2) FROM SERVER server_ismi INTO fdw OPTIONS (case 'lower', collation 'C', readonly 'true');
 
Burada çok kritik bir bilgi olarak verebileceğim null terminate string hatasıdı oracle veri tabanı kabul ederken postgresql veri tabanı kabul etmiyor, bu yüzden böyle bir tablo ile karşılaşırsanız aşağıdaki import örneğinde olduğu gibi tablo daki kolon bazlı REPLACE fonksiyonu ile sorunu çözebilirsiniz.
 
CREATE FOREIGN TABLE fdw.deneme (
  konum VARCHAR(12),
  teskilat VARCHAR(1)
SERVER server_ismi
OPTIONS (
  table '(
  SELECT 
      KONUM,
      (REPLACE(TESKILAT, chr(0))) AS TESKILAT_TURU
    FROM OWNER.DENEME
  )',
  readonly 'true');
 

 

Saygılarımla,

Umarım faydalı olmuştur.

 

Yorumlar

Henüz yorum yapılmadı.

Yorum Yapın