• Tidak ada hasil yang ditemukan

PRAKTIKUM BASIS DATA TERDISTRIBUSI MODUL 3 DATABASE LINK DENGAN HETEROENOUS SERVICE

N/A
N/A
Protected

Academic year: 2018

Membagikan "PRAKTIKUM BASIS DATA TERDISTRIBUSI MODUL 3 DATABASE LINK DENGAN HETEROENOUS SERVICE"

Copied!
20
0
0

Teks penuh

(1)
(2)

I. TUJUAN

Mahasiswa mengenal konsep dari heterogenous service pada database link

Mahasiswa mampu mengimplementasikan heterogenous servicedatabase link untuk

pembuatan database teristribusi

Mahasiswa mampu mengimplementasikan koneksi antara database oracle dengan

database yang lain, seperti MS. Access, MySQL, dan PostgreSQL

Mahasiswa mampu mengimplementasikan SQL DML untuk manipulasi data secara

remote pada server database

II. APLIKASI YANG DIBUTUHKAN

Aplikasi Oracle XE

Heterogeneous service yang ada di dalam fitur Oracle.

Komponen heterogeneous service pada Oracle akan berkomunikasi dengan proses

yang terdapat pada Heterogeneous service agen yang akan mengkomunikasikn dengan

database non-Oracle. Komponen untuk membangun heterogeneous service dibagi ke dalam

tiga bagian, yaitu :

• Komponen heterogeneous service pada Oracle database server • Agent generic code

• Driver koneksi untuk komunikasi dengan database non-Oracle

Heterogeneous Service Agent

Heterogeneous service agent adalah suatu proses yang melakukan koneksi

antara database Oracle dengan database non-Oracle. Proses di dalam agent ini yang

(3)

dilakukan melalui komponen heterogeneous service di dalam Oracle server, dan setiap

gateway berisi agent-generic code yang sejenis. Setiap gateway memiliki suatu driver

yang menghubungkan antara Heterogeneous service API dengan client API yang terdapat

pada database non-Oracle Proses di dalam agent terdiri dari dua komponen, yaitu agent

generic code dan driver spesifik dari database non-Oracle. Agar agent di dalam Oracle

dapat mengakses database non-Oracle, maka database non-Oracle harus mempunyai

semacam library yang menghubungkan antar dua database tersebut. Suatu Agent untuk

heterogeneous service dapat terletak di beberapa tempat, yaitu:

• Satu tempat dengan database non-Oracle

• Satu tempat dengan database Oracle

• Pada tempat yang berbeda dari database non-Oracle maupun database Oracle

Proses pada agent biasanya dimulai pada saat user session membuat koneksi

pertama kali dengan database non-Oracel melalui pembuatan database link. Koneksi ini

dibuat dengan menggunakan Oracle remote data software (Oracle Net Service) yang

memungkinkan kedua buah client/server dan server-server berkomunikasi. Proses agent

akan berhenti berjalan ketika user session di putus atau secara eksplisit database link di

tutup koneksinya.

Tipe dari Heterogeneous Service Agent ada dua, yaitu :

Oracle transparent gateway

Suatu gateway yang dirancang untuk mengakses database non-Oracle tertentu seperti

database Sybase Solaris. Dengan Oracle transparent gateway, kita dapat menggunakan

database Oracle untuk mengakses database non-Oracle yang terdistrubusi tanpa harus

mengetahui dimana letak database-database tersebut.

Generic connectivity agent

Oracle menyediakan suatu fitur Oracle Generic Connectivity yang memungkinkan

Oracle Transparant Gateway berkomunikasi dengan database non-Oracle yang lain.

(4)

menyeidakan suatu driver untuk koneksi yaitu ODBC atau OLE DB. Driver ODBC

maupun OLE DB inilah yang nantinya akan dikonfigurasi untuk koneksi.

Komponen dari heterogeneous service

Komponen dari heterogeneous service dibagi menjadi dua, yaitu:

• Transaction service

Transaction service memungkinkan database non-Oracle dapat terintegrasi kedalam

Oracle database transaction and session. Pada saat mengakases database non-Oracle

untuk pertama kali melalui database link pada Oracle user session, secara transparan

akan dibuat session untuk otentikasi pada database non-Oracle

• SQL service

Beberapa tugas yang dikerjakan SQL service antara lain

1. Melakukan pemetaan pemanggilan SQL pada heterogeneous service driver (API)

Menterjemahkan bahasa SQL yang ada pada Oracle ke SQL yang ada pada

database non-Oracle

2. Menterjemahkan query yang ada pada Oracle Data Dictionary ke database non-Oracle

data dictionary

3. Menterjemahkan data yang memiliki tipe data yang berbeda antara database Oracle

dengan non-Oracle

4. Memperbaharui hilangnya fungsionalitas pada database non-Oracle, dengan

(5)

Diagram alur proses koneksi yang ada pada Oracle Gateway

1. Aplikasi client pertama kali akan mengirimkan query melalui Oracle Net pada database

server

2. Oracle database server akan mengirimkan query melalui gateway dengan menggunakan

Oracle Net.

3. Untuk transaksi pertama pada suatu session, gateway akan melakukan otentikasi pada

database non-Oracle dengan menggunakan username, dan password yang valid pada

database non-Oracle.

4. Gateway akan mengubah statemen SQL oracle ke dalam statemen SQL yang

dipahami oleh database non-Oracle

5. Gatewaya akan melakukan proses pengambilan data dengan menggunakan

non-Oracle SQL stamement

6. Gateway akan mengubah data yang diambil ke dalam format yang sesuai dengan

database Oracle

7. Gateway akan mengembalikan hasil query ke database oracle dengan menggunakan

Oracle Net Service

8. Database Oracle akan melewatkan hasil query ke dalam aplikasi client dengan

menggunakan Oracle Net. Database link akan tetap terbuka, sampai session yang terdapat

di dalam gateway selesai, dan secara eksplisit database link di tutup.

IV. SOAL PRATIKUM

(6)

1. Pada Oracle Server buatlah skema (user) baru dengan nama STORE. Skema ini

menyimpan data stock, supplier, dan employees

2. Pada server MYSQL (Tokyo) dan Postgre (London), buatlah database baru yang berisi

table-tabel berikut ini.

3. Isikan data dummies (simulasi) yang ada pada masing-masing table yang sudah dibuat

4. Buatlah koneksi dengan menggunakan Heterogeneous Service antara database

pada table tersebut (di New York) di tambah.

7. Aturan trigger: Trigger tersebut harus dapat mengecek kolom flag yang terdapat

pada masing-masing table. Apabila kolom flag bernilai ‘tky’ maka data hanya akan di

update di server Tokyo. Sedangkan apabila kolom flag bernilai ‘lnd’ maka data hanya

akan di update secara otomatis menggunakan trigger di server London.

IV. HASIL PRATIKUM

(7)

Membuat tabel pada server oracle, membuat tabel stock

Membuat tabel supplier

(8)

2. Membuat tabel pada server mysql , tabel stock, supplier, dan employees

(9)

4. Setelah install ODBnya kemudian dilakukan konfigurasi seperti di bawah ini baik Mysql

maupun postgre Konfigurasi hs pada

…./hs/admin

Listener.ora dan tnsname.ora pada …../network/admin

(10)

5. Buat database link untuk koneksi ke mysql dank e postgre

Dengan script:

Create database link dblink_mysql using ‘tnsmysql’

Create database link kepostgres using ‘tnspostgre’

Test koneksinya, Jika muncul jendela seperti di bawah ini berarti konfigurasi database link telah

berhasil dan dapat digunakan.

(11)

Cek database link postgre dengan mengakses tabel employees

6. Trigger insert, update dan delete pada setiap tabel

Delete employees mysql

CREATE OR REPLACE TRIGGER "delete_employees" before delete on employees for each row WHEN

(old.flag='Tokyo') declare pragma autonomous_transaction; begin delete from employees@dblink_mysql where

"idemployees"=:old.idemployees; commit; end;

Delete employees postgre

CREATE OR REPLACE TRIGGER "delete_employeespos" after delete on employees for each row WHEN

(new.flag='London') declare pragma autonomous_transaction; begin delete from "employees"@kepostgres where

(12)

Delete stock mysql

CREATE OR REPLACE TRIGGER "delete_stock" before delete on stock for each row WHEN (old.flag='Tokyo')

declare pragma autonomous_transaction; begin delete from stock@dblink_mysql where "ids"=:old.ids; commit;

end;

Delete stock postgre

CREATE OR REPLACE TRIGGER "delete_stockpos" after delete on stock for each row WHEN

(new.flag='London') declare pragma autonomous_transaction; begin delete from "stock"@kepostgres where

(13)

Delete supplier mysql

CREATE OR REPLACE TRIGGER "delete_supplier" after delete on supplier for each row WHEN

(new.flag='Tokyo') declare pragma autonomous_transaction; begin delete from supplier@dblink_mysql where

"idsupplier"=:old.idsupplier; commit; end;

Delete supplier postgre

CREATE OR REPLACE TRIGGER "delete_supplierpos" after delete on supplier for each row WHEN

(new.flag='London') declare pragma autonomous_transaction; begin delete from "supplier"@kepostgres where

"idsupplier"=:old.idsupplier; commit; end;

Insert employees mysql

CREATE OR REPLACE TRIGGER "insert_employees" after insert on employees for each row WHEN

(new.flag='Tokyo') declare pragma autonomous_transaction; begin insert into employees@dblink_mysql values

(14)

Insert employees postgre

CREATE OR REPLACE TRIGGER "insert_employeespossss" after insert on employees for each row WHEN

(new.flag= 'London') declare pragma autonomous_transaction; begin insert into "employees"@kepostgres values

(:new.idemployees,:new.empname,:new.empposition,:new.date_entry,:new.flag); commit; end;

Insert stock mysql

CREATE OR REPLACE TRIGGER "insert_stock" after insert on stock for each row WHEN (new.flag='Tokyo')

declare pragma autonomous_transaction; begin insert into stock@dblink_mysql values

(15)

Insert stock posgre

CREATE OR REPLACE TRIGGER "insert_stockpos" after insert on stock for each row WHEN

(old.flag='London') declare pragma autonomous_transaction; begin insert into "stock"@kepostgres values

(:new.ids,:new.names,:new.types,:new.quantity,:new.flag,:new.date_entry); commit; end;

Insert supplier mysql

CREATE OR REPLACE TRIGGER "insert_supplier" after update on supplier for each row WHEN

(new.flag='Tokyo') declare pragma autonomous_transaction; begin insert into supplier@dblink_mysql values

(:new.idsupplier,:new.supplier_name,:new.supplier_location,:new.flag,:new.date_entry); commit; end;

Insert supplier postgre

CREATE OR REPLACE TRIGGER "insert_supplierpos" after insert on supplier for each row WHEN

(old.flag='London') declare pragma autonomous_transaction; begin insert into "supplier"@kepostgres values

(16)

Update employees mysql

CREATE OR REPLACE TRIGGER "update_employees" after update on employees for each row WHEN

(new.flag='Tokyo') declare pragma autonomous_transaction; begin update employees@dblink_mysql set

"empname"=:new.empname,"empposition"=:new.empposition where "idemployees"=:old.idemployees; commit;

end;

Update employees postgre

CREATE OR REPLACE TRIGGER "update_employeespos" after update on employees for each row WHEN

(new.flag='London') declare pragma autonomous_transaction; begin update "employees"@kepostgres set

"empname"=:new.empname,"empposition"=:new.empposition where "idemployees"=:old.idemployees; commit;

(17)

Update stock mysql

CREATE OR REPLACE TRIGGER "update_stock" after update on stock for each row WHEN (new.flag='Tokyo')

declare pragma autonomous_transaction; begin update stock@dblink_mysql set "names"=:new.names,

"types"=:new.types, "quantity"=:new.quantity where "ids"=:old.ids; commit; end;

Update stock postgre

CREATE OR REPLACE TRIGGER "update_stockpos" after update on stock for each row WHEN

(old.flag='London') declare pragma autonomous_transaction; begin update "stock"@kepostgres set

"names"=:new.names, "types"=:new.types, "quantity"=:new.quantity where "ids"=:old.ids; commit; end;

Update supplier mysql

CREATE OR REPLACE TRIGGER "update_supplier" after update on supplier for each row WHEN

(new.flag='Tokyo') declare pragma autonomous_transaction; begin update supplier@dblink_mysql set

"supplier_name"=:new.supplier_name, "supplier_location"=:new.supplier_location where

(18)

Update supplier postgre

CREATE OR REPLACE TRIGGER "update_supplierpost" after update on supplier for each row WHEN

(new.flag='London') declare pragma autonomous_transaction; begin update "supplier"@kepostgres set

"supplier_name"=:new.supplier_name,"supplier_Location"=:new.supplier_location where

"idsupplier"=:old.idsupplier; commit; end;

(19)
(20)

Referensi

Dokumen terkait

Mampu melakukan query pada beberapa table dengan menggunakan klausa JOIN yang benarC. Melakukan query pada beberapa table

Fragmentasi merupakan suatu proses pembagian data dari satu buah table ke dalam beberapa buah table yang berbeda, dimana didalam arisitektur database

Fragmentasi merupakan suatu proses pembagian data dari satu buah table ke dalam beberapa buah table yang berbeda, dimana didalam arisitektur database

Dalam proses sinkronisasi database, terdapat proses pengkopian data yang disimpan ke dalam suatu table dan skema yang berada pada database yang lain1. Dengan adanya

Query adalah suatu objek database yang dapat digunakan untuk menampilkan, menyunting atau menganalisa suatu data dengan memberikan baris-baris perintah tertentu..

Microsoft Access dapat menggunakan data yang disimpan dalam Microsoft Jet Database, Microsoft SQL Server, Oracle atau tipe lain asal kompatibel dengan ODBC (Open

Fragmentasi merupakan suatu proses pembagian data dari satu buah table ke dalam beberapa buah table yang berbeda, dimana didalam arisitektur database

Microsoft SQL adalah sebuah database relational yang dirancang untuk mendukung aplikasi dengan arsitektur Client/Server, di mana database terdapat pada komputer pusat