Storage Structure dan Reationship Hubungan Datablok, extent dan segment Segment datablock datablock datablock ……… ……… ……… ……… ……… ……… ……… ……… ……… Extent datablock Extent datablock datablock Extent PARAMETER UNTUK KONTROL STORAGE PCFTREE dan PCTUSED parameter untuk mendefinisikan jumlah minimum prosentase blok yang harus disediakan (berupa free spaces) untuk operasi insert/update thd record yang ada dalam blok tersebut. INITRANS dan MAXTRANS mengontrol jumlah concurent transaksi yang dapat untuk memodifikasi ataupun create data pada suatu blok FREELIST tiap-tiap segment mempunyai satu atau lebih free list yang digunakan untuk mencatat blok-blok kosong yang akan digunakan untuk insert. DATA BLOK Bagian terkecil dari unit penyimpan di oracle Format data blok adalah sama, baik yang dipakai oleh index, cluster, ataupun store table Struktur Blok Data Common and variable header header terdiri dari informasi mengenai blok beserta alamatnya. Type blok dapat berupa data,index ataupun undo. Common blok header terdiri dari 24 bytes Table direktori bagian dari data blok yang berisi informasi mengenai table (terdiri dari 4 bytes) Row Directori berisi informasi mengenai aktual row dalam blok. Menempati 4xjumlah baris. Row data baris aktual yang disimpan di blok ini Free Spaces space yang tersedia untuk baris baru.s Struktur Blok Data Legenda Header Direktori Tabel Direktori Baris Ruang kosong Baris Data PARAMETER PENGONTROL BLOK DATA Terdiri dari PCTFREE dan PCTUSED Misal PCTFREE=20 dan PCTUSED =40, maka : – – – – – Blok hanya bisa menerima data hingga terisi penuh 80% Sisa 20% (PCTFREE) untuk operasi update Saat blok terisi 80%, blok tidak dapat menerima record. Blok dapat menerima data jika memiliki free space lebih dari 60% space yang telah digunakan kurang dari 40% (PCTUSED) Selanjutnya blok dapat menerima data hingga 80%, demikian seterusnya…. Proses pengisian Blok •Baris data hanya dapat mengisi datablok hingga 80% 20% untuk update baris yang sudah ada 20% •Tidak ada record baru yang dapat dimasukan hingga space dalam blok yang digunakan kurang dari 40% Header Direktori Tabel Direktori Baris Ruang kosong Baris Data Proses pengisian Blok Jika space yang digunakan kurang dari 40%(PCTUSED), blok ini dapat menerima masukan record lagi hingga mencapati 80% Header Direktori Tabel Direktori Baris Ruang kosong Baris Data Contoh skenario PCTFREE dan PCTUSED Operasi banyak melibatkan update yang meningkatkan ukuran record – – Operasi banyak melibatkan insert dan delete, tapi sedikit update yang meningkatkan ukuran record – – PCTFREE : 20 PCTUSED : 40 PCTFREE : 5 PCTUSED : 60 (free space dapat segera digunakan) Ukuran table dengan baris sangat besar, operasi banyak melibatkan select, jarang sekali update – – PCTFREE : 3 (free space yang tidak digunakan sedikit mungkin) PCTUSED : 40 Default PCTFREE dan PCTUSED Default untuk PCTFREE : 10 Default untuk PCTUSED : 40 PCTFREE dan PCTUSED dapat dbuat saat create table – Create table mhs ( nim char(2), nama varchar2(30)) PCTREE 20 PCTUSED 40; INITRANS dan MAXTRANS InitTrans menentukan jumlah slot yang tersedia untuk transaksi pada sebuah blok Setiap blok punya blok header yang salah satu bagiannya menyimpan transaction table, yaitu transaksi mana saja yang sedang melakukan locking pada record yang ada pada blok tersebut. Jika terjadi multiple transaction, space pada blok header dialokasikan untuk setiap transaksi. default InitTrans : 1 Untuk index blok : 2. INITRANS dan MAXTRANS MaxTrans maksimum jumlah transaksi yang dapat dilakukan secara simultan pada suatu blok Maximum nilai MaxTrans : 255 Jika kebanyakan baris berukuran besar dan sedikit user yang mengakses baris-baris tersebut, set InitTrans kecil. AUTOMATIC SPACE MANAGEMENT Merupakan fitur baru pada oracle 9i Untuk menghindari adanya block contention, atau menghitung berapa jumlah free list group dan berapa nilai PCTUSED yang optimal; Disarankan digunakan untuk data-data yang tidak terstruktur, misal BLOB atau CLOB AUTOMATIC SPACE MANAGEMENT SQL> Create tablespace test_auto datafile 'd:\db\mydb1\autotab.ora' size 512k extent management local segment space management auto; EXTENTS Merupakan kumpulan data blok yang saling berdampingan (kontigu) Jika suatu segment membutuhkan tambahan space, maka akan ditambahkan dalam satuan extents Parameter Pengontrol Extents Initial ukuran pertama extent untuk sebuah segment, dialokasikan ketika segment dibuat pertama kali Next ukuran extent kedua untuk segment PctIncrease parameter yang menentukan berapa kali besar extent yang akan dibuat dibandingkan dengan besar extens sebelumnya Parameter Pengontrol Extents MINEXTENTS jumlah minimum extent yang dialokasikan ketika segment dibuat MAXEXTENTS jumlah maximum extent yang diperbolehkan dalam suatu segment Penggunaan parameter extent SQL> Create tablespace test2 datafile 'd:\db\mydb1\myTest2.ora' size 512k autoextend on next 5M maxsize 20M default storage(initial 10K PCTIncrease 0 maxextents unlimited); SEGMENTS • Merupakan unit logical storage yang terdiri dari satu atau lebih extents. • Kumpulan Extents membentuk Segment. • Ukuran segment adalah total dari seluruh ukuran extents • Terdapat 11 jenis segment, yang dapat dikelompokan dalam table sebagai berikut : SEGMENTS Tipe Segment Cache Undo Table Cluster Index Non-Segment Sort Table Partition Index Partition Table subpartition Index subpartition Keterangan Tak dapat dikendalikan oleh DBA, dikendalikan oleh instance Dapat dikendalikan, disebut juga rollback segment Bisa dikendalikan, disebut juga data segment Bisa dikendalikan, jarang digunakan Bisa dikendalikan Untuk operasi(procedure, function, triger), view,dll Kendali DBA minimal, disebut juga temporary segment Fitur baru (oracle 8) Fitur baru (oracle 8) Fitur baru (oracle 8i) Fitur baru (oracle 8i) Informasi struktur penyimpanan Informasi struktur penyimpanan dapat dilihat melalui data dictionary view : – – – – DBA_Segments informasi tentang segment DBA_tablespaces informasi tentang tablespaces DBA_extents informasi tentang extents secara detail (termasuk segmentnya) DBA_free_space informasi tentang jumlah free spaces Informasi struktur penyimpanan SQL> select owner, segment_type, tablespace_name, file_id, bytes from dba_extents where owner='ALI'; OWNER SEGMENT_TYPE TABLESPACE_NAME FILE_ID BYTES ---------- -----------------------------------------------------------------------------------------------ALI TABLE TEST 7 65536 ALI TABLE SYSTEM 1 65536 ALI TABLE SYSTEM 1 65536 Informasi struktur penyimpanan SQL> Select tablespace_name, max(bytes) largest,min(bytes) smallest, count(*) ext_count from dba_free_space group by tablespace_name; TABLESPACE_NAME LARGEST SMALLEST EXT_COUNT ------------------------------ ---------- ---------- -----------------------------------INDX 10420224 10420224 1 SYSTEM 3080192 3080192 1 TEST 5111808 5111808 1 TOOLS 10420224 10420224 1 TS1 3080192 3080192 1 UNDOTBS1 983040 983040 1 USERS 26148864 26148864 1