Feeds:
Posts
Comments

Posts Tagged ‘alter system’

Oleh : Diana Suharlim  /  1200941960

Transaksi – transaksi yang ada dalam database Oracle bisa di-commit dan di-rollback. Perbedaan antara commit dan rollback adalah :

  1. Commit : jika transaksi di-commit, maka perubahan yang kita lakukan terhadap data pada transaksi tersebut akan dibuat menjadi permanen, sedangkan
  2. Rollback : membatalkan perubahan yang dilakukan terhadap data, sehingga data akan kembali ke nilai awal sebelum dilakukan transaksi.

Agar transaksi bisa dibatalkan (rollback), maka nilai original dari data tersebut harus disimpan. Data original yang disimpan ini disebut dengan before image data. Before image data akan disimpan untuk setiap transaksi yang dilakukan, sehingga jika terjadi kesalahan pada saat mengubah data, data masih bisa dikembalikan ke originalnya (rollback).

Karena before image data digunakan untuk tujuan undo(mengembalikan data), maka before image data juga disebut dengan undo information. Pada Oracle versi sebelumnya, yaitu Oracle 7, 8, dan 8i, undo information disimpan dalam segment yang disebut dengan rollback segment. Rollback segment ini dibuat secara manual oleh DBA (Database Administrator). DBA harus memperhatikan berapa banyak dan berapa ukuran rollback segment yang harus dibuat? serta berapa banyak extent yang harus dibuat di tiap-tiap segment ? Hal ini menyulitkan DBA dalam menyediakan space untuk rollback. Oleh karena itu, pada versi selanjutnya dari Oracle, yaitu Oracle 9i, Oracle 10g dan Oracle 11i, space management untuk rollback telah disederhanakan menjadi Automatic Undo Management (AUM). AUM menggunakan undo tablespace untuk mengatur space untuk undo information. Disebuat “Automatic” karena server akan secara otomatis membentuk dan mengatur jumlah dan ukuran undo segment dalam sebuah undo tablespace. DBA tidak perlu membuat rollback segment secara manual lagi. Walaupun menggunakan AUM, undo information masih disimpan dalam rollback segment, dimana rollback segment itu sekarang disebut sebagai undo segment. Yang disimpan dalam undo tablespace adalah data yang merupakan before image data, jadi ukuran dari undo tablespace disesuaikan dengan ukuran dari data original sebelum transaksi dilakukan. Undo segment ini ada dalam undo tablespace dan dibuat dan diatur secara otomatis oleh Oracle. Pada Oracle 9i, DBA perlu membentuk terlebih dahulu undo tablespace, sedangkan pada Oracle 10g dan Oracle 11i, undo tablespace yang merupakan default telah terbentuk tanpa harus dibentuk (create) oleh DBA secara manual. Pada Oracle 10g, undo management default yang digunakan adalah undo management dengan mode MANUAL. Sedangkan pada Oracle 11i, secara default telah menggunakan Automatic Undo Management.

Bagaimana Undo bekerja?
Seperti yang telah dijelaskan sebelumnya, undo information akan disimpan dalam undo tablespace. Berikut akan dijelaskan bagaimana undo bekerja pada transaksi INSERT, UPDATE dan DELETE.

  1. INSERT
    Pada proses INSERT, space undo tablespace yang akan digunakan untuk menyimpan undo information pasti lebih kecil, karena proses INSERT, tidak punya before image data.
    Tetapi nilai baru akan disimpan, sehingga transaksi bisa di­-redo.

    Gambar 1.1 State sistem setelah redo log buffer di-flush (Kyte, 2005, p. 289)

    Ketika buffer cache sudah penuh, maka DBWr (Database Writer) akan mengirimkan signal ke LGWr (Log Writer) untuk melakukan flushing redo log. Jika database berada dalam mode ARCHIVELOG, maka ARCn (Archiver) akan memasukkan redo entries ke dalam archive log ketika redo log di-flush, jika database berada dalam mode NOARCHIVELOG, maka setelah di-flush, redo entries akan hilang. Perlu kita ingat bahwa redo log buffer akan di-flush setiap 3 detik. Gambar 1.1 diatas  adalah state sistem setelah redo log buffer di-flush.

  2. UPDATE
    Pada proses UPDATE,space undo tablespace yang digunakan akan lebih besar dibandingkan dengan proses  INSERT, karena akan menyimpan undo information yang berupa before image data. Gambar 1.2 adalah state sistem setelah dilakukan UPDATE, undo segment akan disimpan dalam buffer cache. Undo segmentakan menyimpan data original

    Gambar 1.2 State system setelah update (Kyte, 2005, p. 289)

    sebelum update dilakukan dan redo log buffer akan menyimpan data baru yang diupdate. Jika user melakukan rollback, maka sistem akan mencari undo information yang disimpan dalam undo segment yang ada dalam buffer cache. Setelah itu informasi itu akan diberikan ke block data dan block index dalam buffer cache. Lalu data original yang ada dalam buffer cache akan di-flush dan datanya dimasukkan ke dalam data file. Selama proses rollback, redo log tidak akan diikut sertakan (Kyte, 2005, p. 289).

  3. DELETE
    Proses DELETE hampir sama dengan proses UPDATE. Space undo tablespace yang akan digunakan juga lebih besar dibandingkan dengan INSERT, karena undo information akan disimpan dalam undo segment. Ketika transaksi di-rollback, maka data yang sesuai dari undo segment akan diambil dan dikembalikan ke data file.

DBA bisa mengubah mode dari undo management dengan menggunakan inisialisasi parameter UNDO_MANAGEMENT. Jika ingin menggunakan manual undo management, maka set parameter UNDO_MANAGEMENT menjadi MANUAL dan jika ingin menggunakan AUM, maka set parameter UNDO_MANAGEMENT menjadi AUTO.
Menurut Jeff Hunter, ada beberapa hal yang perlu diperhatikan ketika menggunakan AUM, yaitu :

  1. Jika ingin mengatur rollback segment secara manual, seperti pada versi Oracle sebelumnya, maka set inisialisasi parameter UNDO_MANAGEMENT menjadi MANUAL.
  2. Untuk membedakan dua tipe segment,  maka rollback segment disebut sebagai undo segment ketika AUM digunakan.
  3. Oracle Database akan secara otomatis akan membentuk undo segment dalam undo tablespace. DBA tidak perlu lagi membuat rollback segment satu per satu secara manual. undo segment dimiliki oleh PUBLIC
  4. Semua undo segment akan di-drop jika DBA drop undo tablespace.
  5. Tidak semua undo segment dalam undo tablespace memiliki status ONLINE pada saat Oracle di-startup. Jumlah dari undo segment yang aktif ditentukan oleh parameter instance SESSION. Semua OFFLINE undo segment dalam undo tablespace yang aktif, akan diubah statusnya menjadi ONLINE jika semakin banyak transaksi memerlukan undo segment.
  6. Kita bisa saja membuat rollback segment dalam undo tablespace, jika parameter UNDO_MANAGEMENT adalah  MANUAL, tetapi hal ini sangat tidak disarankan, karena hal ini tidak berguna. Rollback segment tidak dapat diubah menjadi ONLINE ketika parameter UNDO_MANAGEMENT diset menjadi AUTO.
  7. Kita hanya bisa menggunakan satu undo tablespace dalam AUM. Walaupun demikian, kita tetap bisa membuat lebih dari satu undo tablespace. Jika ada lebih dari satu undo tablespace, maka tentukan undo tablespace mana yang akan digunakan melalui parameter undo_tablespace. Jika tidak ditentukan, maka Oracle akan menggunakan undo tablespace default, yaitu undotbs1.dbf
  8. undo tablespace selalu dibuat dengan locally-managed extents dengan alokasi sistem extent.

Undo Retention
Undo retention adalah waktu minimum yang digunakan untuk mempertahankan undo information yang sebelumnya dalam undo tablespace sebelum undo information tersebut di-overwrite. Undo information yang umurnya lebih tua dari undo retention disebut dengan expired undo information dan undo information yang umurnya belum melebihi undo retention disebuat dengan unexpired undo information. Untuk mengatur undo retention, gunakan inisialisasi parameter UNDO_RETENTION. Undo retention period diisi dalam satuan detik. Jika ada transaksi baru dan undo informationnya akan diisi ke dalam undo tablespace, dimana undo tablespace sudah tidak memiliki space kosong, maka expired undo information yang ada dalam undo tablespace akan di-overwrite. Jika semua expired undo information telah di-¬overwrite, dan ada undo information baru yang akan masuk, maka unexpired undo information-lah yang akan di-overwrite.
Ada dua yang perlu diperhatikan dalam undo retention, yaitu :

  1. undo retention pada fixed undo tablespace (undo tablespace yang memiliki ukuran tetap), maka jika ada undo information baru yang akan masuk, sedangkan tidak ada lagi space yang kosong, maka ada kemungkinan unexpired undo tablespace juga akan di-overwrite.
  2. untuk undo tablespace dengan AUTOEXTEND, ketika space dalam undo tablespace sudah tidak ada, maka undo information yang baru akan meng-overwrite expired undo information. Jika semua expired undo information telah di-overwrite, dan ada undo information baru yang akan masuk lagi, maka undo tablespace akan di-autoextend. Jika MAXSIZE dari AUTOEXTEND undo tablespace ditentukan, maka ada kemungkinan unexpired undo information juga akan di-overwrite jika undo tablespace telah mencapai ukuran maksimalnya dan space sudah tidak ada lagi.

View untuk melihat informasi tentang UNDO
Tabel berikut adalah beberapa view yang dapat digunakan untuk melihat informasi dari undo tablespace :

View

Deskripsi

V$UNDOSTAT berisi statistik untuk monitor dan tuning undo space. View ini bisa digunakan untuk membantu mengestimasi berapa ukuran undo space untuk beban kerja sekarang. Informasi ini juga dapat membantu database untuk melakukan tuning undo usage dala sistem. Data statistik diambil setiap 10 menit sekali dalam 24 jam.
V$ROLLSTAT dan  V$ROLLNAME View ini digunakan untuk memonitor kinerja undo tablespace secara keseluruhan.
V$TRANSACTION Berisi informasi undo segment.
DBA_UNDO_EXTENTS Menyediakan informasi extent yang ada dalam undo tablespace.
DBA_HIST_UNDOSTAT Berisi statistical snapshot dari informasi V$UNDOSTAT.
DBA_ROLLBACK_SEGS Berisi informasi rollback segment yang dibuat oleh Oracle.

Parameter untuk mengatur Automatic Undo Management
Berikut adalah table yang menjelaskan mengenai inisialisasi parameter yang digunakan untuk mengatur AUM :

Parameter Name

Default Value

Valid Value

undo_management Manual Auto, Manual
undo_retention 900 seconds 0 – max value 32 bits
undo_suppress_errors True True, false
undo_tablespace undotbs01 or  rollback segment Valid tablespace name
  • undo_management : parameter ini menentukan apakah AUM sedang diaktifkan atau tidak. Jika parameter ini di-set AUTO, maka AUM sedang digunakan dan jika parameter ini di¬-set MANUAL, maka AUM tidak digunakan.
  • undo_retention : parameter ini menentukan berapa lama undo data akan dipertahankan dalam undo tablespace, sebelum di-overwrite. Satuan dari nilai undo_retention adalah dalam detik (seconds).
  • undo_suppress_errors : parameter ini digunakan untuk mengontrol apakah pesan error akan ditampilkan atau tidak. Parameter ini hanya akan menunjuk efek jika Automatic Undo Management-lah yang digunakan.
  • undo_tablespace : menentukan undo tablespace mana yang akan digunakan untuk menyimpan undo data.

Membuat undo tablespace
Berikut adalah contoh pembentukan undo tablespace dengan menggunakan AUTOEXTEND :

CREATE UNDO TABLESPACE undotbs_02
DATAFILE ‘/u01/app/oracle/oradata/orcl/undo0201.dbf’ SIZE 2M REUSE
AUTOEXTEND ON;

Contoh diatas adalah sintaks yang digunakan untuk membuat undo tablespace dengan nama undotbs_02 dan membentuk data file undo0201.dbf yang disimpan dalam directory /u01/app/oracle/oradata/orcl/ dengan ukuran data file adalah 2M dan menggunakan AUTOEXTEND.

Altering undo tablespace
Undo tablespace
dapat dialter dengan menggunakan command ALTER TABLESPACE. Aksi yang bisa dilakukan dengan ALTER TABLESPACE adalah :

  • penambahan datafile

ALTER TABLESPACE undotbs_01
ADD DATAFILE ‘/u01/app/oracle/oradata/orcl/undo0201.dbf’
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;

Pada contoh alter tablespace diatas, yang dilakukan adalah menambahkan data file ke dalam tablespace undotbs_01. Tablespace menggunakan pilihan AUTOEXTEND dengan ukuran maksimal yang tidak terbatas.

  • mengubah ukuran data file

ALTER DATABASE DATAFILE ‘/u01/app/oracle/oradata/orcl/undo0201.dbf’ RESIZE 10M;

Pada contoh diatas, data file undo0201.dbf diubah ukurannya menjadi 10M.

  • melakukan operasi backup

ALTER TABLESPACE undotbs_01 BEGIN BACKUP;
ALTER TABLESPACE undotbs_01 END BACKUP;

Dropping undo tablespace
Untuk menghapus undo tablespace, kita bisa menggunakan DROP TABLESPACE. Berikut adalah contoh dropping undo tablespace undotbs_01  :

DROP TABLESPACE undotbs_01 ;

Yang perlu diperhatikan ketika melakukan drop tablespace adalah jangan drop undo tablespace jika undo tablespace tersebut sedang digunakan oleh instance. Dengan melakukan drop undo tablespace, berarti semua undo information akan dihapus juga termasuk unexpired undo information. Oleh karena itu, kita harus berhati-hati jangan sampai melakukan drop sebuah undo tablespace yang masih menyimpan undo information yang masih digunakan.

Switching undo tablespace
Administrator
bisa melakukan switching undo tablespace yang digunakan dengan ALTER SYSTEM SET. Berikut adalah contoh switching undo tablespace :

ALTER SYSTEM SET UNDO_TABLESPACE = undotbs_02;

Yang perlu diperhatikan pada saat melakukan switching undo tablespace adalah :

  • tablespace harus ada dalam sistem,
  • tablespace haruslah undo tablespace,
  • undo tablespace tersebut sedang tidak digunakan oleh instance lain.

ALTER SYSTEM SET dapat digunakan juga untuk :

  • merubah undo_retention yang digunakan :

    ALTER SYSTEM SET UNDO_RETENTION=5;

  • merubah undo_suppress_error :

    ALTER SYSTEM SET UNDO_SUPPRESS_ERRORS=FALSE;

  • merubah status dari undo_management, apakah MANUAL atau AUTO. Jika AUTO, berarti Automatic Undo Management diaktifkan :

 ALTER SYSTEM SET UNDO_MANAGEMENT=AUTO SCOPE=SPFILE;

DAFTAR PUSTAKA


Advertisements

Read Full Post »