Tampilkan postingan dengan label SQL. Tampilkan semua postingan

Startup dan Shutdown Database

By: Cha-Cha D AceWell

Database Oracle dibagi dalam dua bagian besar yaitu Instance dan Database. Instance merupakan struktur memori dan background process yang mengurusi kegiatan database, sedangkan database adalah kumpulan dari beberapa jenis file untuk menyimpan data baik data aplikasi maupun metadata. Data yang ada di database tidak akan bisa diakses jika instance suatu database tidak aktif (open). Artinya file-file database tidak akan berguna jika instancenya tidak aktif.
Di kalangan Oracle DBA tentunya sudah tidak asing lagi dengan kata ”startup” dan ” shutdown”   database.
Pada dasarnya proses startup dan shutdown jarang dilakukan karena sudah seharusnya server database support untuk operasional selama 24 jam nonstop. Walaupun begitu startup dan shutdown database diperlukan untuk maintenance database seperti closed recovery dan konfigurasi fitur database lainnya.
STARTUP
Proses startup database dibagi dalam tiga tahapan, yaitu :

  • NOMOUNT, pada tahap ini yang dibaca adalah parameter file dan System Global Area(SGA) dialokasikan di memori.
Perintah : STARTUP NOMOUNT
  • MOUNT, control file yang terdaftar di parameter file dibaca dan diperiksa sinkron atau tidak.
Perintah : STARTUP MOUNT
  • OPEN, pada tahap ini semua datafile yang statusnya ONLINE diperiksa keberadaannya dan  konsistensinya.
Perintah : STARTUP OPEN atau STARTUP
Untuk startup dan shutdown database adalah user dengan privilege SYSDBA atau SYSOPER.  Secara default user yang mempunyai privilege tersebut adalah user SYS.
Melakukan STARTUP database, asumsi database sedang tidak aktif (shutdown).
1. Tentukan database yang akan di startup, misal nama database dbtest
C:\>set ORACLE_SID=dbtest
2. Jalankan SQL*Plus dan login sebagai user SYS
C:\>sqlplus sys as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Feb 17 14:34:10 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved.
Enter password: ********
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options
SQL>
3. Startup database sesuai dengan tahap yang diinginkan.
SQL> startup
Untuk pindah ke satu tahapan diatasnya gunakan perintah ALTER DATABASE.  misalkan saat ini status instance database NOMOUNT, maka untuk pindah ke tahap MOUNT gunakan perintah :
SQL> alter database mount;
Perintah ALTER DATABASE  hanya bisa untuk pindah ke tahap yang lebih tinggi misal dari NOMOUNT ke MOUNT dan dari MOUNT ke OPEN, tidak bisa sebaliknya.
SHUTDOWN
Shutdown database ada empat jenis dengan karakteristik yang berbeda pada setiap jenisnya, yaitu normal, transactional, immediate dan abort.
Shutdown Normal
  • semua koneksi baru digagalkan
  • user yg sedang konek akan ditunggu sampai disconnect
  • user yg sedang melakukan transaksi akan ditunggu sampai selesai
  • melakukan checkpoint
SQL> shutdown normal;
– atau
SQL> shutdown
Shutdown Transaksional
  • semua koneksi baru digagalkan
  • user yg sedang konek tidak melakukan kegiatan apapun akan disconnect
  • user yg sedang melakukan transaksi akan ditunggu sampai selesai
  • melakukan checkpoint
SQL> shutdown transactional;
Shutdown Immediate
  • semua koneksi baru digagalkan
  • user yg sedang konek tidak melakukan kegiatan apapun akan disconnect
  • user yg sedang melakukan transaksi dibatalkan
  • melakukan checkpoint
SQL> shutdown immediate;
Shutdown Abort
  • tidak melakukan pengecekan apapun
  • langsung shutdown
  • pengecekan dilakukan pada saat startup berikutnya.
SQL> shutdown abort;
RESTART DATABASE
Restart database diperlukan jika Anda melakukan perubahan parameter database statik seperti merubah ukuran maxsimum SGA (SGA_MAX_SIZE).
Untuk restart database gunakan perintah :
SQL> startup FORCE;
Selamat mencoba

Instalasi Oracle

By: Cha-Cha D AceWell

Sebagai database administrator, anda harus bisa melakukan instalasi software Oracle database dan beberapa tools yang diperlukan untuk mengakses ke database. Agar mampu menjalankan tugas ini anda dituntut untuk memahami dan menguasai perintah-perintah sistem operasi dimana software Oracle akan diinstall.
Untuk yang ingin belajar instalasi Oracle for Windows klik disini
Yang mau belajar instalasi di sistem operasi Unix (RHEL4 dan SLES9) klik disini
Selamat Mencoba 

Perintah SQL (SELECT) untuk Multi Tabel (Bag. 1)

By: Cha-Cha D AceWell

Pada artikel ini akan diberikan beberapa contoh perintah SQL yang diimplementasikan pada multi tabel. Adapun perintah SQL untuk manipulasi data pada satu tabel, saya yakin hal ini cukup mudah bagi Anda. Dalam contoh ini akan diambil studi kasus tentang pengambilan matakuliah mahasiswa.

Tabel-tabel yang dibuat pada studi kasus ini cukup sederhana saja untuk memudahkan pemahaman. Adapun tabel-tabel tersebut adalah:
1.mhs (
2.nim varchar(3),
3.namaMhs varchar(30),
4.primary key(nim)
5.)
1.mk (
2.kodeMK varchar(3),
3.namaMK varchar(30),
4.sks integer,
5.primary key(kodeMK)
6.)
1.ambilMK (
2.nim varchar(3),
3.kodeMK varchar(3),
4.nilai integer,
5.primary key(nim, kodeMK)
6.)
Dalam hal ini, field nim dan kodeMK pada tabel ambilMK merupakan foreign key. Apabila diperhatikan, tabel mhs dengan tabel ambilMK saling berelasi karena nim dalam tabel ambilMK berasal dari nim dalam tabel mhs (master tabel).
Demikian pula antara tabel mk dengan ambilMK. Kedua tabel ini juga berelasi karena kodeMK dalam tabel ambilMK berasal dari kodeMK dalam tabel mk.
Untuk record masing-masing tabel, misalkan diberikan berikut ini:
Tabel : mhs
1.nim    namaMhs
2.001    Joko
3.002    Amir
4.003    Budi
Tabel : mk
1.kodeMK    namaMK        sks
2.A01       Kalkulus      3
3.A02       Geometri      2
4.A03       Aljabar       3
Tabel : ambilMK
1.nim    kodeMK    nilai
2.001    A01         3
3.001    A02         4
4.001    A03         2
5.002    A02         3
6.002    A03         2
7.003    A01         4
8.003    A03         3
Selanjutnya misalkan akan dicari data-data sbb:
  1. Tampilkan nim dan nama mahasiswa yang mengambil Kalkulus (kodeMK = A01)
  2. Tampilkan nim, nama mahasiswa dan jumlah SKS matakuliah yang diambil untuk setiap mahasiswa
  3. Berapakah IPK mahasiswa bernama Budi (NIM: 003)
  4. Tampilkan nim, nama mahasiswa, dan IPK setiap mahasiswa
Untuk menjawab no. 1, kita harus cari dulu tabel mana yang terkait dengan query tersebut. Apabila kita akan mencari query tersebut berdasarkan nama matakuliah ‘Kalkulus’ maka tabel yang terkait adalah mhs (untuk menampilkan nim dan nama mahasiswa), mk (karena dalam tabel ini terdapat nama matakuliah), serta tabel ambilMK (karena tabel ini berisi data pengambilan matakuliah oleh mahasiswa).
Setelah menentukan tabel mana yang terkait dengan query, selanjutnya dapat dibuat statement SQL nya, yaitu
1.SELECT mhs.nim, mhs.namaMhs
2.FROM mhs, mk, ambilMK
3.WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK
4.AND mk.namaMK = 'Kalkulus';
Maksud mhs.nim, maksudnya adalah menampilkan data nim yang berasal dari tabel mhs. Dapat pula Anda menuliskan SQL nya seperti ini
1.SELECT ambilMK.nim, mhs.namaMhs
2.FROM mhs, mk, ambilMK
3.WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK
4.AND mk.namaMK = 'Kalkulus';
Hal ini dikarenakan untuk menampilkan nim dapat pula berasal dari tabel ambilMK.
Perhatikan bagian FROM dari kedua statement SQL di atas. Nama-nama tabel yang terkait dengan query dituliskan pada bagian FROM ini.
Selanjutnya apa maksud dari perintah mhs.nim = ambilMK.nim? Perintah ini digunakan untuk merelasikan tabel mhs dan ambilMK, dimana kedua tabel direlasikan melalui field nim di kedua tabel. Hal yang sama juga berlaku untuk perintah mk.kodeMK = ambilMK.kodeMK.
Sedangkan perintah mk.namaMK = ‘Kalkulus’ digunakan sebagai syarat pencarian data (menampilkan data mahasiswa yang mengambil matakuliah Kalkulus).
Apabila pencarian data mahasiswa yang mengambil Kalkulus ini berdasarkan kode matakuliah (A01), maka Anda tidak perlu menggunakan tabel mk, tapi cukup tabel mhs dan ambilMK saja. Hal ini dikarenakan kodeMK dapat diketahui dari tabel ambilMK. Sehingga perintah SQL nya
1.SELECT mhs.nim, mhs.namaMhs
2.FROM mhs, ambilMK
3.WHERE mhs.nim = ambilMK.nim AND ambilMK.kodeMK = 'A01';
Ketiga statement SQL di atas akan menghasilkan hasil yang sama yaitu
1.NIM    namaMhs
2.001    Joko
3.003    Budi
Selanjutnya akan dijawab pertanyaan no. 2. Seperti halnya langkah penyelesaian pertanyaan no. 1, langkah pertama harus kita tentukan dulu tabel apa saja yang terkait dengan query. Dalam hal ini kita akan menggunakan tabel mhs, mk dan ambilMK. Tabel mhs untuk menampilkan nim dan nama mahasiswa. Tabel mk digunakan karena di dalamnya terdapat data SKS. Sedangkan tabel ambilMK digunakan karena berisi data yang menunjukkan pengambilan matakuliah mahasiswa.
Perintah SQL untuk pertanyaan no. 2 adalah
1.SELECT mhs.nim, mhs.namaMhs, sum(mk.sks) as jumlahSKS
2.FROM mhs, mk, ambilMK
3.WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK
4.GROUP BY ambilMK.nim
atau
1.SELECT mhs.nim, mhs.namaMhs, sum(mk.sks) as jumlahSKS
2.FROM mhs, mk, ambilMK
3.WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK
4.GROUP BY mhs.nim
Untuk mencari jumlah SKS setiap mahasiswa, kita menggunakan perintah sum(mk.sks). Supaya perintah ini bisa jalan, maka harus ditambahkan perintah GROUP BY mhs.nim atau GROUP BY ambilMK.nim. Hal ini dikarenakan proses penjumlahan sks harus dilakukan pada setiap kelompok data. Maksudnya apa ya?
Perhatikan perintah SQL berikut ini
1.SELECT mhs.nim, mhs.namaMhs, mk.sks
2.FROM mhs, mk, ambilMK
3.WHERE mhs.nim = ambilMK.nim AND mk.kodeMK = ambilMK.kodeMK
Perintah di atas akan menampilkan nim, nama mahasiswa serta sks setiap mata kuliah yang diambil. Hasilnya adalah
1.NIM    namaMhs        SKS
2.001    Joko               3
3.001    Joko               2
4.001    Joko               3
5.002    Amir               2
6.002    Amir               3
7.003    Budi               3
8.003    Budi               3
Untuk pertanyaan no. 2 ini, seharusnya akan tampil hasil berikut
1.NIM    namaMhs        jumlahSKS
2.001    Joko              8
3.002    Amir              5
4.003    Budi              6
Sehingga supaya mendapatkan hasil seperti di atas, kita akan menjumlahkan setiap SKS yang diambil mahasiswa, berdasarkan kelompok mahasiswa, dalam hal ini dikelompokkan berdasarkan NIM. Mengapa tidak dikelompokkan berdasarkan nama mahasiswa? Wah bisa gawat kalau ini terjadi, karena ada kemungkinan  nama mahasiswa yang sama. Oleh karena itu harus ada perintah GROUP BY mhs.nim
Untuk pembahasan nomor yang lain akan dilanjutkan pada tutorial yang lain.