1 BAB 2 LANDASAN TEORI 1.1 Teori Umum -...

42
8 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum 1.1.1 Definisi Data dan Informasi MenurutWilliams-Sawyer (2011, p40),data adalah fakta-fakta dan gambar mentah yang akan diproses menjadi informasi. Sedangkan menurut Indrajani (2009, p2), data adalah fakta atau observasi mentah yang biasanya mengenai fenomena fisik atau transaksi bisnis. Sementara itu, menurut Williams-Sawyer (2011, p41), informasi adalah data yang telah dirangkum atau dimanipulasi dalam bentuk lain untuk tujuan pengambilan keputusan. Sedangkan menurut Rainer-Cegielski (2011, p11), informasi adalah data yang telah diolah sehingga memiliki arti dan nilai yang berguna bagi penerima. 1.1.2 Definisi Aplikasi Menurut Connolly-Begg (2010, p67), aplikasi adalah sebuah program komputer yang berinteraksi dengan database dengan melakukan pengaksesan data melalui DBMS. Sedangkan menurut Indrajani (2009, p5), aplikasi adalah program untuk menentukan aktivitas pemrosesan informasi yang dibutuhkan untuk penyelesaian tugas-tugas khusus dari pemakai komputer.

Transcript of 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum -...

Page 1: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

8

1 BAB 2

LANDASAN TEORI

1.1 Teori Umum

1.1.1 Definisi Data dan Informasi

MenurutWilliams-Sawyer (2011, p40),data adalah fakta-fakta dan gambar

mentah yang akan diproses menjadi informasi. Sedangkan menurut Indrajani (2009, p2),

data adalah fakta atau observasi mentah yang biasanya mengenai fenomena fisik atau

transaksi bisnis.

Sementara itu, menurut Williams-Sawyer (2011, p41), informasi adalah data

yang telah dirangkum atau dimanipulasi dalam bentuk lain untuk tujuan pengambilan

keputusan. Sedangkan menurut Rainer-Cegielski (2011, p11), informasi adalah data

yang telah diolah sehingga memiliki arti dan nilai yang berguna bagi penerima.

1.1.2 Definisi Aplikasi

Menurut Connolly-Begg (2010, p67), aplikasi adalah sebuah program komputer

yang berinteraksi dengan database dengan melakukan pengaksesan data melalui DBMS.

Sedangkan menurut Indrajani (2009, p5), aplikasi adalah program untuk menentukan

aktivitas pemrosesan informasi yang dibutuhkan untuk penyelesaian tugas-tugas khusus

dari pemakai komputer.

Page 2: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

 

 

1.1.3 Subprogram

Menurut Sebesta (2010, p411), subprogram adalah blok-blok pembangun dasar

dari program-program yang ada. Karakteristik dari subprogram, yaitu sebagai berikut:

• Setiap subprogram memiliki sebuah entry point.

• Program unit yang memanggil subprogram akan tertunda selama pemanggilan

subprogram, yang mengindikasikan bahwa hanya satu subprogram yang dapat

dieksekusi dalam waktu yang sama.

• Kontrol selalu dikembalikan ke pemanggil ketika eksekusi subprogram berhenti.

Terdapat 2 kategori dari subprogram, yaitu sebagai berikut:

o Procedure

Procedure merupakan kumpulan perintah yang melakukan perhitungan-

perhitungan terhadap parameter yang diterima.

o Function

Function secara struktur menyerupai procedure, namun secara semantik

menyerupai fungsi-fungsi matematis. Function dipanggil dengan menyebutkan

nama function beserta parameter aktual yang akan dikirim. Nilai yang dihasilkan

oleh sebuah function akan dikembalikan ke pemanggil dan menggantikan bagian

dari pemanggilan function itu sendiri.

1.1.4 Active Server Pages

Menurut Macdonald (2010, p7), Active Server Pages (ASP)adalah bahasa

pemrograman script-based yang membutuhkan pemahaman menyeluruh mengenai

HTML dan berorientasi objek model yang memungkinkan kita membuat sebuah

Page 3: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

10 

 

 

halaman web dalam membangun sebuah aplikasi dengan mudah. Sedangkan menurut

Connolly-Begg (2010, p1035), ASP adalah suatu model pemrograman yang

memungkinkan pembuatan halaman-halaman web yang dinamis dan interaktif pada web

server.

ASP dibangun pada file dengan ekstensi ‘.asp’, yang berisi kombinasi dari

komponen-komponen berikut:

• Teks

• HTML tags, dibatasi oleh simbol kurung lancip (< dan >)

• Perintah-perintah script dan ekspresi output, dibatasi oleh simbol <% dan %>

1.1.5 Sistem Database

1.1.5.1 Definisi Database

Definisi database menurut Connolly-Begg (2010, p65) adalah kumpulan data,

beserta deskripsinya, yang saling berhubungan secara logis dan dirancang untuk

memenuhi kebutuhan informasi oleh suatu organisasi. Sedangkan menurut Bryla-Loney

(2008, p4),database adalah kumpulan data dalam disk yang terdapat dalam satu atau

beberapa filepada sebuah database server yang mengumpulkan dan mengelolainformasi

yang saling berkaitan.

Empat elemen database menurut Whitten-Bentley (2007, p520-p522), yaitu

sebagai berikut:

1. Field

Field merupakan unit terkecil dari data, yang memiliki arti, yang disimpan di

dalam file atau database. Ada empat jenis field, yaitu sebagai berikut:

Page 4: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

11 

 

 

a. Primary key, adalah field yang nilainya mengidentifikasikan satu dan hanya

satu record di dalam sebuah file. Contohnya, CUSTOMER NUMBER

secara unik mengidentifikasi satu record CUSTOMER di dalam database.

Primary key dapat dibuat dengan mengkombinasikan dua atau lebih field,

disebut sebagai concatenated key.

b. Secondary key, merupakan identifier alternatif bagi database. Nilai dari

secondarykey dapat mengidentifikasi satu record tunggal (seperti

primarykey) atau himpunan record (misalnya semua ORDERS yang

memiliki ORDER STATUS berupa “back ordered”).

c. Foreign key, merupakan penunjuk ke record dari file lain di dalam

database. Foreign key memungkinkan database untuk menghubungkan

record-record dengan tipe tertentu ke record dengan tipe lain. Contohnya,

ORDER RECORD mengandung foreign key CUSTOMER NUMBER

untuk “mengidentifikasi” atau “menunjuk ke” record CUSTOMER yang

berhubungan dengan ORDER. Foreign di suatu tabel harus memiliki

pasangan primary key di tabel yang berhubungan. Dengan demikian,

CUSTOMER NUMBER di dalam tabel ORDERS harus memiliki pasangan

CUSTOMER NUMBER yang sama di dalam tabel CUSTOMERS agar

dapat terjadi relasi antara kedua tabel tersebut.

d. Descriptive field, adalah field lain (bukan key) yang menyimpan data bisnis.

Contohnya EMPLOYEE NAME, DATE HIRED, dan PAY RATE.

Page 5: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

12 

 

 

2. Record

Record adalah kumpulan field yang disusun dalam format yang sudah

ditentukan sebelumnya. Contohnya, suatu CUSTOMER RECORD

dideskripsikan oleh field-field berikut:

CUSTOMER (NUMBER, LAST-NAME, FIRST-NAME, ...)

3. File dan Tabel

Record-record sejenis disusun ke dalam kelompok yang disebut file. Dalam

sistem database, file seringkali disebut tabel. File adalah kumpulan dari semua

kejadian dari suatu struktur record. Tabel adalah database relasional yang

ekuivalen terhadap file.

1.1.5.2 Database Management System

Menurut Connolly-Begg (2010, p66),Database Management System, atau

seringkali disingkat DBMS, adalah sebuah perangkat lunak sistem yang memungkinkan

pemakai untuk mendefinisikan, membuat, mengelola, dan mengontrol akses ke

database.

Menurut Indrajani (2009, p12-p17), lima komponen penyusun DBMS, yaitu

sebagai berikut:

1. Perangkat Keras (Hardware)

Yang termasuk perangkat keras, antara lain personal computer, notebook,

mainframe, hingga jaringan komputer.

2. Perangkat lunak (Software)

Beberapa penggunaan software, antara lain sebagai berikut:

Page 6: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

13 

 

 

a. Software untuk sistem operasi PC biasa atauserver, contohnya Windows 7,

Windows XP, dan Linux.

b. Software untuk database, contohnya Microsoft SQL 2005, Oracle, dan

MySQL.

c. Software untuk pemrograman, contohnya Visual Basic, ASP.Net, C, dan

C++.

d. Software untuk mengatur jaringan, contohnya CISCO.

3. Data

Data merupakan komponen terpenting dalam DBMS karena data merupakan

penghubung antara komputer dan manusia.

4. Prosedur

Prosedur adalah instruksi yang menentukan perancangan dan pengaturan basis

data dimana pengguna sistem dan basis data memerlukan dokumentasi ini

untuk menggunakan sistem.

5. Orang

Peranan orang dapat dibedakan berdasarkan fungsinya, yaitu sebagai berikut:

a. Data dan Database Administrator, yaitu orang atau sekelompok orang yang

bertanggung jawab pada manajemen dan pengendalian basis data.

b. Databasedesigner, dibedakan menjadi perancang basis data secara logika

dan fisik.

c. Application developer atau programmer, berfungsi untuk mengembangkan

program-program aplikasi yang diperlukan dalam manajemen basis data.

Page 7: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

14 

 

 

d. End user, di antaranya adalah pemilik sistem (enterprise), para manajer,

supervisor, operator, dan pelanggan.

1.1.6 Structured Query Language (SQL)

Menurut Williams-Sawyer (2011, p514),Structured Query Language (SQL)

adalah sebuah bahasa query yang digunakan untuk mengakses dan memanipulasi data

dari sebuah database management system.

1.1.6.1 Komponen-komponen SQL

Dua komponen utama SQL, menurut Connolly-Begg (2010, p92), yaitu sebagai

berikut:

1. Data Definition Language (DDL), merupakan sebuah bahasa yang

memungkinkan DBA atau pemakai untuk mendeskripsikan dan membuat nama

entitas, atribut, dan relasi yang dibutuhkan untuk sebuah aplikasi.

2. Data Manipulation Language (DML), merupakan sebuah bahasa yang

menyediakan sebuah kumpulan operasi untuk mendukung operasi manipulasi

dasar terhadap data di dalam database. Operasi DML bisanya mengandung

hal-hal sebagai berikut:

• Menambahkan sebuah data baru ke dalam database

• Memodifikasi data yang sudah tersimpan dalam database

• Mengambil atau mengakses data yang sudah ada di database

• Menghapus data yang sudah ada di dalam database

Page 8: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

15 

 

 

1.1.6.2 SQL Function

Menurut Feuerstein dan Pribyl (2009, p571), SQL function adalah sebuah

modul yang mengembalikan data melalui klausa RETURN alih-alih menggunakan

argumen OUT atau IN OUT.

Menurut Alapati (2009, p1228), SQL function dapat dibagi menjadi beberapa

jenis, yaitu sebagai berikut:

1. Single-Row Function

Single-row function adalah perintah-perintah yang digunakan untuk melakukan

tugas seperti mengubah karakter huruf kecil menjadi huruf kapital atau

sebaliknya, atau mengubah potongan teks pada baris. Berikut ini adalah

beberapa single-row function yang digunakan dalam Oracle:

• LENGTH: berfungsi untuk mengembalikan panjang dari sebuah string.

• LOWER: berfungsi mengubah huruf kapital menjadi huruf kecil.

• UPPER: berfungsi mengubah hurufkecil menjadi huruf kapital.

• SUBSTR: berfungsi untuk mengembalikan potongan dari sebuah string.

• LPAD: berfungsi untuk mengembalikan sebuah string setelah ditambahkan

dengan karakter tertentu di awal string dengan panjang yang telah

ditentukan.

• RPAD: berfungsi untuk mengembalikan sebuah string setelah ditambahkan

dengan karakter tertentu di akhir string dengan panjang yang telah

ditentukan.

• TRIM: berfungsi untuk menghapus suatu karakter tertentu dari sebuah

string.

Page 9: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

16 

 

 

2. Aggregate Function

Aggregate functions digunakan untuk melakukan perhitungan seperti rata-rata

dan total dari suatu kolom di dalam query. Beberapa aggregate function yang

penting, antara lain sebagai berikut:

• MIN: berfungsi untuk mengembalikan nilai terkecil.

• MAX: berfungsi untuk mengembalikan nilai terbesar.

• AVG: berfungsi untuk mengembalikan nilai rata-rata.

• SUM: berfungsi untuk mengembalikan jumlah dari sebuah kolom.

• COUNT: berfungsi untuk mengembalikan banyaknya baris dari kolom-

kolom tertentu.

3. Number dan Date Function

Number function pada Oracle menerima nilai numerik dan juga

mengembalikan nilai-nilai numerik, sedangkan datefunction membantu kita

mengatur format tanggal dan waktu. Beberapa number dan date function yang

penting, antara lain sebagai berikut:

• ROUND: berfungsi untuk mengembalikan nilai hasil pembulatan ke tingkat

desimal tertentu.

• TRUNC: berfungsi untukmengembalikan tanggal hasil pemotongan ke

format tanggal tertentu.

• SYSDATE: berfungsi mengembalikan tanggal dan waktu sekarang.

• TO_DATE: berfungsi untukmengubah format tanggal atau mengkonversi

tipe data CHAR atau VARCHAR2 menjadi tipe data DATE.

• TO_CHAR: berfungsi untukmengkonversi tanggal menjadi karakter string.

Page 10: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

17 

 

 

• TO_NUMBER: berfungsi untuk mengkonversi karakter string menjadi

angka.

4. General dan Conditional Function

General dan conditional function memungkinkan kita untuk memperluas

kemampuan dari perintah SQL yang sederhana menjadi sesuatu yang

menyerupai konstruksi bahasa pemrograman tradisional. Sedangkan

conditional function membantu kita untuk menentukan di antara beberapa

pilihan. Beberapa general dan conditional function yang penting dalam Oracle,

antara lain sebagai berikut:

• NVL: berfungsi untuk mengganti nilai dari suatu kolom pada tabel dengan

nilai dengan suatu nilai tertentu apabila nilai kolom tersebut adalah null.

• COALESCE: memiliki fungsi yang hampir sama dengan NVL.

Perbedaannya adalah fungsi COALESCE akan mengembalikan nilai non-

null pertama daftar kolom yang ditentukan.

Contoh: SQL>COALESCE(region1,region2,region3,region4)

• DECODE: berfungsi untuk menyertakan fungsionalitas dasar IF-THEN ke

dalam SQL. Pada contoh di bawah, voter dengan nilai affiliation ‘D’ akan

diberi nama ‘Democrat’ dan voter dengan affiliation ‘R’ akan diberi nama

‘Republican’. Voter dengan affiliation selain itu akan didaftarkan sebagai

‘Independent’.

SQL> SELECT DECODE(affiliation, 'D', 'Democrat',

'R', 'Republican', 'Independent') FROM voters;

Page 11: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

18 

 

 

• CASE: menyediakan fungsionalitas yang sama seperti functionDECODE,

namun dengan cara yang lebih intuitif dan elegan, seperti pada contoh

berikut:

SQL> SELECT ename,

(CASE deptno

WHEN 10 THEN 'Accounting'

WHEN 20 THEN 'Research'

WHEN 30 THEN 'Sales'

ELSE 'Unknown'

END)

department

FROM employees;

1.1.6.3 Subquery

Menurut Watson-Ramklass-Bryla (2010, p516),subquery adalah query yang

berada di dalam sebuah perintah SELECT, INSERT, DELETE, atau di dalam subquery

lainnya. Subquery sering dianggap sebagai innerquery, dan perintah yang mengandung

subquery dinamakan outerquery. Bagian-bagian dalam sebuah query yang menggunakan

subquery yaitu:

• Dalam daftar SELECT yang digunakan untuk columnprojection

• Dalam klausa FROM

• Dalam klausa WHERE

• Dalam klausa HAVING

Page 12: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

19 

 

 

Menurut Watson-Ramklass-Bryla (2010, p517-p519), beberapa situasi di mana

kita memerlukan hasil dari suatu querysebagai input bagi query lainnya, antara lain

sebagai berikut:

1. Penggunaan hasil subquery untuk perbandingan

Tabel 1.1Contoh Penggunaan Subquery untuk Perbandingan

Pada contoh yang menggunakan subquerypada tabel 2.1, subquery digunakan

untuk menggantikan nilai ke dalam klausa WHERE dari parentquery. Nilai ini

merupakan nilai tunggal yang kemudian akan digunakan untuk perbandingan

dengan baris-baris yang dihasilkan parent query.

2. Menghasilkan tabel untuk bagian FROM dari sebuah query

Subquery juga dapat digunakan dalam klausa FROM, di mana subquery jenis

ini biasa dianggap sebagai inlineview.

Tabel 1.2Contoh Penggunaan Subqueryuntuk Menghasilkan Tabel

3. Menghasilkan nilai-nilai untuk projection

Bagian ketiga yang dapat dimasuki oleh subquery adalah bagian SELECT dari

sebuah query.

Tabel 1.3Contoh Penggunaan Subquery dalam Klausa SELECT

select avg(salary), country_id from (select salary, department_id, location_id, l.country_id from employee join departments d using (department_id) join locations l using (location_id)) group by country_id

select last_name from employees where salary < (select avg(salary) from employees);

Page 13: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

20 

 

 

4. Menghasilkan baris-baris untuk diberikan pada perintah DML

Subquery juga dapat digunakan pada perintah DML seperti pada contoh

berikut:

Tabel 1.4Contoh PenggunaanSubquerypada Perintah DML

1.1.6.4 Multi-Table Query

Menurut Connolly-Begg (2010, p158), operasi join adalah operasi SQL yang

mengkombinasikan informasi dari dua tabel dengan membentuk pasangan dari baris-

baris yang berkaitan dari dua tabel.

Apabila kita ingin memperoleh informasi dari beberapa tabel, pilihan yang

tersedia yaitu menggunakan subquery atau menggunakan operasi join. Apabila tabel

hasil berisi kolom-kolom dari tabel lain, maka diperlukan penggunaan join. Untuk

melakukan join, cukup menyertakan lebih dari satu nama tabel pada klausa FROM,

menggunakan tanda baca koma (,) sebagai pemisah, dan biasanya menyertakan klausa

WHERE untuk menentukan kolom-kolom join. Nama-nama tabel pada klausa FROM

juga dapat diwakilkan oleh suatu alias. Alias dipisahkan dari nama tabel dengan spasi.

insert into sales_hist select * from sales where date > sysdate-1;

update employees set salary=

(select avg(salary) from employees); delete from departments where department_id not in

(select department_id from employees);

select (select max(salary) from employees) * (select max(commission_pct) from employee)

from dual;

Page 14: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

21 

 

 

1.1.7 PL/SQL

Menurut Alapati (2009, p1241), PL/SQL merupakan singkatan dari Oracle’s

propietary extension to SQL. Salah satu keuntungan yang ditawarkan oleh PL/SQL

adalah bahwa Anda dapat menggunakan program unit yang disebut procedure atau

package di dalam database, sehingga meningkatkan performance dari penggunaan

kembali kode yang pernah ditulis.

1.1.7.1 Blok PL/SQL Dasar

Menurut Alapati (2009, p1241), blok PL/SQL adalah sebuah program yang

dapat dieksekusi. Suatu blok PL/SQL, baik yang terenkapsulasi dalam sebuah program

unit seperti procedure atau yang ditulis sebagai suatu anonymous block yang bebas,

tersusun dari struktur-struktur berikut:

a. DECLARE

DECLARE merupakan bagian opsional. Sebelum digunakan, variabel dan

konstanta pada blok PL/SQL harus dideklarasikan terlebih dahulu pada bagian

DECLARE. Variabel PL/SQL dapat berupa tipe built-in, seperti DATE,

NUMBER, VARCHAR2 atau CHAR, atau dapat berupa sebuah tipe komposit

seperti VARRAY.

b. BEGIN

BEGIN merupakan perintah wajib dalam blok PL/SQL. Semua perintah

PL/SQL harus dituliskan setelah perintah BEGIN. Terdapat beberapa

perbedaan dalam cara menangani perintah SELECT pada PL/SQL dengan

perintah SELECT biasa. Ketika menggunakan perintah SELECT dalam

Page 15: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

22 

 

 

PL/SQL, kita perlu menyimpan nilai-nilai yang dihasilkan ke dalam suatu

variabel, seperti yang ditunjukkan pada contoh berikut:

Tabel 1.5Contoh Blok PL/SQL

c. EXCEPTION

EXCEPTION merupakan perintah opsional untuk menetapkan mekanisme

penanganan error.

d. END

END merupakan perintah wajib yang mengindikasikan akhir dari blok

PL/SQL.

1.1.7.2 Struktur Kontrol dalam PL/SQL

Menurut Alapati (2009, p1243), jenis-jenis struktur kontrol dalam PL/SQL,

yaitu sebagai berikut:

a. Conditional control

Struktur conditional control utama dalam PL/SQL adalah perintah IF, yang

memungkinkan eksekusi perintah secara kondisional. Tiga bentuk penulisan

perintah IF yaitu: IF-THEN, IF-THEN-ELSE, dan IF-THEN-ELSEIF.

b. Konstruksi Looping

DECLARE name VARCHAR2(30);

BEGIN SELECT employee_name INTO name FROM employees WHERE emp_id=99999;

END; /

Page 16: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

23 

 

 

PL/SQL loop menyediakan cara untuk melakukan iterasi terhadap suatu code

tertentu sebanyak frekuensi yang ditentukan atau hingga suatu kondisi bernilai

benar atau bernilai salah. Jenis-jenis konstruksi looping, yaitu sebagai berikut:

• Simple Loop

Pada simple loop, sekumpulan perintah SQL ditulis di antara keyword

LOOP dan END LOOP. Perintah EXIT akan menghentikan iterasi.

Konstruksi simple loop digunakan apabila jumlah iterasi tidak dapat

ditentukan secara pasti.

• WHILE loop

Pada WHILE loop, sekumpulan perintah tertentu akan dieksekusi selama

kondisi tertentu bernilai benar. Pada konstruksi ini, kondisi dievaluasi

diluar loop. Kondisi akan dievaluasi setiap kali perintah di antara LOOP

dan END LOOP dieksekusi. Apabila kondisi sudah bernilai salah, maka

iterasi akan berhenti.

• FOR loop

Konstruksi FOR loop digunakan apabila jumlah eksekusi dapat ditentukan

secara pasti.

1.1.7.3 Subprogram PL/SQL

Menurut Moore (2009, p1-17), subprogram PL/SQL adalah blok PL/SQL yang

dapat dipanggil dengan menyertakan sekumpulan parameter. Subprogram PL/SQL dapat

berupa procedure ataupun function. Biasanya, procedure digunakan untuk melakukan

suatu tugas, sedangkan function digunakan untuk melakukan perhitungan sekaligus

Page 17: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

24 

 

 

mengembalikan sebuah nilai. Subprogram dapat dibuat pada tingkat schema, dalam

sebuah package, atau dalam suatu blok PL/SQL.

Subprogram yang dibuat pada tingkat schema dinamakan standalone stored

subprogram. Kita dapat membuat subprogram ini dengan perintah CREATE

PROCEDURE atau CREATE FUNCTION. Subprogram ini disimpan dalam database

hingga kita menghapusnya dengan perintah DROP PROCEDURE atau DROP

FUNCTION.

Subprogram yang dibuat dalam sebuah package dinamakan packaged

subprogram. Subprogram ini disimpan dalam database hingga kita menghapus package

dengan perintah DROP PACKAGE.

Subprogram yang dibuat dalam suatu blok PL/SQL dinamakan nested

subprogram. Kita dapat mendeklarasi dan mendefinisikannya pada saat yang sama, atau

kita dapat mendeklarasikannya terlebih dahulu (forward declaration) dan kemudian

mendefinisikannya kemudian dalam blok yang sama. Sebuah nested subprogram

disimpan dalam database hanya jika subprogram tersebut berada di dalam suatu

standalone atau packagedsubprogram.

Sebuah subprogram selalu memiliki nama dan bisa memiliki daftar parameter.

Seperti setiap blok PL/SQL, subprogram PL/SQL memiliki suatu bagian deklaratif yang

opsional, bagian executable yang wajib, dan suatu bagian exception-handling yang

opsional.

Page 18: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

25 

 

 

1.1.8 Definisi Cross Functional Flowchart

Menurut Fauzi (2011, p22),cross functional flowchart adalah sebuah langkah

kerja yang digunakan untuk membuat dan menunjukan hubungan antara proses bisnis

dengan organisasi atau unit fungsional seperti departemen. Sedangkan menurut Biafore

(2007, p324),cross functional flowchart adalah suatu diagram yang digunakan untuk

menunjukkan departemen-departemen atau area fungsional yang berkontribusi dalam

melakukan sebuah proses.

1.1.9 Definisi Teleservice

Menurut Oxford Dictionaries,The World’s Most Trusted Dictionaries, tele

merupakan suatu proses menuju atau berada pada tempat yang jauh, dan service adalah

sebuah aksi yang dilakukan untuk membantu orang lain. Sedangkan menurut Longman

Dictionary of Contemporary English, service adalah sebuah sistem untuk menyediakan

sesuatu untuk orang lain dalam sebuah Negara.

1.1.10 Definisi Telemarketing

Menurut Oxford Dictionaries,The World’s Most Trusted Dictionaries,

telemarketing merupakan pemasaran dari produk-produk atau pelayanan-pelayanan yang

dilakukan dengan memakai telepon terhadap customer yang berpotensi untuk

menggunakannya. Sedangkan menurut Longman Dictionary of Contemporary English,

telemarketing merupakan sebuah cara untuk menjual produk kepada orang-orang dimana

kita menelepon orang tersebut untuk mengetahui apakah orang tersebut ingin membeli

produk kita atau tidak.

Page 19: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

26 

 

 

1.2 Teori Khusus

1.2.1 Definisi Performance

Menurut Longman Dictionary of Contemporary English, performance adalah

seberapa baik atau buruk seseorang, perusahaan, dan lain-lain melakukan suatu

pekerjaan atau aktivitas tertentu. Sedangkan menurut Webster’s New World College

Dictionary, performance berarti operasi atau fungsionalitas yang biasanya berhubungan

dengan efektivitas.

1.2.2 Performance Tuning

1.2.2.1 Definisi Performance Tuning

Menurut Alapati (2009, p1041),performance tuning merupakan usaha untuk

meningkatkan kinerja atau memperbaiki kinerja yang memburuk. Sedangkan menurut

Chan (2008, pp1-2),performance tuning merupakan kegiatan mengidentifikasi masalah

yang paling signifikan dan melakukan perubahan-perubahan yang sesuai untuk

mengurangi atau mengeliminasi efek dari masalah yang bersangkutan.

1.2.2.2 Manfaat Performance Tuning

Menurut Connolly-Begg (2010, p508), manfaat-manfaat yang diperoleh dari

performance tuning, yaitu:

• Mengurangi kebutuhan untuk menambah perangkat keras baru.

• Dapat mengurangi ukuran dari konfigurasi perangkat keras sehingga dapat

menekan biaya dan jumlah perangkat keras yang diperlukan, dan dengan

demikian dapat menurunkan biaya maintenance bagi perangkat keras.

Page 20: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

27 

 

 

• Sistem yang berhasil dilakukan tuning akan menghasilkan response time yang

lebih cepat dan throughput yang lebih baik. Sebagai hasilnya, user maupun

organisasi menjadi lebih produktif.

• Response time yang lebih cepat dapat meningkatkan moral dari staf.

• Response time yang lebih cepat dapat meningkatkan kepuasan pelanggan.

1.2.2.3 Pendekatan Performance Tuning

Menurut Chan (2008, pp1-1), terdapat tiga pendekatan dalam melakukan

performance tuningpada Oracledatabase, yaitu sebagai berikut:

1. Performance planning

Performance planning merupakan peningkatan performance dari Oracle

database dengan memeriksa desain aplikasi dan menggunakan statistik untuk

memantau performance aplikasi.

2. Instance tuning

Instance tuning merupakan pendekatan performance tuning dengan

memperbaiki pengaturan dari Oracle instance, seperti konfigurasi memori,

konfigurasi I/O, penggunaan statistik performance otomatis, penggunaan

diagnosa performance otomatis, dan penggunaan performance view.

3. SQL tuning

SQL tuningdilakukan dengan mencari cara yang lebih efisien untuk memproses

workload yang sama. Dalam SQL tuning, dimungkinkan untuk mengubah

execution planpada perintah yang ada tanpa mengubah fungsionalitas yang ada

untuk mengurangi pemakaian resource.

Page 21: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

28 

 

 

1.2.3 Definisi Response Time

Menurut Alapati (2009, p1162),response time adalah waktu yang dibutuhkan

oleh Oracle untuk mengeksekusi sebuah query, ditambah waktu yang diperlukan proses

tersebut untuk menunggu resource, seperti data buffer. Ruang lingkup utama yang

menjadi fokus dalam melakukan performance tuning adalah mengatasi permasalahan

pada database yang berkontribusi terhadap responsetime yang tinggi.

1.2.4 SQL Tuning

Menurut Bryla-Loney (2008, p247), kunci dari melakukan SQL tuning adalah

meminimalisir pencarian path yang digunakan database untuk mencari data.

Menurut Chan (2008, pp11-5 – pp11-16), langkah-langkah dalam melakukan

SQL tuning, antara lain sebagai berikut:

1. Memeriksa execution plan

Langkah ini diperlukan untuk memeriksa apakah access path yang digunakan

sudah optimal. Ketika memeriksa execution plan, beberapa hal yang perlu

diperhatikan, antara lain sebagai berikut:

• Driving table merupakan tabel yang memiliki filter paling selektif.

• View digunakan secara efisien. Perhatikan daftar SELECT untuk melihat

apakah akses terhadap view diperlukan.

• Apakah terdapat Cartesian product yang tidak diinginkan.

• Apakah setiap tabel diakses secara efisien

Perhatikan predikat dalam perintah SQL dan jumlah baris di dalam tabel.

Perhatikan langkah-langkah yang “mencurigakan”, seperti full table scan pada

Page 22: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

29 

 

 

tabel dengan jumlah baris yang banyak, dengan predikat pada klausa where.

Tentukan mengapa index tidak digunakan pada predikat yang selektif tersebut.

Apabila kondisi-kondisi seperti itu belum optimal, maka pertimbangkan untuk

melakukan restrukturisasi perintah SQL atau mengatur ulang index yang ada.

2. Melakukan restrukturisasi perintah SQL

Seringkali, menulis kembali perintah SQL yang tidak efisien jauh lebih mudah

dibandingkan memodifikasinya. Apabila Anda memahami tujuan dari suatu

perintah SQL, maka Anda bisa dengan cepat dan mudah menulis sebuah perintah

baru yang memenuhi persyaratan yang ditentukan.

3. Melakukan restrukturisasi index

Beberapa hal yang dapat dilakukan, antara lain sebagai berikut:

• Menghapus index yang tidak selektif untuk mempercepat DML

• Mempertimbangkan untuk menata ulang kolom-kolom dalam concatenated

index yang ada

• Menambahkan kolom kepada index untuk meningkatkan selektivitas

4. Memodifikasi atau menonaktifkan trigger

Penggunaan trigger dapat menghabiskan sumber daya sistem. Apabila

penggunaan trigger terlalu banyak, performance bisa menjadi lebih buruk

sehingga Anda perlu melakukan modifikasi atau menonaktifkan beberapa trigger

yang ada.

5. Melakukan restrukturisasi data

Setelah melakukan restrukturisasi index dan perintah SQL, Anda dapat

mempertimbangkan untuk merestrukturisasi data.

Page 23: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

30 

 

 

• Periksa kembali perancangan data Anda. Lakukan perubahan terhadap

perancangan sistem jika hal tersebut dapat meningkatkan performance.

• Pertimbangkan partitioning, apabila diperlukan.

1.2.4.1 Indexing

1.2.4.1.1 PengertianIndex

Menurut Connolly-Begg (2010, p242),index adalah sebuah struktur yang

menyediakan akses ke baris-baris dari sebuah tabel berdasarkan nilai dari satu atau lebih

kolom. Sedangkan menurut Bryla-Loney (2008, p17), index adalah sebuah struktur yang

memungkinkan kita untuk mengakses data lebih cepat dalam sebuah tabel ketika suatu

himpunan bagian dari kumpulan baris yang ada akan diambil atau diakses dalam tabel

tersebut. Sebuah index menyimpan nilai dari kolom-kolom yang di-index, bersama

dengan physical RowID dari baris yang memiliki nilai dari index tersebut. Apabila

terdapat kecocokan antara nilai pencarian dengan nilai pada index, RowID pada index

akan menunjuk ke suatu lokasi baris di dalam tabel.

1.2.4.1.2 Jenis-jenis Index

Menurut Alapati (2009, p297),index pada Oracle database dibagi menjadi

tiga jenis, yaitu sebagai berikut:

• Unique dan nonunique index

Unique index adalah index yang berdasarkan pada kolom yang nilainya unik.

Ketika kita menempatkan unique constraint pada suatu kolom, Oracle akan

secara oromatis membuatkan unique index pada kolom tersebut.

• Primary dan secondary index

Page 24: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

31 

 

 

Primary index adalah unique index pada suatu tabel yang harus selalu

menyimpan suatu nilai, sehingga tidak boleh bernilai NULL. Secondary

index adalah index lain pada tabel yang sama yang tidak harus bersifat unik.

• Composite index

Composite index, atau dikenal juga sebagai concatenated index, adalah index

yang terdiri dari dua kolom atau lebih dari tabel yang sama. Composite index

sangat berguna dalam meningkatkan pemilihan predikat dari klausa WHERE.

Biasanya, jika penggunaan index individual menghasilkan pemilihan yang

kurang baik, maka penggunaan composite index akan meningkatkan

selektivitas.

1.2.4.1.3 Panduan dalam Membuat Index

Menurut Alapati (2009, p297), terdapat beberapa hal yang perlu diperhatikan

dalam membuat index yang efisien pada tabel-tabel Oracle, antara lain sebagai berikut:

• Gunakan index hanya jika Anda perlu mengakses tidak lebih dari 4 atau 5

persen data dari sebuah tabel. Perlu diingat bahwa penggunaan index untuk

mengakses data membutuhkan dua kali pembacaan, yaitu pembacaan index

diikuti oleh pembacaan tabel.

• Hindari penggunaan index pada tabel-tabel yang relatif kecil. Full table scan

sudah cukup bagi tabel-tabel kecil. Tidak perlu menyimpan data tabel dan

index untuk tabel-tabel kecil.

• Buat primary key pada semua tabel. Apabila Anda menetapkan suatu kolom

sebagai primary key, Oracle akan secara otomatis membuatkan index pada

kolom tersebut.

Page 25: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

32 

 

 

• Buat index pada kolom-kolom yang terlibat dalam operasi multitable join.

• Buat index pada kolom-kolom yang sering digunakan dalam klausa WHERE.

• Kolom-kolom yang terdiri dari string yang panjang biasanya bukan kandidat

yang baik untuk dibuatkan index.

• Buat index pada tabel-tabel dengan selektivitas yang tinggi. Artinya, buat

index hanya pada tabel-tabel yang tidak memiliki banyak data dengan nilai

yang sama.

• Usahakan agar jumlah index sesedikit mungkin.

• Composite index dapat digunakan ketika nilai dari satu kolom tunggal tidak

cukup unik.

1.2.4.1.4 Beberapa Hal yang Menyebabkan Index Tidak Digunakan

Menurut Niemec (2007, p40), terdapat beberapa situasi di mana logika dari

klausa WHERE akan membuat Oracle tidak menggunakan index yang ada, antara lain

sebagai berikut:

a. Penggunaan operator NOT EQUAL (<> dan !=)

Index hanya dapat digunakan untuk mencari data yang memang ada dalam

sebuah tabel. Setiap kali operator-operator not equal digunakan dalam klausa

WHERE, maka index pada kolom-kolom bersangkutan tidak dapat

digunakan.

b. Penggunaan IS NULL atau IS NOT NULL

Ketika kita menggunakan IS NULL atau IS NOT NULL dalam klausa where,

index pada kolom yang bersangkutan tidak akan digunakan karena nilai

NULL tidak dikenali. Tidak ada nilai pada database yang sama dengan

Page 26: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

33 

 

 

sebuah nilai NULL, bahkan NULL sendiri tidak dapat dibandingkan dengan

nilai NULL lain. Untuk mencegah nilai-nilai NULL masuk ke sebuah kolom,

kita dapat menggunakan NOT NULL ketika membuat atau melakukan alter

pada tabel.

c. Penggunaan function

Selain function-based index, penggunaan fungsi-fungsi pada kolom-kolom

yang memiliki index pada klausa WHERE dalam sebuah perintah SQL akan

menyebabkan optimizer mengabaikan index yang ada. Beberapa fungsi yang

umum digunakan yaitu TRIM, TRUNC, UPPER, LOWER, SUBSTR,

TO_DATE, TO_CHAR, and INSTR. Semua fungsi ini akan menyebabkan

nilai dari kolom bersangkutan berubah. Oleh karena itu, index dan kolom-

kolom yang ditunjuk tidak akan digunakan.

1.2.4.2 Partitioning

1.2.4.2.1 Pengertian Partitioning

Menurut Oracle Corporation (2011, pp1-1),partitioning adalah pemecahan

tabel dan index yang berukuran besar ke dalam kelompok-kelompok yang lebih kecil,

yang sifatnya transparan terhadap aplikasi. Sedangkan menurut Bryla-Loney (2008,

p266),partitioning adalah pembagian data dari suatu tabel yang berukuran besar ke

dalam beberapa subtabel.

Menurut Alapati (2009, p1076), tabel yang dipartisi biasanya menghasilkan

peningkatan yang besar bagi performance, dan tabel-tabel yang dipartisi lebih mudah

dikelola. Dengan mempartisi suatu tabel menjadi beberapa subpartisi, kita pada dasarnya

telah membatasi jumlah data yang perlu diperiksa untuk memenuhi query yang kita

Page 27: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

34 

 

 

bangun. Apabila terdapat tabel-tabel berukuran besar, dengan jumlah record di atas 10

juta, pertimbangkan untuk mempartisi tabel-tabel tersebut.

1.2.4.2.2 Partitioning Key

Menurut Oracle Corporation (2011,pp2-2),partitioning key adalah satu atau

lebih kolom yang menentukan pada partisi mana setiap baris dalam tabel

disimpan.Oracle secara otomatis mengarahkan operasi insert, update, dan delete ke

partisi yang tepat dengan partitioning key.

1.2.4.2.3 Pengaruh Partitioning Terhadap Performance

Menurut Oracle Corporation (2011, pp2-5),partitioning memberikan

keuntungan bagi performance dengan karakteristik sebagai berikut:

• Partition Pruning

Partition pruning merupakan sarana yang paling sederhana sekaligus paling

penting dalam meningkatkan performance dengan menggunakan

partitioning. Partition pruning seringkali dapat meningkatkan kinerja query

hingga beberapa kali lipat. Sebagai contoh, misalkan terdapat suatu aplikasi

dengan sebuah tabel Orders yang berisi data-data pemesanan historikal, dan

tabel ini sudah dipartisi berdasarkan minggu. Dengan demikian suatu query

yang mengakses data pemesanan dalam satu minggu cukup mengakses satu

partisi dari tabel Orders.

• Partition Wise-Joins

Partitioning juga dapat meningkatkan performance dari multi-table joins

dengan menggunakan teknik yang dikenal dengan partition-wise joins.

Partition wise-joins dapat diaplikasikan ketika dua tabel dilakukan operasi

Page 28: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

35 

 

 

join dan kedua tabel dipartisi pada join key. Partition-wise joins memecah

suatu join yang besar menjadi beberapa join yang lebih kecil antara masing-

masing partisi sehingga waktu join secara keseluruhan menjadi lebih sedikit.

Namun, menurut Alapati (2009, p281), meskipun tabel-tabel yang dipartisi

pada umumnya akan memperbaiki performance dari tabel-tabel berukuran besar,

partitioning bukan jalan keluar bagi masalah-masalah perancangan dan penulisan

aplikasi yang buruk. Selain itu, partitioning juga dapat menghasilkan suatu cost

tambahan dalam hal usaha pengelolaan partisi dan index-nya.

1.2.4.2.4 Strategi Partitioning

Menurut Oracle Corporation (2011, pp2-6 – pp2-9), Oracle partitioning

menawarkan tiga metode dasar dalam distribusi data sebagai strategi partitioning dasar

yang mengontrol bagaimana data ditempatkan ke dalam partisi-partisi individual, yaitu

range, hash, dan list.

Dengan metode-metode distribusi data tersebut, strategi partitioning dapat

dibagi ke dalam dua kategori, yaitu sebagai berikut:

1. Single-Level Partitioning

Pada single-level partitioning, suatu tabel didefinisikan dengan menetapkan

salah satu dari metode distribusi data berikut, dengan satu atau lebih kolom

sebagai partitioningkey:

a. Range partitioning

Range partitioning memetakan data ke partisi berdasarkan rentang dari

nilai-nilai partitioning key yang Anda tentukan untuk setiap partisi.

Page 29: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

36 

 

 

Contohnya, pada suatu tabel dengan kolom Tanggal sebagai partitioning

key, partisi January-2010 akan berisi baris-baris dengan nilai partitioning

key dari 01-Jan-2010 hingga 31-Jan-2010.

Setiap partisi memiliki klausa VALUES LESS THAN, yang menetapkan

batas atas untuk partisi. Literal MAXVALUE dapat didefinisikan untuk

partisi tertinggi. MAXVALUE merepresentasikan suatu nilai tak terbatas

bagi nilai-nilai yang memungkinankan untuk partitioning key, termasuk

nilai NULL.

b. List partitioning

List partitioning memungkinkan Anda untuk mengontrol secara eksplisit

bagaimana baris-baris dipetakan ke dalam partisi dengan menetapkan

suatu daftar nilai-nilai diskrit untuk partitioning key dalam deskripsi

setiap partisi. Contohnya, pada suatu tabel dengan kolom Region sebagai

partitioning key, partisi East Sales Region akan berisi nilai-nilai New

York, Virginia, dan Florida.

Partisi DEFAULT memungkinkan Anda untuk tidak menetapkan semua

nilai-nilai yang memungkinkan pada suatu list-partitioned table dengan

menggunakan partisi default, sehingga semua baris yang tidak terpetakan

ke partisi lain tidak menyebabkan terjadinya error.

c. Hash partitioning

Hash partitioning memerakan data ke partisi berdasarkan algoritma hash

yang diterapkan oleh Oracle kepada partitioning key yang Anda tetapkan.

Page 30: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

37 

 

 

Algoritma hash mendistribusikan baris-baris dalam partisi secara merata,

sehingga partisi memiliki ukuran yang kurang lebih sama.

Gambar 1.1List, Range, dan HashPartitioning

2. Compositepartitioning

Composite partitioning merupakan kombinasi dari metode-metode dasar

distribusi data. Suatu tabel dipartisi dengan salah satu metode distribusi data.

Masing-masing partisi tersebut kemudian dibagi lagi ke dalam beberapa

subpartisi dengan metode distribusi data kedua.

Gambar 1.2Composite Partitioning

1.2.4.3 Efisiensi Eksekusi SQL

Menurut Chan (2008, pp2-13), salah satu hal yang perlu diperhatikan untuk

mendukung efisiensi eksekusi SQL, yaitu meminimalisasi aktivitas parsing pada sistem.

Page 31: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

38 

 

 

Parsing merupakan proses menginterpretasikan suatu perintah SQL dan membangun

suatu execution plan untuk perintah SQL tersebut. Proses ini terdiri dari banyak fase,

mencakup pemeriksaan sintaks, pemeriksaan keamanan, pembuatan execution plan, dan

pemuatan struktur ke dalam shared pool. Terdapat dua jenis operasi parsing, yaitu:

• Hard parsing

Suatu perintah SQL dijalankan untuk pertama kali, dan tidak ditemukan

kecocokan dengan struktur SQL lain di dalam shared pool. Operasi hard

parsing akan menghabiskan sangat banyak resource karena semua operasi

yang terlibat dalam parsing akan dijalankan, sehingga akan meningkatkan

response time dari query.

• Soft parsing

Suatu perintah SQL dijalankan untuk pertama kali, dan ditemukan kecocokan

dengan struktur SQL lain di dalam shared pool. Kecocokan ini bisa merupakan

hasil dari eksekusi sebelumnya oleh user lain. Perintah SQL digunakan

kembali, yang memberikan keuntungan bagi performance.

Oleh karena parsing harus diusahakan agar seminimimal mungkin, maka

pengembang aplikasi harus merancang aplikasinya agar parsing untuk

perintah-perintah SQL cukup dilakukan satu kali dan dapat dieksekusi berkali-

kali. Pengembang aplikasi juga harus memastikan agar perintah SQL di dalam

shared pool dapat digunakan berkali-kali. Untuk melakukannya, gunakan bind

variable untuk merepresentasikan bagian dari query yang berubah-ubah dalam

setiap eksekusi. Apabila bind variable tidak digunakan, maka perintah SQL

Page 32: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

39 

 

 

kemungkinan besar tidak akan pernah digunakan kembali setelah dilakukan

parsing.

Menurut Day (2007, pp3-5),bind variable merupakan variabel yang

memungkinkan kita untuk menggunakan perintah SQL beberapa kali dengan

nilai-nilai yang berbeda, sehingga mengurangi frekuensi parse untuk suatu

perintah SQL. Jadi, untuk memastikan agar SQL digunakan kembali, gunakan

bind variable dan hindari menggunakan literal dalam perintah SQL.

1.2.4.4 Restrukturisasi SQL

Menurut Chan (2008, pp11-7), restrukturisasi SQL adalah penulisan ulang

suatu perintah SQL yang tidak efisien ke dalam bentuk lain yang lebih optimal. Menurut

Chan (2008, pp11-7), beberapa restrukturisasi SQL yang umum dilakukan, antara lain:

1. Menulis predikat menggunakan AND dan =

Untuk meningkatkan efisiensi SQL, sebaiknya gunakan equijoin. Perintah-

perintah yang melakukan equijoin pada kolom yang tidak dikenakan SQL

function akan lebih mudah untuk dilakukan tuning.

2. Menghindari penggunaan SQL function untuk kolom pada klausa WHERE

Penggunaan SQL function dengan suatu kolom tertentu sebagai parameternya

akan menyebabkan optimizer mengabaikan penggunaan index pada kolom

bersangkutan.

Hindari juga penggunaan konversi implisit. Sebagai contoh, misalkan kita

ingin menggunakan index pada kolom charcol dengan tipe data VARCHAR2,

namun klausa WHERE yang digunakan adalah seperti pada contoh berikut:

AND charcol= numexpr

Page 33: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

40 

 

 

Di mana numexpr merupakan ekspresi dengan tipe data NUMBER, maka

Oracle akan menerjemahkan ekspresi tersebut menjadi:

AND TO_NUMBER(charcol)= numexpr

3. Menulis perintah SQL yang terpisah untuk tugas-tugas yang spesifik

SQL bukan bahasa prosedural. Oleh karena itu, penggunaan sebuah SQL untuk

melakukan banyak tugas yang berbeda-beda memberikan hasil yang tidak

optimal. Apabila kita ingin menggunakan SQL untuk melakukan beberapa

tugas, maka hindari menggunakan satu perintah untuk melakukan banyak

tugas, melainkan pisahkan tugas-tugas tersebut ke dalam beberapa perintah

yang berbeda.

4. Penggunaan EXIST dan IN untuk subquery

Dalam kondisi-kondisi tertentu, penggunaan IN akan lebih baik dibandingkan

EXISTS. Apabila predikat yang selektif berada pada subquery, maka sebaiknya

gunakan IN. Apabila predikat yang selektif berada pada parent query, maka

gunakan EXISTS.

Pada situasi tertentu, Oracle dapat menulis ulang suatu subquery dengan klausa

IN untuk memanfaatkan selektivitas yang ditetapkan di dalam subquery.

Sebaliknya, penggunaan EXISTS bermanfaat apabila sebagian besar filter yang

selekif berada pada parent query. Hal ini memungkinkan predikat-predikat

selektif pada parent query diaplikasikan terlebih dahulu sebelum menyaring

baris-baris berdasarkan kriteria EXISTS.

5. Subquery unnesting

Page 34: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

41 

 

 

Seringkali, suatu query yang mengandung subquery yang kompleks dapat

ditingkatkan kinerjanya dengan mengubah subquery menjadi join.

Sementara itu, menurut Alapati (2009, p1066-p1067), selain menghindari

penggunaan SQL functions pada klausa WHERE dan penggunaan EXISTS dan IN untuk

subquery, beberapa panduan lain dalam melakukan restrukturisasi SQL, antara lain

sebagai berikut:

1. Menggunakan join yang tepat

Beberapa hal yang perlu diperhatikan dalam melakukan joining tabel secara

lebih efektif, antara lain:

• Menggunakan equijoin akan menghasilkan query yang lebih efisien. Jadi,

usahakan untuk menggunakan equijoin apabila memungkinkan.

• Melakukan operasi-operasi filtering lebih awal akan mengurangi jumlah

baris untuk dilakukan join pada langkah selanjutnya. Gunakan tabel yang

memiliki filter yang paling selektif sebagai driving table karena dengan

demikian, jumlah baris yang diteruskan ke langkah berikutnya akan lebih

sedikit.

• Lakukan join dengan urutan tabel dari yang menghasilkan baris paling

sedikit bagi langkah parent-nya.

2. Menggunakan perintah CASE

Dalam melakukan kalkulasi beberapa agregat dari tabel yang sama, hindari

menulis query yang terpisah untuk masing-masing agregat. Dengan query yang

terpisah, Oracle harus membaca tabel secara keseluruhan untuk setiap query.

Akan lebih efisien apabila Anda menggunakan perintah CASE karena perintah

Page 35: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

42 

 

 

ini memungkinkan Anda untuk mengkomputasi beberapa agregat dari tabel

yang bersangkutan dengan hanya sekali pembacaan pada tabel.

3. Meminimalisasi pengaksesan tabel

Salah satu moto utama dalam penulisan query adalah “batasi jumlah

pengaksesan data sesedikit mungkin”. Jadi, hindari SQL yang berulang kali

mengakses suatu tabel untuk kolom yang berbeda-beda.

1.2.5 Explain Plan

Menurut Bryla-Loney (2008, p250),explain plan adalah sebuah perintah yang

akan mengevaluasi execution path untuk sebuah query dan akan menempatkan hasil

evaluasinya ke dalam sebuah table di dalam database yang bernama PLAN_TABLE.

Sedangkan menurut Alapati (2009, p1090),explain plan adalah sebuah tool yang

membantu kita dalam melakukan SQL tuning denganmenyediakan execution plan dari

sebuah SQL statement. Menurut Smith (2010, p4), dalam white paper yang berjudul A

Toad for Oracle, setiap langkah plan memiliki hal-hal berikut:

1. Nomor langkah plan

2. Metode akses yang digunakan

Setiap execution plan step yang berbeda-beda merepresentasikan metode

pengaksesan data yang juga berbeda-beda. Metode pengaksesan data yang ada

tidak dapat secara langsung dikatakan baik atau buruk. Jika terdapat sebuah

index, maka penggunaan index akan mempercepat pengaksesan data daripada

melakukan full table scan. Meskipun demikian, jika memang tujuan sebuah

Page 36: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

43 

 

 

query adalah melakukan pembacaan semua data dari sebuah tabel, maka

penggunaan index menjadi kurang efisien.

3. Cost

Cost merupakan sebuah ukuranrelatif yang akan dihasilkanoleh Oracle untuk

merepresentasikan jumlah work yang diperlukan untuk menjalankan sebuah

langkah spesifik. Jumlah cost dari semua langkah yang ada merepresentasikan

cost yang dibutuhkan untuk mengeksekusi sebuah statement secara keseluruhan.

Pada umumnya, sebuah plan dengan cost yang lebih rendah merepresentasikan

suatu kinerja yang lebih baik daripada sebuah plan dengan cost yang lebih tinggi.

Meskipun demikian, sering juga ditemukan bahwa plan yang memiliki cost yang

tinggi memiliki kinerja yanglebih baik daripada plan dengan cost yang rendah.

Menurut Alapati (2009, p1093), hal-hal yang perlu diingat dalam membaca

explain plan, yaitu sebagai berikut:

• Setiap langkah dalam plan mengembalikan hasil dalam bentuk sekumpulan baris

kepada langkah parent.

• Bacalah plan dari dalam ke luar, dimulai dari baris yang memiliki indentasi

paling dalam.

• Apabila dua operasi berada pada level yang sama dalam hal indentasi, baca yang

paling atas terlebih dahulu.

1.2.6 SQL Trace dan TKPROF

Menurut Alapati (2009, p1099), SQL trace adalah utilitas Oracle yang

membantu kita dalam menelusuri perintah-perintah SQL. Sedangkan, TKPROF adalah

Page 37: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

44 

 

 

utilitas Oracle yang membantu kita untuk mengubah trace file yang dihasilkan oleh SQL

trace ke dalam bentuk yang dapat dibaca. Apabila EXPLAIN PLAN menampilkan

execution plan yang diharapkan, maka SQL trace memberikan hasil eksekusi aktual dari

sebuah query SQL. Sementara itu, menurut Chan (2008, pp20-8), TKPROFadalah suatu

tool yang memungkinkan kita untuk secara akurat mengakses efisiensi dari SQL

statements yang dijalankan oleh sebuah aplikasi.

1.2.6.1 Mengaktifkan SQL Trace

Menurut Alapati (2009, p1101), untuk menggunakan SQL Trace dan

TKPROF, hal pertama yang harus dilakukan adalah mengaktifkan fasilitas trace. Kita

dapat melakukannya pada level instance dengan menggunakan statement ALTER

SESSION atau DBMS_SESSION package. Berikut adalah statement yang digunakan

untuk mengaktifkan SQL trace:

SQL>ALTER SESSION SET sql_trace = true;

1.2.6.2 Menginterpretasikan Trace File dengan TKPROF

Menurut Alapati (2009, p1102), setelah kita telah mengaktifkan tracing untuk

sebuah session, semua perintah SQL yang dijalankan pada session tersebut akan di-trace

dan output berupa trace file akan disimpan dalam direktori (UDUMP). Nama file

memiliki format db_name_ora_nnnnn.trc, dimana nnnnn biasanya merupakan 5 digit

angka.

Utilitas TKPROF menggunakan trace files sebagai input besertadengan

parameter yang kita tentukan. Berikut ini adalah parameter TKPROF yang dapat kita

gunakan untuk mengatur format yang sesuai dengan keinginan kita:

1. FILENAME, yaitu trace file yang dibuat melalui SQL Trace.

Page 38: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

45 

 

 

2. EXPLAIN, yaitu EXPLAIN PLAN untuk SQL statements.

3. RECORD, membuat sebuah SQL script dengan semua perintah SQL non-

rekursif.

4. WAITS, merekam summary wait events.

5. SORT, menunjukkan data yang telah terurut berdasarkan item tertentu, seperti

PRSCPU (CPU time parsing), PRSELA (elapsed time parsing).

6. TABLE, mendefinisikan nama tabel dimana execution plans disimpan oleh

utilitas TKPROF.

7. SYS, melakukan enable dan disable perintah SQL yang dijalankan oleh SYS.

8. PRINT, hanya menunjukkan daftar sejumlah perintah SQL.

9. INSERT, membuat script yang menyimpan informasi trace dalam database.

Contoh: $tkprof finance_ora_16340.trc test.txt sys=no

explain=y

File test.txt berisi output dari SQL trace yang telah diformat dengan

menggunakan utilitas TKPROF.

1.2.6.3 Memeriksa File Output

Menurut Alapati (2009, p1103-p1104), setiap laporan TKPROF berisi

informasi untuk setiap perintah SQL yang dijalankan selama session di-trace. Informasi-

informasi tersebut, yaitu sebagai berikut:

1. CPU, merupakan total waktu penggunaan CPU dan dinyatakan dalam detik.

2. Elapsed,merupakan total waktu yang digunakan yang dinyatakan dalam detik.

3. Disk,menunjukkan total physical reads.

4. Query,menunjukkan jumlah consistent buffer gets.

Page 39: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

46 

 

 

5. Current,menunjukkan jumlah database block gets.

6. Rows,menunjukkan jumlah baris data yang diproses.

1.2.7 Toad® for Oracle

Menurut Indrajani (2009, p405), Toad® for Oracle adalah suatu program 3rd

party yang berfungsi untuk menjembatani rumitnya sintaks SQL menjadi tampilan GUI

(Graphical User Interface) yang diharapkan akan mempermudah proses transaksi

dengan Oracle database.

Toad®for Oracle memberikan banyak kemudahan dan memaksimalkan

produktivitas seorang DBA,business analyst, pengembang aplikasi, serta pengembang

PL/SQL. Toad®for Oracle meningkatkan produktivitas dengan semua fungsionalitas

yang kita butuhkan dalam membuat dan menjalankan queries, memodifikasi objek

database dan mengembangkan serta melakukan debugging terhadap SQL dan PL/SQL

code. Pekerjaan sehari-sehari seperti eksporting atau importing data, membandingkan

skema dan pembaharuan statistik, akan dipermudah dan dipercepat jika menggunakan

Toad®for Oracle.

Pada Toad®for Oracle, terdapat tab Query Viewer yang menampilkan query

yang sedang dijalankan, database mana yang diakses oleh query tersebut, serta waktu

eksekusi dari query.

1.2.8 SQL*Plus

Menurut Feuerstein dan Pribyl (2009, p25), SQL*Plus adalah utilitas yang

menyediakan sebuah command-line interpreter untuk SQL dan PL/SQL yang bertugas

Page 40: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

47 

 

 

untuk menerima statement dari pemakai dan mengirimnya ke Oracle server dan

menampilkan hasilnya. Sedangkan menurut Alapati (2009, p97), SQL*Plus adalah

utilitas yang umum digunakan untuk melakukan koneksi dan bekerja dengan Oracle

database. Setelah terdapat perangkat lunak SQL*Plus pada mesin client atau server, kita

dapat melakukan proses log in dan melakukan start SQL*Plus session.

1.2.9 HttpWatch Professional Edition

HttpWatch adalah perangkat lunak yang terintegrasi dengan Internet Explorer

dan Firefox yang digunakan untuk menunjukkan HTTP traffic saat kita mengakses

sebuah halaman web.

Beberapa manfaat dari penggunaan HttpWatch, antara lain sebagai berikut:

1. Mengatahui bagaimana suatu situs bekerja dan bagaimana situs tersebut

mengimplementasikan beberapa fitur.

2. Memeriksa informasi yang disediakan browser ketika mengunjungi situs.

3. Memeriksa kebutuhan performance tuning terhadap suatu situs web dengan

mengukur waktu page load.

4. Mempelajari bagaimana cara HTTP bekerja.

Pada HttpWatch, hasil pengukuran waktu dari semua request yang menyusun

suatu halaman web ditampilkan dalam bentuk horizontal bar berwarna yang ditampilkan

pada kolom Time Chart. Arti dari warna-warna horizontal bar tersebut, yaitu sebagai

berikut:

Tabel 1.6Tabel Deskripsi Warna pada Kolom Time Chart aplikasi HTTPWatch

Warna Timing Name Deskripsi

Page 41: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

48 

 

 

Blocked

Waktu Blockedmencakup waktu pre-processing

(seperti cache lookup) dan waktu yang digunakan

untuk menunggu ketersediaan koneksi jaringan. IE 7

dan Firefox 2 hanya akan membuat maksimal 2

koneksi jaringan bersamaan untuk setiap nama

host(seperti www.microsoft.com) dan akan

menampung request yang datang hingga sebuah

koneksi jaringan tersedia. Sering sekali waktu Blocked

menjadi faktor yang paling penting dalam mengunduh

gambar-gambar dalam sebuah halaman web.

DNS Lookup

DNS Lookup merupakan waktu yang diperlukan untuk

mengubah nama host (seperti www.google.com)

menjadi alamat IP numerik (seperti 216.239.59.99).

Connect

Connect merupakan waktu yang diperlukan untuk

membuat koneksi TCP ke web server (atau proxy). Jika

sebuah koneksi HTTPS yang aman digunakan, maka

waktu Connect akan memasukkan proses SSL

handshake.

Send

Send merupakan waktu yang digunakan untuk

mengirim pesan HTTP request ke server dan

tergantung pada jumlah data yang dikirim ke server.

Sebagai contohnya, waktu Send yang lama biasanya

Page 42: 1 BAB 2 LANDASAN TEORI 1.1 Teori Umum - …library.binus.ac.id/eColls/eThesisdoc/Bab2/2012-1-00297-IF Bab 2.pdf · nama function beserta parameter aktual yang akan dikirim. ... kemampuan

49 

 

 

diakibatkan proses unggah file menggunakan HTTP

POST.

Wait

Wait merupakan waktu idle yang digunakan untuk

menunggu responsemessage dari server. Nilai ini

mencakup penundaan karena latensi jaringan dan

waktu yang diperlukan untuk memproses request pada

webserver.

Receive

Receive merupakan waktu yang diperlukan untuk

membaca responsemessage dari server. Nilai ini

tergantung pada ukuran dari hasil yang dikembalikan,

bandwith jaringan, dan apakah kompresi HTTP

digunakan atau tidak.

Cache Read CacheRead merupakan waktu untuk membaca hasil

dari browser cache.