BAB 2 LANDASAN TEORI
2.1 Landasan Teori Umum 2.1.1 Pengertian Data dan Informasi Menurut Whitten, Bentley dan Dittman (2004, p27), data adalah fakta mentah tentang orang, tempat, kejadian, dan barang yang sangat penting dalam organisasi. Setiap fakta secara relatif mempunyai arti. Sedangkan informasi adalah data yang telah diproses atau diorganisasikan kembali ke dalam bentuk yang lebih berarti untuk seseorang. Informasi dibentuk dari kombinasi data yang diharapkan mempunyai arti bagi penerimanya. Menurut Williams dan Sawyer (2005, p12), data mengandung fakta mentah dan bentuk yang diproses kedalam informasi – contohnya, pemugutan suara untuk kandidat yang berbeda dalam pemilihan senat. Informasi adalah data yang telah dirangkum atau setidaknya di manipulasi yang digunakan untuk pengambilan keputusan – contohnya, total hasil pemungutan suara untuk seluruh kandidat yang digunakan untuk menentukan siapa pemenangnya.
2.1.2 Pengertian Hardware Menurut Techtarget (www.midmarket.techtarget.com) hardware adalah aspek fisik dari komputer, telekomunikasi, dan piranti lainnya. Istilah timbul sebagai cara untuk membedakan "kotak" dan sirkuit listrik yang halus dan komponen komputer dari program anda menaruh di dalamnya agar melakukan sesuatu.
8
9 2.1.3
Pengertian Basis Data Menurut Connolly dan Begg (2005, p15), database adalah kumpulan data
yang saling berhubungan secara logika dan dirancang untuk memenuhi kebutuhan informasi organisasi. Menurut O’Brein (2003, p696) basis data adalah kumpulan terpadu dari elemen data logis yang saling berhubungan.
2.1.3.1 Pengertian DBMS ( Database Management System ) Menurut Connolly dan Begg (2005, p16), DBMS adalah sistem perangkat lunak yang memungkinkan pengguna untuk mendefinisikan, membuat, memelihara, dan mengontrol akses ke database. DBMS adalah perangkat lunak yang berinteraksi dengan program aplikasi pengguna dan database. Sebuah DBMS harus menyediakan fasilitas sebagai berikut. •
Mampu mendefinisikan database, biasanya melalui Data Definition Language (DDL). DDL memungkinkan pengguna untuk menentukan tipe data, struktur, dan batasan terhadap data yang akan disimpan ke database.
•
Memungkinkan pengguna untuk memasukkan (insert), merubah (update), menghapus (delete), dan mengambil (retrieve) data dari database, biasanya
melalui
Data
Manipulation
Language
(DML).
DML
memungkinkan pengguna untuk melakukan query. •
Menyediakan kendali akses ke database. Sebagai contoh DBMS dapat menyediakan : o Sistem keamanan yang memungkinkan untuk mencegah pengguna yang tidak berkepentingan untuk mengakses database.
10 o Sistem integrasi yang menjaga konsistensi data yang tersimpan. o Sistem kendali yang memungkinkan database untuk diakses secara bersamaan. o Sistem pemulihan yang memungkinkan untuk mengembalikan keadaan database ke kondisi konsisten yang sebelumnya jika terjadi kesalahan, termasuk kesalahan perangkat keras dan perangkat lunak. o Sebuah katalog yang bisa diakses oleh pengguna yang di dalamnya terdapat deskripsi atau penjelasan dari data yang terdapat di dalam database.
2.1.4
Pengertian Backup Basis Data Menurut Alapati (2005, p631) sebagai seorang Administrator basis data
Oracle, salah satu tugas dasar kita adalah melakukan proses backup pada basis data secara rutin. Backup berarti membuat salinan dari basis data kita untuk membuat kembali basis data yang sama jika diperlukan.
2.1.4.1 Whole dan Partial Database Backups Menurut Alapati (2005, p632) kita dapat melakukan backup pada seluruh atau sebagian isi basis data. Yang dimaksud dengan sebagian adalah datafile atau tablespace. Kita tidak dapat melakukan backup pada sebagian basis data jika basis data berjalan dalam mode noarchivelog, kecuali semua tablespace dan file pada
11 partial backup bersifat read-only. Kita dapat membuat backup pada seluruh basis data pada mode archivelog ataupun noarchivelog.
2.1.4.2 Archivelog dan Noarchivelog Menurut Alapati (2005, p633) pada mode archivelog, Oracle menyimpan redo logs yang sudah berisi. Dengan demikian, tidak peduli berapa lama usia dari backup bais data yang ada, jika kita berada pada mode archivelog, kita dapat mengembalikan basis data kapan pun juga. Sedangkan pada mode nonarchivelog, redo log yang sudah berisi tidak ditimpa dan tidak disimpan. Akibatnya, kita hanya dapat mengembalikan basis data pada kondisi terakhir backup dan kehilangan perubahan yang kita buat setelah backup terakhir. Sistem produksi biasanya berjalan pada mode archivelog, dengan beberapa alasan berikut: • Kita dapat recover secara menyeluruh dari sebuah kegagalan instance ataupun juga kegagalan media. • Kita dapat melakukan recovery data secara menyeluruh jika mengalami kerusakan drive disk • Kita dapat mencapai high availibility karena sebuah basis data yang berjalan pada mode archivelog tidak perlu di shut down untuk dilakukan proses back up. Kita dapat melakukan proses online backup. • Kita hanya dapat melakukan open backup yang adalah backup yang dilakukan ketika basis data sedang berjalan.
12 • Kita harus berada pada mode archivelog agar bisa melakukan recovery tablespace secara in time.
2.1.5
Pengertian Recovery Basis Data Menurut Cyran (2003, p15-2), recovery adalah suatu proses untuk melakukan
restore dari sebuah backup dari datafile atau control file dengan cara merekonstruksi kembali dan membuatnya kembali tersedia pada server basis data Oracle. Redo logs dan online logs juga diperlukan untuk mengembalikan perubahan yang terjadi pada basis data sejak backup terakhir. Menurut Optimum Recovery. Inc, (www.optimumrecovery.com), recovery adalah proses untuk mengembalikan data yang hilang atau rusak. Data dapat hilang karena kerusakan media atau file yang tidak sengaja terhapus.
2.2 Landasan Teori Khusus 2.2.1 Pengertian Analisis Menurut Whitten, Bentley dan Dittman (2004, p186), sistem analisis adalah sebuah teknik pemecahan masalah yang memecah-mecah sebuah sistem ke dalam komponen-kompenan kecil dengan tujuan untuk mempelajari bagaimana kinerja dan interaksi dari masing-masing komponen untuk mencapai tujuan mereka.
2.2.1.1 Pengertian Six Sigma Menurut
Manggala
(2005,
p6),
Six
Sigma
merupakan
sebuah
metodologi terstruktur untuk memperbaiki proses yang difokuskan pada usaha
13 mengurangi variasi proses (process variances) sekaligus mengurangi cacat (produk/jasa yang diluar spesifikasi) dengan menggunakan statistik dan problem solving tools secara intensif. Menurut Pande, dalam bukunya The Six Sigma Way: Team Fieldbook, ada enam komponen utama konsep Six Sigma sebagai strategi bisnis: 1. Benar-benar mengutamakan pelanggan: seperti kita sadari bersama, pelanggan bukan hanya berarti pembeli, tapi bisa juga berarti rekan kerja kita, team yang menerima hasil kerja kita, pemerintah, masyarakat umum pengguna jasa. 2. Manajemen yang berdasarkan data dan fakta: bukan berdasarkan opini, atau pendapat tanpa dasar. 3. Fokus pada proses, manajemen dan perbaikan: Six Sigma sangat tergantung kemampuan kita mengerti proses yang dipadu dengan manajemen yang bagus untuk melakukan perbaikan. 4. Manajemen yang proaktif: peran pemimpin dan manajer sangat penting dalam mengarahkan keberhasilan dalam melakukan perubahan. 5. Kolaborasi tanpa batas: kerja sama antar tim yang harus mulus. 6. Selalu mengejar kesempurnaan.
2.2.1.2 Tahapan Six Sigma Menurut Manggala, Mengenal Six Sigma secara Sederhana (2005, p68), setiap tahap dalam metode Six Sigma mempunyai bagian-bagian yang mesti
14 dilaksanakan ataupun mempunyai jenis-jenis konsep statistik yang bisa dipakai, walaupun sebenarnya untuk penggunaan statistik bisa cukup fleksibel. o Define Pada tahap ini tim pelaksana mengidentifikasikan permasalahan, mendefiniskan
spesifikasi
pelanggan,
dan
menentukan
tujuan
(pengurangan cacat/biaya dan target waktu). o Measure Tahap untuk memvalidasi permasalahan, mengukur/menganalisis permasalahan dari data yang ada. o Analyze Menentukan faktor-faktor yang paling mempengaruhi proses; artinya mencari satu atau dua faktor yang kalau itu diperbaiki akan memperbaiki proses kita secara dramatis. o Improve Di tahap ini kita mendiskusikan ide-ide untuk memperbaiki sistem kita berdasarkan hasil analisis terdahulu, melakukan percobaan untuk melihat hasilnya, jika bagus lalu dibuatkan prosedur bakunya (standard operating procedure-SOP). o Control Di tahap ini kita harus membuat rencana dan desain pengukuran agar hasil yang sudah bagus dari perbaikan tim kita bisa berkesinambungan. Dalam tahap ini kita membuat semacam metrics untuk selalu
15 dimonitor dan dikoreksi bila sudah mulai menurun ataupun untuk melakukan perbaikan lagi.
2.2.2 Perancangan Menurut Whitten, Bentley, dan Dittman (2004, p186), desain sistem adalah sebuah teknik pemecahan masalah pelengkap dari analisis sistem yang membangun kembali komponen-komponen sistem yang baru untuk peningkatan sistem, hal ini melibatkan penambahan, penghapusan pengubahan potongan kedalam sistem asli.
2.2.3
Arsitektur Basis Data Oracle Menurut Alapati (2003, ch.5), basis data Oracle terdiri dari 2 struktur yaitu: 1. Logical Structure a) Data Blocks Data Blocks adalah komponen logical paling kecil dari basis data Oracle. Seorang Administrator basis data (DBA) menentukan besar data blocks sesuai dengan keperluan pada basis data tersebut, dengan cara melakukan konfigurasi pada db_block_size parameter. Sebagai contoh, sebuah blocks berukuran kecil akan sangat berguna ketika user sedang bekerja dengan jumlah baris yang kecil, di mana user sedang melakukan banyak pencarian index. Blocks berukuran besar dapat sangat berguna dalam aplikasi laporan ketika user melakukan pencarian pada tabel yang berukuran besar.
16 Ketika seorang user melakukan select pada data dari sebuah tabel, maka sintaks select akan “membaca”, atau mengambil, data dari file basis data dalam unit dari blocks Oracle. Oracle blocks selalu terdiri dari berbagai macam ukuran blocks dari sistem operasi. Seluruh data block dapat dibagi ke dalam 2 bagian utama yaitu : row data portion dan free space portion . Row data portion terdiri dari dari serangkaian data block yang menyusun tabel atau index. Free space portion adalah sisa ruang kosong dalam Oracle blocks untuk melakukan pemasukan data baru atau sambungan dari baris yang telah diletakkan di dalam blocks. Oracle 9i mengijinkan untuk mengatur ruang kosong yang tersedia di dalam data block secara manual atau otomatis. Tidak seperti versi sebelumnya, Oracle 9i mengijinkan user untuk menentukan hingga 4 jenis ukuran blocks yang tidak umum, yang disebut dengan multiple data blocks. Jika user melakukan konfigurasi multiple data blocks, maka user harus melakukan konfigurasi pula pada subcaches di System Global Area (SGA) . Fungsi dari multiple data blocks ini adalah user dapat membuat data blocks yang berbeda di dalam basis data. Ketika user membuat tablespace, maka user dapat menentukan ukuran dari blocks dalam basis data. Pada saat sebuah tablespaces dibuat, maka akan selalu memiliki ukuran data blocks yang umum.
17 b) Extents Extents
adalah
kombinasi
dari
berbagai
data
blocks
yang
berdampingan dalam jumlah yang cukup. Pilihan user atas tablespaces akan menentukan bagaimana basis data Oracle mengalokasikan extents. Seluruh objek pada basis data disediakan sebagai sebuah jumlah penanda dari ruang, disebut dengan initial extent, ketika mereka dibuat. Ketika sebuah objek dibuat, user menentukan ukuran dari extent yang subsequent dan selanjutnya sejumlah angka maksimal dari extents untuk objek tersebut, di dalam sintaks pembuatan objek. Ketika sebuah tabel atau index dialokasikan, maka extents akan mengingatkan untuk dialokasikan pada objek saat itu, hingga user melakukan drop pada objek dari basis data, ketika space akan mengembalikan ke dalam tempat dari free space yang dialokasikan dalam basis data. c) Segments Sekumpulan extent akan membentuk segments. Setiap objek pada basis data mempunyai segment-nya sendiri. Ketika sebuah index dibuat, maka index tersebut akan mempunyai segment yang diberi nama setelah nama index.User dapat memiliki beberapa tipe segment, dengan data segment dan index segment yang paling umum. d) Tablespaces Sebuah tablespace didefinisikan sebagai sebuah kombinasi dari serangkaian segments yang saling berkaitan. Tablespace adalah logic
18 structure secara murni, dan merupakan main logic structure dari sebuah basis data Oracle. Semua tablespace tidak selalu mempunyai ukuran yang sama dengan dengan sebuah basis data Oracle. Karena Oracle 9i mempunyai fitur multiple data blocks dan tablespace pun terdiri dari data blocks, maka sebuah tablespace dapat terdiri dari blocks dengan besar yang berbeda dalam setiap tablespace. Hal ini menguntungkan karena memberi kesempatan untuk mengambil ukuran blocks yang tepat untuk sebuah tablespace, tergantung pada struktur data dari sebuah tabel di dalam tablespace. Beberapa keuntungan dari konfigurasi ukuran blocks untuk tablespace, yaitu : meningkatkan disk I/O ,meningkatkan cache data, memudahkan transport tablespaces Dalam setiap basis data Oracle dibutuhkan sedikitnya 2 tablespace, yaitu : system tablespace dan temporary tablespace. System tablespace tidak dapat dilakukan drop, yang mengandung Oracle data dictionary. 2. Physical Structure a) Data Files Data files adalah physical file yang sebenarnya disimpan oleh data yang telah dimasukkan ke dalam setiap tabel di basis data. Data files merupakan cara Oracle untuk mengalokasikan space pada tablespace, serta memetakan logical tablespaces ke dalam physical disks. Setiap tablespaces terdiri dari satu atau lebih data files. b) Control Files
19 Control files adalah key file dari Oracle DBMS yang mengatur keadaan basis data. Control files mirip seperti basis data di dalam basis data yang menyimpan data, seperti nama dan lokasi dari data files serta seluruh System Change Number (SCN), di mana menandakan versi terakhir dari perubahan pada basis data saat itu. Control files adalah key untuk seluruh fungsi di dalam basis data, dan pemulihan akan sulit tanpa mengakses control files yang terbaru. Oracle membuat control files selama proses pembuatan basis data awal. Data yang terdapat dalam control files yaitu : -
Data tentang kemajuan checkpoint
-
Data tentang redo
-
Data tentang tablespaces
-
Data tentang sejarah log files
-
Data tentang archieved logs
-
Data tentang backup set dan data file copy
Control files menjadi sangat penting selama Oracle instances beroperasi dan selama pemulihan basis data Oracle. c) Redo Log Files Redo Log Files sangat penting selama recovery process basis data. Redo log files merekam semua semua perubahan yang terjadi di dalam basis data. Oracle redo log files terdiri dari informasi berikut ini (terkait dengan perubahan pada basis data akibat transaksi) : -
Indikator yang memberikan tanda ketika sebuah transaksi dimulai
20 -
Nama transaksi
-
Nama dari objek data yang telah di update
-
“Before image” dan “After image” dari transaksi
-
Memastikan (commit) indikator yang memberikan informasi jika dan kapan transaksi tersebut selesai.
d) Initialization Parameter (init.ora dan SPFILE) Initialization Parameter untuk Oracle instance yang ditentukan ketika sebuah basis data baru dibuat, disebut init ora file atau server parameter file (SPFILE). Oracle mengijinkan untuk mengubah sejumlah initialization parameters setelah user memulai instance, hal ini disebut dynamic initialization parameters. Setiap kali melakukan perubahan pada dynamic initialization parameters, maka user harus melakukan restart pada basis data. e) Password Files Password Files adalah file pilihan yang digunakan untuk menyimpan nama dari para pengguna yang telah diberikan hak akses (grant privilleges) oleh SYSDBA dan SYSOPER . f) Archived Log Files Archived Log Files adalah penduplikasian isi dari redo log online yang terakhir, digunakan untuk proses recovery.
21 g) Alert Log Files Alert Log Files adalah file yang mendaftarkan perubahan besar, events, errors yang terjadi selama menjalankan Oracle instance. Alert Log Files juga merekam events yang mencakup log switches, Oracle erros yang berkaitan, warning, dan messages lainnya.
2.2.4 Pengertian Partitioning Menurut Situmorang (2004, p309), mempartisi berarti mengelola tabel dan indeks berukuran besar menjadi bagian kecil. Menurut Morales (2007, p2-1), partitioning memungkinkan sebuah tabel, index atau tabel berindeks dibagi menjadi potongan-potongan kecil dan memungkinkan objek basis data untuk diakses pada tingkat yang lebih kecil. Setiap partisi memiliki namanya sendiri dan mungkin mempunyai pilihan karakteristik dari media penyimpanannya. Dari sudut pandang seorang administrator basis data (DBA), sebuah objek yang dipartisi mempunyai berbagai macam potongan yang juga dapat di atur secara kolektif ataupun individual. Hal ini akan memberikan pertimbangan yang fleksibel untuk DBA dalam mengatur objek yang dipartisi. Bagaimanapun dari sudut pandang aplikasi, sebuah tabel yang dipartisi identik dengan sebuah tabel yang tidak dipartisi; tanpa modifikasi yang diperlukan ketika melakukan akses pada tabel yang dipartisi dengan menggunakan perintah SQL DML. Tabel dipartisi dengan menggunakan partitioning key, yaitu sekumpulan kolom yang menentukan partisi untuk tiap baris.
22 2.2.4.1 Teknik Partitioning Menurut Lumpkin (2003, p3), Oracle menyediakan 5 teknik untuk mempartisi tabel, yaitu : 1. Range Partitioning Setiap partisi dispesifikasi oleh serangkaian nilai dari partitioning key 2. List Partitioning Setiap partisi dispesifikasikan oleh sebuah list nilai dari key partitioning. 3. Hash Partitioning Sebuah algoritma hash diterapkan pada partitioning key untuk membatasi partisi pada baris yang diberikan. 4. Composite Range-Hash Partitioning Sebuah kombinasi dari teknik Range dan Hash partitioning. Pertama kali, tabel akan dipartisi dengan teknik range partitioning. Kemudian setiap individu hasil range partitioning tersebut akan dipartisi kembali dengan menggunakan hash partitioning . 5. Composite Range-—List Partitioning Sebuah kombinasi antara teknik Range dan List Partitioning. Pertama kali, tabel akan dipartisi dengan teknik range partitioning. Kemudian setiap individu hasil range partitioning tersebut akan dipartisi kembali dengan menggunakan list partitioning. Tidak seperti gabungan RangeHash Partitioning, isi dari setiap subpartisi mewakili sebuah subset
23 logika dari data, dideskripsikan oleh sesuai dengan proses setup pada range dan list partitioning.
2.2.4.2 Manfaat Partitioning Menurut Morales(2007, p2-4), Partitoning menyediakan keuntungan pada berbagai macam variasi aplikasi dengan cara meningkatkan manageability, performance, dan availability. • Partitioning for Manageability Oracle partitioning memungkinkan tabel dan index dipartisi menjadi unit yang lebih kecil dan mudah diatur, sehingga membantu seorang DBA untuk melakukan pendekatan management data dengan teknik “divide and conquer”. Dengan partitioning, operasi maintenance dapat difokuskan pada bagian tertentu saja dari tabel. Penggunaan umum partitioning untuk manageability adalah untuk mendukung proses pemindahan data secara rolling window dalam sebuah datawarehouse. • Partitioning for Performance Dengan membatasi jumlah data yang akan diperiksa atau dioperasikan, dan dengan menyediakan distribusi data secara paralel, Oracle partitioning akan memberikan sejumlah keuntungan performance. Fitur ini termasuk :
24 ¾ Partition Pruning Partitioning Pruning adalah hal yang paling sederhana dan paling penting untuk meningkatkan performa menggunakan partitioning. Partition pruning dapat meningkatkan kinerja query secara signifikan. Menurut Joseph C. Johnson (2003, p.568), yang dimaksud dengan partition pruning adalah proses yang dilakukan oleh Cost Based Eliminator untuk menghilangkan partisi tabel yang tidak berhubungan dengan query yang sedang dilakukan ¾ Partition Wise Join Partitioning
dapat juga meningkatkan kinerja dari join
beberapa tabel menggunakan teknik partition wise join. Partition wise join dapat di aplikasikan ketika dua buah tabel akan digabungkan bersama dan kedua tabel di partisi pada join key atau ketika sebuah tabel partisi direferensi digabung dengan tabel parent-nya. Partition wise join memecah sebuah join yang besar kedalam join yang lebih kecil yang terjadi antar partisi dan menyelesaikan proses join secara keseluruhan dengan waktu yang lebih singkat. Hal ini akan menawarkan keuntungan performa yang signifikan pada eksekusi serial ataupun paralel. • Partitioning for Availability Objek basis data yang dipartisi menghasilkan kemandirian partisi. Sifat kemandirian partisi menjadi suatu hal yang penting untuk mencapai strategi high availability. Seorang DBA dapat menentukan setiap partisi
25 disimpan dalam tablespace yang terpisah. Skenario yang paling umum adalah dengan menyimpan tablespace tersebut pada media penyimpanan yang berbeda. Menyimpan partisi pada tablespace yang berbeda memungkinkan DBA untuk melakukan proses backup dan recovery secara terpisah pada masing-masing partisi, sehingga memungkinkan bagian basis data untuk menjadi lebih cepat availability. Jadi akses pada
sistem
dapat berlanjut ketika data yang tidak aktif sedang dilakukan restore. Bahkan partitioning dapat mengurangi waktu down dari basis data.
Menurut Michele Cyran (2003, p18-2), keuntungan yang bisa didapat dengan melakukan partitioning yaitu: ¾ Partitioning memungkinkan operasi data management seperti data loads, index creation and rebuilding, dan backup/recovery pada level partisi daripada pada level keseluruhan tabel. Hal ini dapat mengurangi waktu untuk melakukan operasi ini secara signifikan. ¾ Partitioning meningkatkan performa query. Dalam banyak kasus, hasil dari query bisa didapat dari mengakses bagian dari partisi daripada keseluruhan tabel. ¾ Partitioning dapat secara signifikan mengurangi waktu down yang diperlukan untuk operasi maintenance. ¾ Partitioning meningkatkan availability dari mission-critical database jika tabel dan index yang penting dibagi menjadi partisi-partisi untuk
26 mengurangi maintenance windows, recovery times, dan dampak dari kegagalan. ¾ Partitioning dapat diimplementasikan tanpa memerlukan perubahan pada aplikasi kita.
2.2.4.3 Kriteria Tabel yang Harus Dipartisi Menurut Situmorang (2004, p309), Indikasi perlunya penerapan tabel terpartisi apabila ukuran tabel sudah sangat besar misalnya dalam satuan gigabyte atau tabel berisi data historis di mana data akan ditambahkan pada partisi baru. Menurut Filibeto (www.filibeto.com/partition.htm) Berikut ini beberapa saran untuk melakukan partisi pada tabel: ¾ Tabel lebih besar daripada 2 GB harus selalu dipertimbangkan sebagai kandidat untuk partitioning ¾ Tabel yang mengandung historical data, di mana data yang baru ditambahkan ke dalam partisi yang terbaru. Sebuah contoh yang umum adalah sebuah tabel histori di mana hanya data pada bulan yang sedang berjalan yang dapat di update dan data 11 bulan yang lainnya hanya dapat dibaca saja. ¾ Ketika isi dari sebuah tabel butuh untuk di distribusikan dengan tipe media penyimpanan yang berbeda.
27 2.2.4.4 Metode Konversi Tabel Menjadi Tabel Terpartisi Menurut DBAZine (www.dbazine.com), beberapa metode yang dapat digunakan untuk partitioning dalam basis data yang telah berjalan, yaitu : ¾ METODE 1 : DIRECT CREATION Sebuah tabel baru dibuat sebagai sebuah table yang telah dipartisi sejak awal, dengan cara melakukan select dari table sasaran. Contoh: CREATE TABLE MYTAB_NEW PARTITION BY RANGE (COL1) ( PARTITION P1 VALUES LESS THAN (101) TABLESPACE TS_P1, PARTITION P2 VALUES LESS THAN (201) TABLESPACE TS_P2, PARTITION P3 VALUES LESS THAN (301) TABLESPACE TS_P3, PARTITION PM VALUES LESS THAN (MAXVALUE) TABLESPACE TS_PM ) NOLOGGING AS SELECT * FROM MYTAB; Pada contoh di atas, dibentuk sebuah table baru yaitu MYTAB_NEW sebagai table yang telah dipartisi dan mengandung data sama persis dari MYDATA. Penggunanaan NOLOGGING bertujuan memastikan data telah dibentuk dengan jumlah redo yang paling sedikit. Jika dibutuhkan, Anda dapat menggunakan klausa PARALEL untuk melakukan hal ini pada tabel paralel. Setelah tabel dibuat, lakukan drop pada tabel awal dan lakukan rename pada tabel baru ini sehingga namanya menjadi sama dengan nama tabel awal. DROP TABLE MYTAB; RENAME MYTAB_NEW TO MYTAB;
28 Kemudian Anda dapat membuat kembali index dan constraint yang ada pada tabel ini untuk menyamakan dengan apa yang berlaku sebelumnya. Keuntungan : o Operasi yang sangat sederhana o Penggunaan NOLOGGING memastikan generasi redo yang minimal o Parallel query dapat digunakan untuk mempercepat pemrosesan Kelemahan : o Kebutuhan akan space sangat tinggi. Harus ada space yang cukup untuk sumber dan tabel sasaran pada berbagai poin yang diberikan. Hal ini dapat menyebabkan masalah yang serius jika basis data Anda mempunyai space yang ketat. o Space dibutuhkan dalam sebuah filesystem ketika file basis data dapat dibentuk, tidak hanya dalam berbagai filesystem. Untuk instance, Anda mungkin mempunyai /tmp filesystem, namun hal tersebut tidak dapat digunakan dalam metode konversi ini. Dalam kasus Oracle Parallel Server atau Real Application Cluster, space harus tersedia dalam area media penyimpanan yang di-share, bukan dalam local area. o Adanya kebutuhan untuk melakukan rollback segments. Ketika melakukan operasi create table as select dari tabel lainnya, Oracle menggunakan snapshot dari tabel pada awal query. Dalam system yang aktif, pembuatan tabel akan memproduksi sebuah ORA-1555 Snapshot Too Old error. o Constraints, indexes, dan triggers harus dibuat secara terpisah setelah tabel baru dibentuk. Indexes dan constraints, seperti primary keys yang
29 juga membentuk indexes, mungkin membutuhkan waktu yang panjang untuk dibentuk. Tambahan ini secara garis besar akan memakan waktu. Tabel yang baru harus dianalisis setelah dibentuk juga. o Space yang tinggi, waktu, serta konsumsi sumber daya membuat pilihan Direct Creation lebih tidak menarik jika Anda berhadapan dengan basis data berskala menengah ataupun besar. Bagaimanapun, untuk basis data, kesederhanaan dari pilihan tersebut membuatnya menjadi cukup menarik. ¾ METODE 2 : EXPORT/IMPORT Metode-metode yang lalu telah efisien
namun membutuhkan space
tambahan di samping basis datanya. Jika space tersedia dalam beberapa filesystem seperti /tmp, yang tidak dapat ditambahkan ke dalam basis data, export data dari tabel sumber MYTAB ke dalam dump file pada filesystem menggunakan export utility. (Menggunakan pilihan DIRECT=Y dan setting RECORDSIZE dan BUFFER parameters untuk mencocokan nilai akan mempercepat proses). Kemudian drop tabel MYTAB, bentuk sebuah tabel MYTAB yang dipartisi pada tempat yang sama, kemudian import kembali data yang ada. Variasi proses lainnya adalah melakukan export bagian dari tabel yang melakukan korespondensi dengan data dalam partisi menggunakan sebuah where clause dalam export utility, kemudian melakukan kompres pada dump file untuk membuat ruang bagi bagian lain. Ketika importing, sebuah single dump file dapat tidak dikompres, dilakukan import dilakukan drop.
ke dalam single partition dan kemudian
30 Keuntungan : o Keuntungan terbesar dari metode ini adalah pengurangan besar space yang diperlukan secara signifikan. Secara tipikal menghabiskan space lebih sedikit daripada tabel sumber. Namun kebutuhan untuk space dalam sebuah regular filesystem seperti /tmp, dan tidak dalam basis data, membuat proses tersebut menjadi menarik. o Jika diperlukan, export dump file dapat dibuat dalam tape, optical drive, NAS, atau bahkan sistem yang terpisah menggunakan UNIX pipe. Fleksibilitas ini kemungkinan membuka berbagai tempat space lainnya. o Jika sebuah tabel mengandung kolom LONG, hal ini adalah satu dari 2 pilihan yang dimungkinkan. Kelemahan : o Imports tidak dapat dilakukan tweak untuk mengecilkan proses log, tidak seperti pilihan direct loader. Sebelumnya, redo generation dan secara konsekuen, archived log generation, cukup tinggi. o Kebutuhan rollback segment juga cukup tinggi. Dalam beberapa hal dapat dikurangi dengan cara importing partition melalui paritition, dan committing dengan buffer sizes pada baris parameter perintah import. o Cara ini membuat tabel tidak tersedia untuk operasi secara keseluruhan. o Semenjak tabel dilakukan drop dan dibuat kembali, semua operasi lainnya, seperti pembuatan indexes, harus dilakukan setelahnya, dan ini memakan waktu. o Import utility tidak mengambil keuntungan dari parallel query servers.
31 ¾ METODE 3 : ONLINE REDEFINITION
Beberapa batasan dalam Online Redefinition : o Tidak dapat dimiliki oleh SYS atau SYSTEM Schema o Tabel yang akan diredefinisi secara online tidak boleh merupakan sebuah clustered table o Tidak boleh memiliki Materialized View Logs atau Materialized Views defined
Oracle 9i telah mengenalkan sebuah paket, DBMS_REDEFINITION, untuk mengorganisasi kembali tabel yang online. Sebuah tabel dapat diubah tanpa melakukan akses dari user.. Fitur ini dapat ditinjau lebih jauh untuk mengkorvesi sebuah tabel yang tidak dipartisi menjadi sebuah tabel yang terpartisi. Ada beberapa batasan dalam bagaimana paket ini dapat digunakan, bagaimana untuk contohnya, tabel tidak boleh mempunyai sebuah snapshot log atau materialized view log yang terdefinisi pada tabel tersebut, harus tidak boleh mempunyai kolom yang mengandung tipe data BFILE, LONG, dan sebagainya. Akan menjadi lebih mudah untuk mengkoversi sebuah tabel menggunakan online redefinition ketika tabel tersebut memiliki sebuah primary key. Jika tidak ada primary key,
beberapa non-default parameters harus dilewati untuk
menyelesaikan proses definisi. Pertama, periksa apakah tabel tersebut dapat diorganisasikan ulang dengan menggunakan dbms_redefinition dengan cara berikut ini:
32 Begin dbms_redefinition.can_redef_table (
'SCOTT',
'MYTAB', dbms_redefinition.cons_use_rowid); end; Jika tabel tersebut mempunyai primary key,gunakan sintaks di bawah ini. Begin dbms_redefinition.can_redef_table ('SCOTT','MYTAB'); end; Catat bahwa fungsi dari nilai tetap dbms_redefinition.cons_use_rowid, di mana menginstruksikan package untuk hanya menggunakan rowed sebagai cara untuk melakukan pengujian. Jika sebuah tabel dapat diorganisasikan ulang dengan package , perintah di atas tidak akan menghasilkan apapun. Namun jika ada alasan
mengapa
dbms_redefinition
tidak
dapat
digunakan
untuk
mengorganisasikan ulang tabel, maka package akan melemparkan penjelasan tentang kenapa dapat terjadi error. Menganggap bahwa redefinition dapat dilakukan, langkah selanjutnya adalah membuat tabel sasaran dengan cara : CREATE TABLE MYTAB_NEW PARTITION BY RANGE (COL1) ( PARTITION P1 VALUES LESS THAN (101) TABLESPACE TS_P1, PARTITION P2 VALUES LESS THAN (201) TABLESPACE
33 TS_P2, PARTITION P3 VALUES LESS THAN (301) TSBALESPACE TS_P3, PARTITION PM VALUES LESS THAN (MAXVALUE) TABLESPACE TS_PM ) AS SELECT * FROM MYTAB WHERE 1=2; Ini akan membuat sebuah tabel kosong dalam bentuk yang kita inginkan. Selanjutnya, waktu untuk memulai proses redefinition. Gunakan cara berikut ini : begin dbms_redefinition.start_redef_table ('SCOTT', 'MYTAB', 'MYTAB_NEW', null, dbms_redefinition.cons_use_rowid ); end; Ingat bahwa fungsi dari NULL sebagai parameter keempat. Parameter ini memetakan kolom dari tabel asli ke dalam tabel baru, bila mereka berbeda. Sejak kita tidak mengubah kolom names. Parameter ini tetap bernilai null. Parameter terakhir menginstruksikan package yang berada pada tabel yang tidak memiliki primary key dan rowed seharusnya digunakan untuk redefine. Jika tidak ada primary key, Anda dapat meninggalkan parameter tersebut sebagai default value dbms_redefinition.cons_use_pk .
34 Oracle membuat beberapa objek untuk memfasilitasi konversi dari instance, sebuah materialized view log dibuat pada tabel MYTAB, sebuah trigger dibuat untuk mendata populasi log, sebuah materialized view digunakan dibuat menggunakan prebuilt table MYTAB_NEW, dan lain sebagainya (Catatan: Sejak sebuah materialized view log dibuat pada tabel MYTAB, tabel tersebut harus tidak boleh mempunyai sebuah view log sebelum proses dimulai ). Ketika Oracle membuat objek ini, tabel sumber sudah dapat di akses secara penuh dan perubahannya di rekam dengan menggunakan Materialized View log. Dari waktu ke waktu, Anda seharusnya dapat menggunakan perintah di bawah ini untuk melakukan penyesuaian tabel dan materialized view. begin dbms_redefinition.sync_interim_table ('SCOTT', 'MYTAB', 'MYTAB_NEW'); end; Ketika operasi sync-up selesai dan Anda telah mencapai waktu yang relatif singkat, matikan proses penyesuaian. begin dbms_redefinition.finish_redef_table ('SCOTT', 'MYTAB', 'MYTAB_NEW'); end; Operasi ini adalah final sync-up dari materialized view dengan tabel utama, drop Materialized View logs, dan lain sebagainya, dan lakukan penamaan ulang pada tabel utama menjadi tabel sasaran. Ketika melakukan langkah akhir, hal ini akan mengunci tabel untuk sementara, restricting access. Itulah alasannya
35 mengapa Anda harus melakukannya dalam waktu yang relatif singkat. Sejak proses selesai dan juga sync-up, langkah tersebut dapat dipersingkat jika sync-up dilakukan terutama untuk memanggil procedure. Dan itulah alasannya pula mengapa untuk memanggil sync_interim_table() procedure untuk beberapa kali. Kemudian dapat dilakukan drop pada tabel MYTAB_NEW. Keuntungan : o Cara ini dapat dilakukan secara online. Terpisah dari momen yang ringan ketika final synchronization telah dilakukan, tabel MYTAB dapat diakses secara penuh. Kelemahan : o Kelemahan yang terbesar adalah kebutuhan akan space. Anda akan membutuhkan space sebesar dua kali dari besar tabel secara keseluruhan, ditambah space untuk MV logs, dan sebagainya. Jadi, kebutuhan akan space untuk online redefinition dalam beberapa kasus mungkin dapat menjadi constraint. o Pembatasan lainnya diletakkan pada tabel adalah sebaiknya tabel tersebut tidak mempunyai MV log. Hal ini dapat membuat banyak tabel menjadi tidak dapat dibaca untuk online redefinition, secara umum dalam DW dan replications environments, di mana ada kebutuhan paling baik untuk mengkonversi sebuah tabel yang dipartisi. o Jika Anda berhadapan dengan tabel berukuran besar, MV log dapat menjadi kepentingan besar, mempengaruhi kinerja. Dan sejak hal ini dibuat dalam
36 default tablespace Anda, di mana mungkin juga mengandung parent table, terkadang mungkin perdebatan pada disk level untuk akses. o Secara khas, pada snapshots besar, cara efisien untuk mengkonversi adalah dengan membuat sebuah tabel dahulu dengan menggunakan direct load insert, kemudian untuk menggunakan tabel untuk membuat snapshot dengan menggunakan ‘prebuilt table’ clause. Sejak snapshot dibuat otomatis oleh Oracle dan user tidak mempunyai kendali atas itu, populasi awal tidak dapat mengambil keuntungan seperti dari memanggil pengurangan features. Sebelumnya, initial load dapat beberapa kali memaksa sumber seperti rollback segments, temporary tablespaces, dan lain sebagainya. Dan penggunaan rollback segment dapat memungkinkan trigger ORA-1555 errors.
Menurut Baylis (2003, p.14), ada 2 metode untuk melakukan online redefinition, yaitu:
-
Dengan menggunakan primary keys atau pseudo-primary keys. Pseudoprimary keys adalah kolom unik yang tidak boleh kosong. Untuk metode ini, primary key sebelum dan sesudah redefinisi harus merupakan kolom yang sama. Metode ini merupakan metode yang umum digunakan dalam redefinisi.
-
Metode kedua adalah dengan menggunakan rowid. Tetapi metode ini hanya bisa digunakan pada tabel yang tidak memiliki index. Pada metode ini, tabel hasil setelah redefinisi memiliki kolom baru tersembunyi yang bernama M_ROW$$. Kolom ini disarankan untuk
37 dihapus atau dianggap tidak digunakan setelah proses redefinisi selesai dilakukan.
Menurut Pabba (2007, p.1), kita tidak dapat memindahkan sebuah tabel dari sebuah schema ke schema lainnya dengan menggunakan Online Redefinition. 1. Periksa untuk memastikan bahwa tabel dapat menggunakan fitur online redefinition: SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(’CHANDRA’,'T1′); 2. Buat sebuah tabel yang terpartisi (tambahkan atribut apapun yang diinginkan pada tabel baru yang terpartisi): Create table t1_part ( col1 number(10), col2 varchar2(30), col3 date default sysdate ) partition by range (col1) (Partition p1 values less than (100000), Partition p2 values less than (200000), Partition p3 values less than (300000), Partition p4 values less than (400000), Partition p5 values less than (500000),
38 Partition p6 values less than (600000), Partition p7 values less than (maxvalue)) tablespace users;
3. Mulai proses online redefinition: SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE(’CHANDRA’,'T1′, ’T1_PART’);
4. Fitur dalam Oracle 10g lebih mudah. Dalam Oracle9i, kita butuh untuk membuat constraints, indexes, grants, dan lainnya pada staging table. triggers, constraints, indexes, dan grants dapat didefinisikan pada tabel. Hal ini dapat diduplikat pada staging table dengan menjalankan DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS( ).
Jika telah selesai, refential constraints dan triggers dikembangkan dalam stage table (created disabled) dibuat menjadi enable, seluruh statistik akan disalin, dan semua objek yang di duplikat akan diberi penamaan ulang pada nama pre-definition mereka. SQL> VARIABLE NUM_ERRORS NUMBER; SQL> EXEC DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS(’CHANDRA’,' T1′,’T1_PART’,1,TRUE,TRUE,TRUE,FALSE,:NUM_ERRORS,FA LSE);
39 SQL> PRINT NUM_ERRORS
5. Sinkronisasi kembali tabel: SQL> EXEC DBMS_REDEFINITION.SYNC_INTERIM_TABLE(’CHANDRA’,'T1′ ,’T1_PART’);
6. Selesaikan online redefinition: SQL> EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE(’CHANDRA’,'T1′ ,’T1_PART’);
7. Validasi : SQL> Select partition_name, high_value from user_tab_partitions where table_name=’T1′;
Hak akses yang diijinkan juga dapat disediakan : SQL> select privilege, grantee from dba_tab_privs where table_name=’T1′;
Satu-satunya masalah adalah index sekarang menjadi global dan kita dapat mempunyai sebuah local prefixed indexed. Untuk tujuan ini kita dapat melakukan drop pada index yang ada dan membuat sebuah local index; SQL> alter table t1 disable primary key;
40 SQL> drop index t1_idx; SQL> create index t1_idx on t1(col1) local tablespace users; SQL> alter table t1 enable primary key; SQL> Select index_name, index_type, partitioned from user_indexes where table_name=’T1′;
2.2.5 Materialized View Menurut Situmorang (2004, p236), materialized view (MV) merupakan objek schema yang berisi hasil query. Tabel-tabel yang digunakan pada query dapat berupa tabel view atau MV lain yang disebut sebagai tabel master (replikasi) atau tabel detail (data warehouse) dan informasinya tersedia pada data dictionary ALL_MVIEWS, DBA_MVIEWS, dan USER_MVIEWS. Materialied view atau snapshot ini digunakan pada basis data terdistribusi untuk membuat replikasi dengan sinkronisasi data pada berbagai site maupun untuk data warehouse yang mempersiapkan dan menyimpan data agregat (summarized), MV meningkatkan kecepatan akses query melalui prekalkulasi join dan operasi agregat sebelum menjalankan dan menyimpan hasilnya pada basis data. Ketika query terhadap MV dilakukan, query optimizer akan mengetahui bilamana MV yang ada dapat digunakan dan segera mengakses MV, bukan ke tabel detail (query rewrite).