Kamis, 18 Februari 2010

Koneksi Database Mysql ke Oracle

Berikut ini catatanku tentang bagaimana membuat sebuah jembatan data dari Oracle ke MySQL.
  
Catatanku dibawah ini bercerita tentang hubungan database SIMDUK dengan SIAK. Keduanya adalah jenis Aplikasi Kependudukan yang digunakan di Dinas/Kantor Catatan Sipil. Hanya saja SIMDUK sudah dipensiunkan, dan SIAK adalah penggantinya. Database SIMDUK yang dalam bentuk Informix 5.0 sejauh yang aku tahu hanya memiliki ODBC 16Bit yang bisa berjalan diatas Win3.11 dan tidak didukung oleh JDBC. Karena itu aku mengkonversi data Simduk yang ada di Informix tersebut ke MySQL sebelumnya.
  
Huh.. Perjuangan yang panjang.

  1. Komputer- Laptop Celeron 1034Mhz RAM 756Mb + HDD 80Gb (Jadul amat yah)- Ms Windows XP SP3- MySQL V 5.1- MySQL ODBC Connection V5.1- Oracle 9.0.1.2
     

  2. Nama Schema Simduk di MySQL yang kumiliki adalah simdukdb
     

  3. Nama Schema/User SIAK di Oracle adalah siakdb
     

  4. Nama Instance Database Oracle adalah backme80
     

  5. Instalasi Oracle ada di d:\oracle

Nah urutan kerjanya adalah sebagai berikut:


  1. Login ke MySQL menggunakan account root

  2. Buat sebuah user baru :
      
    create user SIMDUKDBODBC@localhost identified by ‘PASS123’;
    grant all privileges on simdukdb.* to
    SIMDUKDBODBC@localhost;

    Ingat, user name dan password harus ditulis dengan hurup kapital/besar.



  3. Buat ODBC MySQL System DSN melalui Control Panel->Administrator->ODBC dengan spesifikasi sebagai berikut :

    Data Source Name : simdukdbodbc
    Server           : localhost
    User             : SIMDUKDBODBC
    Password         : PASS123
    Database         : simdukdb
     

    Tes koneksi dengan menekan tombol Test

  4. Buat sebuah file initSIMDUKDBODBC.ora di direktori D:\oracle\ora92\hs\admin dan isikan file tersebut dengan: 

    HS_FDS_CONNECT_INFO = simdukdbodbc
    HS_FDS_TRACE_LEVEL = OFF


    Simpan

  5. Edit File D:\oracle\ora92\network\admin\listener.ora dan tambahkan isian dengan :

    LISTENERSIMDUKDBODBC =
      (ADDRESS_LIST=
        (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))
        (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)))

    SID_LIST_LISTENERSIMDUKDBODBC=
      (SID_LIST=
        (SID_DESC=
          (SID_NAME=simdukdbodbc)
          (ORACLE_HOME=d:\oracle\ora92)
          (PROGRAM=hsodbc)))


    Simpan
     

  6. Edit File D:\oracle\ora92\network\admin\tnsnames.ora dan tambahkan isian dengan :

    MYSIMDUKDB =
      (DESCRIPTION=
        (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))
        (CONNECT_DATA=(SID=simdukdbodbc))
        (HS=OK))


    Simpan
     

  7. Jalankan perintah berikut dibawah dari Command Prompt:
     

    lsnrctl reload
    lsnrctl start LISTENERSIMDUKDBODBC

     

  8. Login ke Schema siakoff yang telah memiliki izin untuk Connect, Resource dan DBA. Buat database link baru:
     

    create database link simdukdb connect to SIMDUKDBODBC
    identified by PASS123 using ‘mysimdukdb’;
      

  9. Test hasil koneksi tersebut dengan mengetikkan perintah, misalnya :

    SELECT KODE_WIL, ALAMAT FROM KKTBL@SIMDUKDB WHERE
    NO_KK = ‘0250020103231’;
     

    Jika berhasil, maka akan muncul 1 row.
Oh ya, kalo ada masalah, jangan keburu bingung, Coba diperhatikan penggunaan hurup kecil dan besar-nya. Aku sudah berhasil dan Selamat mencoba..

4 komentar:

  1. wah bagus pak referensinya, tapi saya kok belom berhasil ya pak, setelah saya create database link trus saya select * from actor@mysql_orcl ; keluar error :
    *
    ERROR at line 1:
    ORA-28545: error diagnosed by Net8 when connecting to an agent
    Unable to retrieve text of NETWORK/NCR message 65535
    ORA-02063: preceding 2 lines from mysql_orcl

    tp sebelumya saya lsnrctl start LISTENERMYSQL dia eror karena udah ada listener mysql sendiri yang sudah nyala, tetapi setelah saya matikan dulu listener bawaan mysqlnya , terus sya lsnrctl LISTENERMYSQL nya dia jalan, sehingga waktu saya create database link dan tnsping tnsnamenya berhasil, cuma ya waktu saya
    select * from actor@mysql_orcl ;
    keluar error :
    *
    ERROR at line 1:
    ORA-28545: error diagnosed by Net8 when connecting to an agent
    Unable to retrieve text of NETWORK/NCR message 65535
    ORA-02063: preceding 2 lines from mysql_orcl

    BalasHapus
    Balasan
    1. Kalau bopeh tau versi mysql, odbc mysql dan oracle yg anda gunakan?

      Hapus
  2. kalau memunculkan lebih dari 1 row bisa atau tidak ya?

    Terima kasih

    BalasHapus
    Balasan
    1. bisa banget, karena saya pernah mengkonversi jutaan baris pakai ini. intinya pada keyword hsqlodbc

      Hapus

Jika ada kritik dan saran, komentari Artikel ini.