Rabu, 15 Juni 2011

Oracle Database pert 10

 
       Tempat penyimpanan data yang sebenarnya
       Ada 3 :
                Datafiles : Data aktual di database
                Redo Log files :
      Komponen penting dalam recovery database (mencatat semua perubahan database)
      Perubahan dicatat dalam redo log entry
      Redo log entry dapat disimpan dalam metode archivelog à archived redo log file (bisa manual / otomatis) oleh ARCH
      Info redo log : V$LOGFILE, V$LOG, V$ARCHIVED_LOG
                Control Files :
      Menyimpan informasi dimana lokasi file-file yang dibutuhkan database
      Informasi akan berubah saat menambah dan merubah struktur fisik database
      Lokasi : dalam CONTROL_FILE dalam file init.ora
      Default ada 3 buah dalam lokasi yang sama (C:\oracle\oradata\sdm)
      Penamaan cntrlndbname.ctl (nama database di DB_NAME)
      Isi : SCN, lokasi datafile, lokasi redo log file, nama database, ukuran database
      Melihat isi : V$CONTROLFILE. Terdapat 2 kolom, STATUS dan NAME. Jika nilainya tidak ada maka pada kolom status akan bernilai INVALID / NULL.
      Bisa disimpan dalam tempat yang berbeda (multiplexing control file)
File- file  yang lainya
       Parameter file :
      Berisi spesifikasi instance
      Ada 2 :
      Static parameter : format dalam ini/SID/.ora. Text sederhana yang dipanggil saat database dimulai
      Dynamic parameter : file biner untuk respon perintah user
       Password file :
      Menyimpan data user dan password / user privileges utk start dan shutdown database
      Kalo dalam keadaan database mati maka bisa dicari secara offline lewat sistem operasi
       Archieved Redo Log files :
      Menggandakan online redo log file yang penuh (untuk recovery) secara offline
SGA (System Global Area / Shared Global Area)
       Menyimpan informasi database dari proses database
       Berisi data dan control information dari oracle server dalam virtual memori pada komputer yang bersangkutan
       SQL> SHOW SGA;
       Bersifat dinamis
       Ukuran dalam SGA_MAX_SIZE
       SHARED POOL
terbagi menjadi 2 :
      Dictionary cache :
                menyimpan data dictionary yang sering di query (berulang2 semakin cepat). Berisi informasi tentang database files, tables, indexes, columns, users, privileges, dan objek lain
      Library cache :
                Menyimpan perintah SQL dan rencana bagaimana SQL dieksekusi. Terbagi 2 yaitu shared SQL (menyimpan SQL) dan shared PL/SQL (menyimpan PL/SQL)
ukuran : dalam SHARED_POOL_SIZE dalam file init.ora
ALTER SYSTEM SET SHARED_POOL_SIXE = 64M;
       DATABASE BUFFER CACHE :
      menyimpan data hasil perintah SQL
      kalo data yang diminta berulang-ulang à kecepatan query meningkat & mempercepat perubahan data di memori
      tidak langsung disimpan dalam disk
      ukuran : dalam parameter  DB_BLOCK_SIZE dan DB_BLOCK_BUFFER dalam file init.ora
      Disimpan dalam sub2 : DB_CACHE_SIZE (ukuran buffer cachenya saja, harus selalu ada dan tdk bisa di set 0), DB_KEEP_CACHE_SIZE (ukuran yg sering diminta), DB_RECYCLE_CACHE_SIZE (yang sdh terhapus)
      ALTER SYSTEM SET DB_CACHE_SIZE = 96M;
      Menampilkan V$DB_CACHE_ADVICE
       REDO LOG BUFFER :
      Catatan semua perubahan dalam database (untuk proses recovery)
      Disimpan dalam Redo Log File secara fisik
      Ukuran : dalam LOG_BUFFER dalam file init.ora
       LARGE POOL :
      Area optional dalam SGA
      Untuk memori session (UGA) untuk shared server
      I/O server processes
      Backup dan restore utk RMAN
      Pararel execution message buffers (PARALLEL_AUTOMATIC_TUNING set to TRUE)
      Ukuran dalam LARGE_POOL_SIZE
       JAVA POOL :
      Berisi java command
      Dibutuhkan saat menginstal java
      Ukuran dalam JAVA_POOL_SIZE

PGA (Program Global Area)
       Membantu proses user
       Memory tidak dapat dishare
       Menyimpan nilai variable, kolom yang diurutkan, dll
       Menyimpan nilai variable untuk perintah SQL à beda user bisa beda nilai
       Dialokasikan saat proses dibuat
       Ditutup ketika proses selesai
       Digunakan hanya oleh 1 proses
       Terdiri dari
      Private SQL Area
      Session Memory
     SQL Work Areas
Background Proses
DBWn : Database Writer
       Background proses yang menulis dari Buffer Cache ke disk (datafile)
       Penulisannya saat :
      server proses butuh ruangan di buffer cache untuk menyimpan data
      dipicu oleh LGWR
      saat timeout setiap 3 detik
      Tablespace Offline
      Tablespace read only
      Table DROP or TRUNCATE
      Tablespace BEGIN BACKUP
       Memperbolehkan sampai 20 DBWR (DBW0-DBW9 dan DBWa-DBWj)
       Ukuran : dalam DB_WRITER_PROCESSES

Tuning Database

Faktor yang harus diperhatikan pada saat melakukan performance tuning

Ada beberapa hal yang harus diperhatikan apabila kita akan melakukan performance tuning terhadap suatu database, hal-hal tersebut antara lain:

  1. Buat kesepakatan dengan user, sampai sejauh mana user akan menerima hasil dari proses tuning yang kita lakukan terhadap suatu database. Hal ini perlu untuk kita, sebagai executor, dalam pelaksaan proses tuning dalam database. Mengapa demikian? Apabila kita melaksanakan proses tuning pada database, tentunya harapannya adalah adanya peningkatan performance dari database tersebut. Untuk itulah maka perlu adanya satu batasan berupa kesepakatan dengan user database, jangan sampai suatu proses tuning database tidak di accept oleh user karena user merasa performance database yang telah kita lakukan tuning tidak significant perubahannya.
  2. Identifikasi terlebih dahulu area-area mana saja pada database yang paling critical, apabila kita tidak segera melakukan tuning terhadap database tersebut, atau dengan kata lain prioritaskan proses tuning pada area-area yang dianggap paling critical.
  3. Identifikasi bottleneck yang ada dalam sebuah atau beberapa query. Biasanya hanya karena sebuah query yang jelek menyebabkan performance menjadi turun secara keseluruhan.
  4. Jika memungkinkan, review terlebih dahulu design dari database  yang akan kita tuning, apakah sudah bagus, sebelum kita melakukan tuning pada query-query terhadap database tersebut, karena apabila kita melakukan query tuning tetapi dari sisi design database  kurang bagus, maka tuning pada query akan tidak optimal, bahkan mungkin tidak ada impact sama sekali.
  5. Pelajari strategi index yang sudah berjalan pada database yang akan kita tuning, dan lakukan improvement terlebih dulu pada area index ini.
  6. Jika kita rasakan index yang ada sudah optimal, lakukan identifikasi fragmentation level dari index yang ada, dan pastikan index statistic selalu up-to-date.
  7. Pelajari bagaimana cara kerja query optimizer, pelajari dan test beberapa bentuk tipe JOIN.
  8. Hindari penggunaan sub-query (select in select).
  9. Selalu gunakan UNION ALL daripada UNION, apabila memang ada operasi yang membutuhkan UNION
  10. Evaluasi penggunaan trigger yang berdampak pada performance.
  11. Hindari penggunaan SELECT ...... INTO sampai dengan kita yakin bahwa user yang terhubung ke database hanya kita sendiri atau proses yang kita lakukan hanya memerlukan waktu yang tidak lama. Jika sangat terpaksa gunakan INSERT .......SELECT.
  12. Gunakan SET NOCOUNT ON dalam semua modular code kita (Stored Procedure), untuk mengurangi informasi yang diberikan server ke client dan untuk mengurangi beban network.
  13. Jika memungkinkan, gantu semua query yang merupakan inline query menjadi stored procedure yang berparameter
  14. Jika memungkinkan, gunakan temporary table untuk mengurangi jumlah record pada saat query. Jika temporary table tersebut di join dengan permanent table, buat index di dalam temporary table tersebut.
  15. Optimalkan penggunaan loop, pindahkan semua proses yang tidak memerlukan pengulangan keluar loop.
  16. Jangan gunakan cursor jika memang tidak sangat terpaksa, TSQL tidak dioptimalkan untuk memproses 1 record dalam satu waktu

Database Connectivity – DBA – 102 – M9

DATA CONECTIVITY
Database Connectivity merupakan sebuah fasilitas komputer yang memungkinkan server client untuk berkomunikasi dengan  database server pengguna lain. Database management system (DBMS) menyediakan fasilitas untuk menyimpan, mengorganisir, dan mengambil data.
Sebagian besar aplikasi bisnis menyimpan data dalam database relasional. Aplikasi dapat mengakses informasi database dengan menggunakan Java Database Connectivity (JDBC) API.
Hal yang perlu diperhatikan dalam Database Connectivity:
- Knowing the business, not only technology
- Centralized or Distributed
- Thin client or fat client
- Database gateway
- Network Trafic
- Database design
- New technology (XML, Java, etc)
- Webbase or dekstop
    * Need provider?
    * Availability?
    * Reduce down time : – runtime maintenance
                                  - feature DBMS to promote
                                  - automate DBA function
                                  - high speed function
                                  - technology hardware
DBA Tools :
- Modeling & design
- Change management
- Table Editor
- Performance management
- Backup and recovery
- PT warehouse BI
- Programing & development
- Miscellaneous
Elemen – elemen dalam Database Connectivity
Database adalah repositori dimana data disimpan untuk perusahaan. Java EE mengakses aplikasi database relasional melalui API JDBC. Untuk prosedur administrasi. JDBC Connection Pool adalah sekelompok koneksi dapat digunakan kembali untuk database tertentu untuk prosedur administrasi.
Pooling Connection
Koneksi database yang terbatas dan mahal dapat memakan waktu yang tidak proposional dan lama untuk menciptakan relatif terhadap operasi yang dilakukan pada mereka. Hal ini sangat tidak efisien untuk sebuah aplikasi untuk membuat menutup koneksi database jika perlu untuk memperbaharui database.
ODBC (Open Database Connectivity)
Sebuah standar terbuka untuk konektivitas antar mesin basis data. Standar ini menyediakan API yang dapat digunakan untuk menjalankan dan mengoneksikan sebuah aplikasi dengan sbeuah sistem managemen basis data (SMBD). Pada Desainer ODBC membuatnya dengan tujuan agar ODBC terbebas dari penggunaan bahasa pemrograman tertentu, sistem manajemen basis data tertentu, dan sistem operasi tertentu.
Komponen utama ODBC
  • ODBC API : Sekumpulan panggilan fungsi kode – kode kesalahan dan sintaksis SQL yang mendefinisikan bagaimana data dalam sebuah DBMS diakses.
  • Driver basis data ODBC : driver yang mampu memproses panggilan fungsi ODBC untuk sebuah DBMS tertentu.
  • ODBC Driver Manager : yang bertugas untuk memuat driver basis data ODBC yang dibutuhkan oleh aplikasi

Storage Management – DBA – 102 – M7

Kebanyakan kita mungkin tidak tahu persis perbedaan instance dan database. Banyak yang mengira bahwa instance itu ya database. Bagi yang lebih kritis lagi lantas bertanya-tanya, kalau gitu apa gunanya Oracle memakai istilah instance dan database?
Kalau kita membuat database dengan DBCA, by default nama instance dan nama database itu memang sama. Apakah nama database yang saat ini kita maintain itu sama dengan nama instance?
  • Untuk mengecek nama instance, pastinya semua DBA Oracle sudah tahu. Value dari ORACLE_SID adalah nama dari instance juga.
  • Untuk mengecek nama database, gunakan command select VALUE from v$parameter where NAME=’db_name’
Instance adalah struktur proses dan memory yang menjalankan sistem database (DBMS, database management system). Sedangkan database adalah sekumpulan file yang menyimpan data (yang terdiri atas datafile, controlfile, dan redo log file).
Istilah Database Oracle yang sering kita pakai itu merujuk pada database management system (DBMS) Oracle. Ngucapin database management system mungkin terlalu panjang. Ngucapin DBMS mungkin kok tidak enak. Jadi gampang-gampangan, sebut saja database.


Memory Structure
Memory di Oracle digunakan untuk menyimpan:
  • Kode program yang akan dieksekusi
  • Informasi tentang session
  • Data yang akan dieksekusiInformasi yang di share dan dikomunikasi oleh proses yang lain. Misalnya locking information
  • Cache information


Dasar struktur memory yang berhubungan dengan oracle:
  • Software Code Area
  • System Global Area (SGA)
  • Program Global Area (PGA)
  • Sort area


Software Code Areas
Bagian dari memory yang digunakan untuk menyimpan kode program yang akan dieksekusi. Perintah/kode oracle disimpan di software code areas yang biasanya berada di tempat yang berbeda-beda sesuai dengan program dari user. Ukuran software codes areas statis, berubah jika dilakukan installasi ulang atau update.
System Global Area (SGA)
Memory Structure dasar yang berhubungan dengan Oracle instance adalah :
• System Global Area (SGA) : di-share oleh semua server dan background process
• Program Global area (PGA) : Private untuk masing-masing server dan background process. Satu PGA untuk masing-masing proses.
System Global Area (SGA) merupakan memory area yang meliputi data dan control informasi untuk instance.
Program Global Area (PGA) adalah memory yang terdiri dari data dan control information untuk masing-masing proses server.
Space Management
Automatic Storage Management (ASM) yang dimiliki oleh Oracle 10g ini dapat meningkatkan kemampuan dalam memanajemen dan menkonsolidasikan antar data dalam basis data/ database.
Fungsi dari Automatic Storage Management (ASM)
Melakukan manajemen penyimpanan data pada storage dengan mendefinisikan storage berdasarkan grup-grup tertentu untuk mengurangi adanya redundansi data, khususnya ketika seorang DBA melakukan penyimpanan data.
Automatic Storage Management (ASM) menyediakan fungsionalitas sebagai berikut:
  • Mengatur kelompok disk, disebut disk group.
  • Mengelola disk redundansi dalam suatu disk group.
  • Menyediakan dekat-optimal I / O menyeimbangkan tanpa tuning manual.
  • Memungkinkan manajemen objek database tanpa menyebutkan mount point dan nama file.
  • Mendukung file ukuran besar.


Tablespace
Tablespace merupakan bagian dari arsitektur logic database Oracle (secara sekilas, struktur logik database Oracle adalah tablespace, segment, extent, dan block).
Terdapat 4 jenis Tablespace
System tablespace
Menyimpan informasi operasional dan menentukan atribute dari data yang disimpan seperti tipe data, besar maksimum dari sebuah column, pemilik data dan lain-lain.
SYSAUX tablespace
Sebagian besar dari tool yang digunakan untuk menjalankan aktifitas database menyimpan object dan informasi di dalam tablespace ini. Ketika database dibentuk, tablespace ini wajib dibuat.
Default temporary tablespace
Berguna untuk penampungan sementara dari hasil output resultset atau untuk mendukung aktifitas seperti sorting. Sangat berguna jika memory yang ada tidak cukup untuk menjalankan sebuah operasi.
Undo tablespace
Berguna untuk menyimpan row yang diubah namun belum dicommit atau diroll back.
Datafiles
Sebuah tablespace di database Oracle terdiri dari satu atau lebih datafiles fisik. Suatu datafile dapat dikaitkan dengan hanya satu tablespace dan hanya satu database.
Redo Logs
Redo Log File merupakan jenis berkas yang sangat penting. Berkas Redo Log File yang rusak kadang membuat database sama sekali tidak bisa dibuka. Redo Log Files ini pada umumnya memuat transaksi transaksi, namun dalam jangka waktu yang tidak terlalu lama.
Rollback Segment
Rollback segment dipakai untuk menyimpan data sebelum transaksi. Sehingga selama transaksi itu belum di commit, session lain masih dapat melihat data yang original. Hal ini untuk menjaga consistency.
Archive Logs
Archived log digunakan untuk recovery database. Bila kita me-restore dari hasil offline backup, maka data yang bisa diambil adalah data ketika offline backup dilakukan. Jadi, seandainya full backup dilakukan sebulan yang lalu, maka data yang bisa diselamatkan (diambil) adalah data sebulan yang lalu tersebut.

Disaster Recovery Planning – DBA – 102 – M6

Disaster (bencana) didefinisikan sebagai kejadian yang waktu terjadinya tidak dapat diprediksi dan bersifat sangat merusak. Pengertian ini mengidentifikasikan sebuah kejadian yang tiba-tiba, tidak diharapkan, bersifat sangat merusak, dan kurang perencanaan. Bencana terjadi dengan frekuensi yang tidak menentu dan akibat yang ditimbulkannya meningkat bagi mereka yang tidak mempersiapkan diri terhadap kemungkinan-kemungkinan timbulnya bencana. Berbagai bencana yang mungkin terjadi antara lain adalah:
  1. Bencana alam disebabkan oleh kondisi geografis dan geologis dari lokasi
  2. Kebakaran disebabkan oleh faktor lingkungan dan pengaturan sistem elektrik yang dapat menyebabkan korsleting
  3. Kerusakan pada jaringan listrik disebabkan oleh sistem elektrik
  4. Serangan teroris disebabkan oleh lemahnya keamanan fisik dan non fisik data center
  5. Sistem atau perangkat yang rusak terkait dengan kesalahan manajemen pengawasan perangkat
  6. Kesalahan operasional akibat ulah manusia
  7. Virus misalkan disebabkan oleh kesalahan pemilihan anti virus yang digunakan
Disaster Recovery menurut terjemahan aslinya mengandung arti pemulihan bencana. DR jika dikaitkan dengan dunia bisnis, akan membawa kita pada definisi #Disaster Recovery Planning (DRP) dan #Business Continuity Plan (BCP).Bisnis akan bergantung pada informasi yang tersebar dan aplikasi yang memproses informasi tersebut, sehingga aplikasi penopang utama yang spesifik menjadi sangat kritikal sehingga ketika terjadi gangguan hanya beberapa saat maka dapat melumpuhkan kelangsungan bisnis perusahaan. Oleh karenanya, beberapa perusahaan mempunyai suatu arahan yang menjamin availabilitas kelangsungan bisnis ketika terjadi suatu bencana/gangguan yang tidak direncanakan atau sudah direncanakan. Arahan ini yang dituangkan dalam #Disaster Recovery Planning (DRP).
Perencanaan database adalah proses pembuatan atau pengembangan struktur database yang sesuai dengan data yang dibutuhkan oleh pengguna atau user.
Perencanaan database memiliki langkah – langkah penting yaitu :
  • Mendefinisikan kebutuhan (Requirement definition)
  • Jenis informasi yang harus diperhatikan (Informasi yang menjelaskan struktur data dan menggambarkan aturan atau batasan yang dapat menjaga integritasi data)
Fokus dalam mendefinisikan kebutuhan :
  • Mendefinisikan lingkup database
  • Memilih metodelogi
  • Mengidentifikasi pandangan user
  • Model data struktur
  • Model data constraints
  • Mengidentifikasi kebutuhan operasional
Disaster Recovery Planning
Yaitu merupakan serangkaian kegiatan yang bertujuan untuk mengurangi dan membatasi resiko – resiko buruk (bencana) dan nantinya membuat kerugian – kerugian pada proses bisnis yang ada. Dapat dikatakan bahwa proses ini adalah sebuah proses penanggulangan – penganggulangan atau rencana untuk menanggulangi suatu bencana pada proses bisnis.
Beberapa Keuntungan dari Disaster Recovery Planning
  • Memperbaiki system proteksi terhadapat setiap aset – aset penting yang dimiliki oleh perusahan tersebut.
  • Membuat system proteksi infomasi atau data – data perusahaan lebih efektif.
  • Mengurangi resiko bencana akibat kesalahan manusia
  • Memperbaiki manajemen perusahaan
Backup Database
Yaitu suatu proses yang mengacu kepada pembuatan salinan data dari database, sehingga salinan ini dapat digunakan untuk mengembalikan data semula dari peristiwa kehilangan data ataupun kerusakan data.

Data Movement & Distribution Database – DBA – 102 – M8

Data Movement
Proses data movement ini adalah memindahkan (dapat diakatakan membackup juga) data – data dari database yang berupa data, indeks, grand, schema, dan lain – lain ketempat baru. Tempat baru ini bisa ke dalam database baru atau memang untuk dibackup saja.

Data movement terdiri dari 2 bagian besar yaitu :
  • Load & Upload [difokuskan untuk memindahkan data yang berupa indeks atau data itu sendiri alias isi dari database tersebut]
  • Export & Import [memindahkan data secara lengkap, mulai dari grand, schema, dan seluruhnya]
Jika dilihat, load tersebut behubungan dengan import dan upload berhubungan dengan export
Load berfungsi untuk memasukan data / transaksi ke sebuah table. Dapat dikatakan juga insert, replace, atau update. Sedangkan upload berfungsi untuk membuat dari data table ke fisik / file. Kelemahan load adalah dalam prosesnya bisa saja terjadi data yang tidak berpindah secara sempurna.
Upload Parameter
  • Limit [membatasi beberapa record]
  • Sample [mencari sample yang telah ditentukan]
  • When [berdasarkan kondisi]
Dan pada upload, hanya satu parameter saja yang dapat berjalan alias tak bisa berjalan bersamaan apabila parameternya lebih dari 1.
Bulk Data Movement (Software Pendukung)
  • ETL [Extrat Transform Load], software yang focus terhadap data warehouse
  • Replication and Propagation, software yang memonitoring source database dan target, dan yang dihasilkan oleh software ini adalah pencatatatn log.
Perlu diperhatikan juga hak akses dalam load & unload, import & export minimal adalah akses select.
Distribution Database
Dalam distribution database terdapat 3 istilah yaitu :
  • Autonomi [idependent], untuk tabel umum akses yang diberikan berbeda dari setiap user.
  • Isolation [stand alone], untuk tabel khusus (privacy) itu terpisah dari user.
  • Transparancy [all user], akses tabel terpisah dari user tetapi user masih dapat mengaksesnya.
Lawan dari database terdistribusi adalah database terpusat. Server yang terpusat memang diuntungkan dalam sisi maintenance sedangkan server terdistribusi lebih rumit dalam proses integrasinya.
Jika database terdistribusi paling tidak membutuhkan Sumber Daya Manusia [SDM] yang baik, network yang lebih baik karena permasalahan network itu sangat fatal dan biasanya permasalahannya tidak jauh – jauh dari permasalahan traffic network. Dan yang tidak boleh dilupakan adalah request dan respon.