+ All Categories
Home > Documents > Basis data_Modul - DBA

Basis data_Modul - DBA

Date post: 25-Oct-2015
Category:
Upload: rizwan-novian
View: 37 times
Download: 3 times
Share this document with a friend
Description:
Basdat
Popular Tags:
47
Modul DBA (Database Administrator) ORACLE 9i Disusun Oleh : Viddi Mardiansyah S.Si. MT.
Transcript
Page 1: Basis data_Modul - DBA

Modul DBA (Database Administrator)

ORACLE 9i

Disusun Oleh :

Viddi Mardiansyah S.Si. MT.

Page 2: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 1

ARSITEKTUR ORACLE

Background Process Kumpulan proses yang membentuk arsitektur Oracle terdiri dari dua bagian, yaitu :

1. Background Processes Proses yang di-run di latar belakang, dan tidak memiliki tampilan GUI (Graphical User Interface) Di DBMS ORACLE proses yang mandatory untuk background processes terdiri dari : a. Background processes pembentuk instance b. Listener c. Server Processes Sedangkan proses yang optional, terdiri dari a. Dispatcher b. Management Server c. Network Management Agent d. Data Gatherer

2. Foreground Processes Proses yang di-run di latar depan, dan biasanya memiliki tampilan GUI. Di DBMS ORACLE proses foreground processes terbagi atas : a. Server Application b. Client Application

Process

Background Foreground

Mandatory Optional Server Application. Client Application

Instance Instance sebagai operasi (process) didalam arsitektur ORACLE instance dari sudut pandang processes dan bagian pembentuknya dapat digambarkan sebagai berikut :

Terlihat bahwa instance dan server processes digambarkan sebagai suatu operasi, sementara database digambarkan sebagai sebuah tipe. Bahwa instance adalah suatu background process dapat dilihat dari menu Control Panel| Administrative Tools|Services pada windows anda.

Database

Instance

ServerProcesses

Database

Instance

ServerProcesses

Page 3: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 2

Sebuah instance merupakan sebuah kumpulan background process, dimana harus terdiri atas :

1. Checkpointer, disingkat ckpt 2. Database Writer, disingkat dbw0 3. Log-Writer, disingkat lgwr 4. Process-Monitor, disingkat pmon 5. System-Monitor, disingkat smon 6. Recover disingkat reco

Database

DatabaseWriter

ServerProcesses

Log Writer Checkpointer

ProcessMonitor

SystemMonitor Recover

akan tetapi instance bisa dipandang tidak hanya sebagai sebuah operasi, melainkan juga sebagai sebuah tipe. Dapat dilihat pada gambar disamping. Dapat dijelaskan disini, kotak pertama berisi nama tipe, kotak kedua berisi bagian-bagian tipe, kotak ketiga adalah operasi-operasi eksternal yang bisa dilakukan ke objek dari tipe tersebut

Database Seperti halnya dengan instance yang dimodelkan sebagai tipe, database juga dapat dimodelkan sebagai sebuah tipe, seperti dapat dilihat pada gambar berikut ini :

Dapat dilihat terdapat keterkaitan antara database dan instance, yaitu pada instance terdapat Data cache dan Log cache, sedangkan pada database terdapat Data file dan Log file. Dimana Data file adalah data yang disimpan didalam Disk, sedangkan Data cache adalah data yang disimpan didalam memori. Log File merupakan transaction log yang berada didalam Disk, sedangkan Log cache adalah transaction log

yang berada di memori.

Instance

Data cacheLog cacheRepository cacheMiscellaneous cacheJava cache

StartStop

Database

Data fileLog fileConfiguration file

MountOpen

Page 4: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 3

Di Oracle istilah yang telah digambarkan tadi agak berbeda dalam penulisannya meskipun mempunyai arti yang sama, berikut ini adalah istilah yang dipakai dalam Oracle. Instance

Buffer cacheLog bufferShared poolLarge poolJava pool

Database

Data fileRedo log fileControl file

Data, Log dan Metadata Untuk memudahkan pemahamannya, perhatikan ilustrasi berikut ini Misal kita memiliki sebuah table dengan nama T, dengan sebuah column dengan nama C, yang pada awalnya tidak memiliki atau tidak berisi satu record pun. Seadainya table ini sudah dimasukkan kedalam memori, maka pada saat itu memori instance akan berisi sebagai berikut :

Log cacheData cacheTC

Metadata cacheDBA_tablesTable_Name Num_rowsT 0

kemudian jika kita memasukkan satu record ke dalam table T dengan statement INSERT INTO T VALUES (3). Maka akan didapat gambaran sebagai berikut :

Log cache

insert into t values (3);

Data cacheTC

Metadata cacheDBA_tablesTable_Name Num_rowsT 13

Disini terlihat jelas bahwa data cache berisi data, log cache berisi transaction log statement pemasukkan data (bukan berisi datanya itu sendiri), dan metadata cache berisi informasi tentang data. Perubahan pada data cache akan masuk ke data file, perubahan pada log cache akan masuk ke log files.

Page 5: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 4

INSTANCE

Instance Name Nama instance pada intinya berbeda dengan nama database, karena instance dikenal di background process, sedangkan nama database adalah nama untuk membangun database dalam hal ini kita lihat nama database tersebut menjadi nama folder dari database yang dibangun. Nama instance dapat dilihat setelah sebuah database tersebut dibangun di menu Control Panel|Administrative Tools|Services. Berikut ini adalah contoh tampilan folder database dan background processes dari database d1 dengan nama instance i1.

Setelah database tercipta, maka pada register windows, instance untuk database tersebut juga tercipta. Lihat pada tampilan berikut ini :

Page 6: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 5

Operasi-operasi yang dapat dilakukan pada instance adalah operasi Start, Stop, Alter. Operasi Start dan Stop mudah dilakukan di windows, sedangkan untuk operasi Alter biasanya lebih banyak dilakukan dalam programming. Lihat tampilan berikut untuk operasi Start dan Stop dalam menu Administrative Tools|Services

Page 7: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 6

PEMBUATAN DATABASE DENGAN SCRIPT

Pembuatan Database Dalam membuat database di Oracle, terlebih dulu kita harus mempersiapkan folder-folder yang akan digunakan untuk membangun database tersebut. Folder yang dibutuhkan untuk membangun database tersebut dapat dibangun dari mode DOS (Disk Operating System) atau dari Windows Explorer, antara lain sebagai berikut : set ORACLE_BASE = C:\ORACLE set ORACLE_HOME = %ORACLE_BASE%\90 set ORACLE_SID=<InstanceDatabaseName> mkdir %ORACLE_BASE%\admin\<DatabaseName> mkdir %ORACLE_BASE%\admin\<DatabaseName>\bdump mkdir %ORACLE_BASE%\admin\<DatabaseName>\cdump mkdir %ORACLE_BASE%\admin\<DatabaseName>\udump mkdir %ORACLE_BASE%\oradata\<DatabaseName>

Berikut ini adalah sintaks untuk membuat database CREATE DATABASE <DatabaseName> MAXINSTANCES 1 MAXLOGHISTORY 1 MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXDATAFILES 100 DATAFILE '<ORACLE_BASE>\oradata\<DatabaseName>\system01.dbf' SIZE 250M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED CHARACTER SET WE8MSWIN1252 NATIONAL CHARACTER SET AL16UTF16 LOGFILE GROUP 1 ('<ORACLE_BASE>\oradata\<DatabaseName>\redo01.log') SIZE 2560K [, GROUP 2 ('<ORACLE_BASE>\oradata\<DatabaseName>\redo02.log') SIZE 2560K, GROUP 3 ('<ORACLE_BASE>\oradata\<DatabaseName>\redo03.log') SIZE 2560K];

Pembuatan Tablespace Berikut ini adalah sintaks untuk membuat tablespace CREATE TABLESPACE "INDX" LOGGING DATAFILE '<ORACLE_BASE>\oradata\<DatabaseName>\indx01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL; CREATE TABLESPACE "TOOLS" LOGGING DATAFILE '<ORACLE_BASE>\oradata\<DatabaseName>\tools01.dbf' SIZE 10M REUSE AUTOEXTEND ON NEXT 320K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL; CREATE TABLESPACE "USERS" LOGGING DATAFILE '<ORACLE_BASE>\oradata\<DatabaseName>\users01.dbf' SIZE 25M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;

Page 8: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 7

Pembuatan Repository Berikut ini adalah sintaks untuk membuat repository @<ORACLE_HOME>\rdbms\admin\catalog.sql; @<ORACLE_HOME>\rdbms\admin\catexp7.sql; @<ORACLE_HOME>\rdbms\admin\catblock.sql; @<ORACLE_HOME>\rdbms\admin\catproc.sql; @<ORACLE_HOME>\rdbms\admin\catoctk.sql; @<ORACLE_HOME>\rdbms\admin\catobtk.sql; @<ORACLE_HOME>\rdbms\admin\caths.sql; @<ORACLE_HOME>\rdbms\admin\owminst.plb; connect SYSTEM/manager @<ORACLE_HOME>\sqlplus\admin\pupbld.sql; connect SYSTEM/manager set echo on spool <ORACLE_HOME>\assistants\dbca\logs\sqlPlusHelp.log @<ORACLE_HOME>\sqlplus\admin\help\hlpbld.sql helpus.sql;

Page 9: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 8

ARSITEKTUR DATABASE ORACLE

Arsitektur Fisik Secara fisik, dalam sebuah database Oracle terdiri atas :

- Configuration Files Digunakan untuk menyimpan konfigurasi dari database (bukan konfigurasi dari instance). Configuration files berisi fixed-length records. Configuration files berisi antara lain : • Nama Database • Checkpoint • Backup History • Log Sequence • Nama-nama data files • Timestamp pembuatan database • Nama-nama tablespaces

- Data Files Digunakan untuk menyimpan data. Data files selalu merupakan bagian dari suatu tablespace

- Log Files Digunakan untuk menyimpan transaction-Log. File ini menyimpan SQL statement yang berisikan transaksi. Log files juga menyimpan informasi dalam bentuk record. Note : Operasi SELECT (tanpa clausa FOR UPDATE) tidak akan direkam pada

log files karena bukan sebuah transaksi. Dalam Oracle, transaction-log file ini sering disebut dengan Redo-Log files.

Dalam sebuah database, umumnya terdiri atas satu atau lebih configuration-files dan data-files dan dua atau lebih log-files. Untuk ilustrasinya dapat dilihat pada gambar berikut ini.

Config-Files

Log-Files DATABASE Data-Files

2

Page 10: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 9

Arsitektur Logikal Dalam database Oracle, arsitektur memisahkan secara logis antara basis data dengan tablespaces. Setiap basis data memiliki satu atau lebih tablespaces, dimana setiap tablespace memiliki nol atau lebih segment, setiap segmet memiliki satu atau lebih extent, dan setiap extent memiliki satu atau lebih database block. Untuk ilustrasinya dapat dilihat pada gambar disamping.

Arsitektur Fisik dan Arsitektur Logikal Untuk lebih memperjelas hubungan antar arsitektur fisik da arsitektur Logik dalam database Oracle, dapat dilihat pada ilustrasi gambar berikut ini

Segment

Extent

Database

Tablespace

DB-block

Config-Files

Log-Files DATABASE Data-Files

2

Segment

Extent

Tablespace

DB-block

Page 11: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 10

CONFIGURATION FILE / FILE CONTROL

Configuration-Files / Control-Files Configuration files / Control files adalah sebuah file biner yang dibaca oleh Oracle instance untuk membuka data files dan log files. Selama database beroperasi / aktif, Oracle instance akan me-refresh nilai-nilai record pada config-file. Besar kecilnya database configuration-file tergantung pada banyaknya jumlah file dalam database tersebut, makin banyak jumlah file dalam database maka database configuration-file juga turut membesar, akan tetapi hal ini terjadi bukan pada saat penambahan file, melainkan pada saat database configuration-file di-ReCreate. Ukuran configuration-file dipengaruhi juga nilai parameter-parameter berikut ini :

- MAXLOGFILES, diset pada saat pembuatan database - MAXDATAFILES, diset pada saat pembuatan database - DB_FILES, dispesifikasikan pada instance-configuration files

Default nama extention dari configuration-files yang diberikan oleh Oracle jika dilihat dengan windows explorer mempunyai extention CTL.

Mirroring Mirroring dalam hal ini adalah adanya salinan (backup) dari file-file yang sedang dioperasikan dan dibuka pada saat yang sama dan memberikan layanan yang sama pula. Mirroring database files dalam level DBMS hanya berlaku untuk configuration-files dan log-files (tidak berlaku untuk data-files). ########################################### # File Configuration ########################################### control_files=("C:\oracle\oradata\POS\control01.ctl", "C:\oracle\oradata\POS\control02.ctl") Pada contoh diatas terdapat dua buah configuration-file yang bersifat mirroring yang dimaksudkan untuk mempermudah proses operasi database. Setelah mirroring diciptakan, perubahan ini harus disimpan dan instance harus di-Restart agar dapat segera berfungsi. Restart disini dimaksudkan agar instance sekarang mengoperasikan dua buah configuration-file sekaligus.

Startup Nomount Pada saat suatu instance di-Start tanpa menggunakan fungsi Mount, maka instance tersebut tidak akan memperdulikan nilai parameter pada control_files. Artinya Instance akan tetap di mulai (di-Start) walaupun configuration-files tidak terdapat pada lokasi (folder) yang disebutkan.

Startup Mount Pada saat suatu instance di-Start dengan menggunakan fungsi Mount, maka instance akan mulai mengecek nilai parameter pada control_files. Dimana instance akan memeriksa apakah benar configuration-files ada pada lokasi (folder) yang disebutkan.

Page 12: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 11

Jika tidak ada, maka instance akan tetap di mulai (di-Start), akan tetapi instance akan memberikan pesan kesalahan Database Not Mounted. Saat database di-Mount, instance baru hanya melakukan pemeriksaan ke configuration-files. Instance belum memeriksa apakah semua log files dan data files yang tertera pada configuration-files benar-benar ada secara fisik.

Startup Open Pada tahap ini, instance mulai melakukan pemeriksaan apakah data files dan log files memang benar-benar ada dilokasi (folder) yang telah disebutkan. Jika terdapat file yang missing atau corrupt, instance akan tetap di mulai (di-Start) sambil memberikan pesan kesalahan yang terjadi. Open Database dapat dicapai dengan sequence berikut ini : SQL> STARTUP NOMOUNT SQL> ALTER DATABASE MOUNT; SQL> ALTER DATABASE OPEN;

Atau SQL> STARTUP

Atau SQL> STARTUP OPEN

Page 13: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 12

LOG FILE / TRANSACTION LOG FILE

Log-Files Log-files / Transaction Log-files merupakan jenis file yang terpenting kedua, dimana jika Log-files ini terjadi missing atau corrupt, maka akan mengakibatkan database tersebut tidak dapat dibuka sama sekali. Operasi-operasi yang dilakukan dalam Log-files adalah : • ADD GROUP • DROP GROUP • ADD MEMBER • DROP MEMBER • SWITCH (group) • RENAME

Mekanisme : Rotasi Log-files menyimpan semua aktifitas transaction log yang dilakukan dalam database. Log-files biasanya tidak ingin disimpan terlalu lama, karena jika semuanya disimpan maka disk yang ada akan penuh dengan log-files saja. Sehingga dibutuhkan sebuah life-time transaction log sehingga tidak jatuh terlalu singkat untuk menyimpan data transaction yang dilakukan dalam sebuah database ataupun terlalu lama sehingga disk akan penuh dengan data transaksi yang tidak diinginkan. Log transaction yang ada akan hilang atau dihapus setelah mencapai saat life-time yang telah ditentukan, sehingga kita tidak bisa me-Recover data transaction yang telah hilang tersebut. Oracle memberikan keleluasaan untuk mengatur life-time tersebut dengan Mekanisme Rotasi. Ilustrasi mekanisme ini dapat dilihat pada gambar berikut ini : Pada gambar diatas, bila Grup 1 telah penuh, maka instance akan menyimpan data transaksi di Grup 2. dan bila Grup 2 telah penuh maka instance akan menyimpan data transaksi kembali ke Grup1.

Group 1 Group 2

Redo1a.log

Redo2a.log

Page 14: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 13

Group 1 Group 2

Redo1a.log

Redo2a.log

Redo1b.log

Redo2b.log

Disk C

Disk D

Mirroring Mirroring dalam Log-files mempunyai peranan yang penting seperti halnya dengan

configuration-file. Oracle menyediakan cara mirroring log files untuk meningkatkan kehandalan pengoperasian databasenya. Hal ini dikarenakan database sangat rentan dengan kegagalan atau mungkin kehilangan data. Proses mirroring ini biasanya dilakukan pada media disk yang berbeda untuk keamanan semata, sehingga jika pada media disk yang ada terjadi kerusakan fisik, maka yang pada posisi mirror diharapkan tidak terjadi kerusakan dan masih dapat dilakukan pengaksesan data. Ilustrasi mirror ini dapat dilihat pada gambar disamping.

Pada intinya mirroring disini adalah pemisahan member-member (dalam Group yang sama) ke media disk yang berbeda, dan bukan memisahkan group ke media disk yang berbeda.

Operasi : SWITCH Operasi SWITCH ini dipakai untuk memindahkan group yang aktif dalam implementasinya. SQL> connect/ as sysdba SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination C:\oracle\920\RDBMS Oldest online log sequence 87 Current log sequence 89 SQL> set linesize 120 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# ---------- ---------- ---------- ---------- ---------- --- ----------------------- 1 1 88 2621440 1 NO INACTIVE 157465 2 1 89 2621440 1 NO CURRENT 177539 3 1 87 2621440 1 NO INACTIVE 157463

Page 15: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 14

SQL> column member format a50 SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER ---------- ------- ------- ------------------------------------------ 1 STALE ONLINE C:\ORACLE\ORADATA\POS\REDO01.LOG 2 ONLINE C:\ORACLE\ORADATA\POS\REDO02.LOG 3 ONLINE C:\ORACLE\ORADATA\POS\REDO03.LOG

kemudian kita lakukan operasi SWITCH agar mengaktifkan group 1. SQL> alter system switch logfile; System altered. SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- 1 1 88 2621440 1 NO INACTIVE 157465 2 1 89 2621440 1 NO ACTIVE 177539 3 1 90 2621440 1 NO CURRENT 177553 SQL> alter system switch logfile; System altered. SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- 1 1 91 2621440 1 NO CURRENT 177554 2 1 89 2621440 1 NO INACTIVE 177539 3 1 90 2621440 1 NO INACTIVE 177553 SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination C:\oracle\920\RDBMS Oldest online log sequence 89 Current log sequence 91

Page 16: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 15

Operasi : DROP - Group Operasi DROP ini dipakai untuk menghapus group yang ada. Sebagai contoh kita akan menghapus group 3. SQL> alter database drop logfile group 3; Database altered. SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- 1 1 91 2621440 1 NO CURRENT 177554 2 1 89 2621440 1 NO INACTIVE 177539 SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER ---------- ------- ------- ------------------------------------------ 1 ONLINE C:\ORACLE\ORADATA\POS\REDO01.LOG 2 ONLINE C:\ORACLE\ORADATA\POS\REDO02.LOG

kemudian cek di Operating System apakah file tersebut telah terhapus. SQL> host dir C:\ORACLE\ORADATA\POS\REDO*.log Volume in drive C is SYSTEM Volume Serial Number is 10FA-A36F Directory of C:\ORACLE\ORADATA\POS 13/11/2005 22:52 2.621.952 REDO01.LOG 13/11/2005 22:51 2.621.952 REDO02.LOG 13/11/2005 22:52 2.621.952 REDO03.LOG 3 File(s) 7.865.856 bytes 0 Dir(s) 694.345.728 bytes free

Terlihat bahwa file tidak terhapus di level Operating System. Sehingga penghapusan file harus dilakukan di level Operating System.

Operasi : ADD MEMBER Operasi ADD MEMBER ini dipakai untuk menambah member untuk menciptakan mirroring log-files. SQL> alter database 2 add logfile member 3 'C:\ORACLE\ORADATA\POS\REDO01B.LOG' to group 1, 4 'C:\ORACLE\ORADATA\POS\REDO02B.LOG' to group 2; Database altered.

Page 17: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 16

SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- 1 1 91 2621440 2 NO CURRENT 177554 2 1 89 2621440 2 NO INACTIVE 177539 SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER ---------- ------- ------- ---------------------------------------- 1 ONLINE C:\ORACLE\ORADATA\POS\REDO01.LOG 2 ONLINE C:\ORACLE\ORADATA\POS\REDO02.LOG 1 INVALID ONLINE C:\ORACLE\ORADATA\POS\REDO01B.LOG 2 INVALID ONLINE C:\ORACLE\ORADATA\POS\REDO02B.LOG

perhatikan bahwa v$logfile menyatakan bahwa status member yang baru saja dibuat adalah INVALID, kemudian akan kita ubah menjadi VALID. SQL> alter system switch logfile; System altered. SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER ---------- ------- ------- ----------------------------------------- 1 ONLINE C:\ORACLE\ORADATA\POS\REDO01.LOG 2 ONLINE C:\ORACLE\ORADATA\POS\REDO02.LOG 1 INVALID ONLINE C:\ORACLE\ORADATA\POS\REDO01B.LOG 2 ONLINE C:\ORACLE\ORADATA\POS\REDO02B.LOG SQL> alter system switch logfile; System altered. SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER ---------- ------- ------- ----------------------------------------- 1 ONLINE C:\ORACLE\ORADATA\POS\REDO01.LOG 2 ONLINE C:\ORACLE\ORADATA\POS\REDO02.LOG 1 ONLINE C:\ORACLE\ORADATA\POS\REDO01B.LOG 2 ONLINE C:\ORACLE\ORADATA\POS\REDO02B.LOG SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- 1 1 93 2621440 2 NO CURRENT 177572 2 1 92 2621440 2 NO INACTIVE 177570

Page 18: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 17

Operasi : ADD GROUP Operasi ADD GROUP ini dipakai untuk menambah Group kedalam database. SQL> alter database 2 add logfile 3 ('C:\ORACLE\ORADATA\POS\REDO03.LOG', 4 'C:\ORACLE\ORADATA\POS\REDO03B.LOG') 5 size 1M; Database altered. SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- 1 1 93 2621440 2 NO CURRENT 177572 2 1 92 2621440 2 NO INACTIVE 177570 3 1 0 1048576 2 YES UNUSED 0 SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER ---------- ------- ------- ------------------------------------------ 1 ONLINE C:\ORACLE\ORADATA\POS\REDO01.LOG 2 ONLINE C:\ORACLE\ORADATA\POS\REDO02.LOG 1 ONLINE C:\ORACLE\ORADATA\POS\REDO01B.LOG 2 ONLINE C:\ORACLE\ORADATA\POS\REDO02B.LOG 3 ONLINE C:\ORACLE\ORADATA\POS\REDO03.LOG 3 ONLINE C:\ORACLE\ORADATA\POS\REDO03B.LOG 6 rows selected.

Lihat untuk pertama kali, SEQUENCE# bernilai 0 untuk group yang baru, dengan status UNUSED. Kemudian akan diubah dengan operasi SWITCH. SQL> alter system switch logfile; System altered. SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- 1 1 93 2621440 2 NO ACTIVE 177572 2 1 92 2621440 2 NO INACTIVE 177570 3 1 94 1048576 2 NO CURRENT 177582

Page 19: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 18

Operasi : DROP - Member Operasi DROP ini dipakai untuk menghapus member yang ada. Sebagai contoh kita akan menghapus member dari group 3 yang baru dibuat. (yang sekarang statusnya current) SQL> alter database 2 drop logfile member 3 'C:\ORACLE\ORADATA\POS\REDO03B.LOG'; alter database * ERROR at line 1: ORA-01609: log 3 is the current log for thread 1 - cannot drop members ORA-00312: online log 3 thread 1: 'C:\ORACLE\ORADATA\POS\REDO03.LOG' ORA-00312: online log 3 thread 1: 'C:\ORACLE\ORADATA\POS\REDO03B.LOG'

Kesalahan terjadi karena kita tidak dapat menghapus member (dan group) bila sedang dalam keadaan current. Oleh karena itu harus kita switch terlebih dahulu. SQL> alter system switch logfile; System altered. SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- 1 1 96 2621440 2 NO CURRENT 177589 2 1 95 2621440 2 NO INACTIVE 177587 3 1 94 1048576 2 NO INACTIVE 177582 SQL> alter database 2 drop logfile member 3 'C:\ORACLE\ORADATA\POS\REDO03B.LOG'; Database altered. SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER ---------- ------- ------- ----------------------------------------- 1 ONLINE C:\ORACLE\ORADATA\POS\REDO01.LOG 2 ONLINE C:\ORACLE\ORADATA\POS\REDO02.LOG 1 ONLINE C:\ORACLE\ORADATA\POS\REDO01B.LOG 2 ONLINE C:\ORACLE\ORADATA\POS\REDO02B.LOG 3 ONLINE C:\ORACLE\ORADATA\POS\REDO03.LOG

Latihan :

• Hilangkan member dan group 3 • Buatlah Group 3 dan 4 berikut 2 buah member

Page 20: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 19

TABLESPACE Tablespace berasal dari dua kata ‘Table’ dan ‘Space’ yang mempunyai makna ruang untuk tabel. Sehingga motivasi utama dari tablespace adalah manageability, untuk memudahkan pengelolaan table. Tanpa adanya tablespace, semua table akan menumpuk di satu tempat. Dengan adanya tablespace, kita dapat mengelompokkan beberapa table diruang tertentu, dan beberapa table yang lain diruang yang lainnya. Saat ini beberapa DBMS lainnya juga memakai konsep tablespace (contohnya DB2, Informix) dan mengimplementasikan tablespace (contoh SQL Server memakai istilah ‘Database’).

Jenis Tablespace Jenis-jenis tablespace yang ada pada oracle dapat dilihat pada gambar berikut ini : Didalam sebuah Oracle database, hanya satu tablespace yang harus ada (mandatory), yakni tablespace bernama SYSTEM, dan bersifat system-defined (‘system’ disini berarti Database Management System atau DBMS). Tablespace ini juga khusus, karena merupakan satu-satunya tablespace yang bisa berisi objek non-segment. Untuk tablespace yang lain harus buat oleh user (hal ini dapat dilihat pada script pembuatan sebuah database, dimana untuk tablespace yang lain diletakkan pada script yang berbeda dengan script pembuatan tablespace ‘SYSTEM’), itu sebabnya tablespace ini disebut ‘user-defined’. Sedangkan untuk Globally-managed, Locally-managed, Permanent dan Temporary akan dibahas pada bab selanjutnya. Berikut ini adalah 7 buah tablespace yang paling umum atau sering digunakan dalam membangun database Oracle.

Nama Tablespace Tipe Segment Sifat dan Keterangan Tables Table User’s table/data Indexes Index User’s indexes Clusters Cluster User’s clusters Undos Undo System’s undos Sorts Sort System’s sorts

System Table & Index System’s repository, User’s library

Tool Table & Index User’s metadata

TABLESPACE

User-defined System-defined

Locally-managed Globally-managed

Permanent Temporary Permanent Temporary

Page 21: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 20

Dari sini dapat dilihat bahwa kriteria utama untuk memisahkan tablespace adalah melalui tipe segment yang ada didalamnya. Kemudian kita baru dapat memisahkan tablespace dari sifat metadatanya. Dalam hal ini, kriteria ini yang membedakan tablespace SYSTEM dan TOOL dengan tablespace yang lainnya. Kriteria berikutnya adalah memisahkan antara apa yang berasal dari Oracle (system-defined) dan dengan apa yang berasal dari user (user-defined). Kriteria inilah yang membedakan antara tablespace SYSTEM dengan tablespace TOOL. Dari tabel tersebut juga dapat dilihat bahwa untuk lima tablespace yang pertama (Tables sampai dengan Sorts) memakai nama benda jamak, dalam hal ini adalah untuk memperlihatkan bahwa tablespace ini berisi kumpulan segments. Sedangkan untuk dua tablespace terakhir (System dan Tool) memakai nama benda tunggal, hal ini untuk memperlihatkan pemisahan kedua tablespace ini dengan tablespace yang lainnya bukan berdasarkan jenis segmennya.

Operasi untuk Tablespace Operasi-operasi yang digunakan pada umumnya sama dengan operasi-operasi objek yang lainnya, antara lain : • CREATE

Berikut ini adalah Sintaks untuk penulisan CREATE TABLESPACE

Page 22: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 21

Contoh sintaks membuat tablespace CREATE TABLESPACE POLTEKPOS DATAFILE ‘C:\ORACLE\ORADATA\POLTEK\DTPOS.DBF’ SIZE 5 M;

• ALTER

Berikut ini adalah Sintaks untuk penulisan ALTER TABLESPACE

Page 23: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 22

Contoh sintaks mengubah tablespace ALTER TABLESPACE POLTEKPOS ADD DATAFILE ‘C:\ORACLE\ORADATA\POLTEK\DTPOS1.DBF’ SIZE 5 M;

• DROP

Ada tiga kasus dalam menghapus sebuah tablespace, hal ini dikarenakan : - Tablespace tidak berisi segment

Contoh sintaks menghapus tablespace DROP TABLESPACE POLTEKPOS;

- Tablespace berisi segment tanpa kendala referensial ke objek pada

tablespace yang lain Contoh sintaks menghapus tablespace DROP TABLESPACE POLTEKPOS INCLUDING CONTENTS;

Page 24: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 23

- Tablespace berisi segment dengan kendala referensial ke objek pada tablespace yang lain Contoh sintaks menghapus tablespace DROP TABLESPACE POLTEKPOS INCLUDING CONTENTS CASCADE CONSTRAINTS;

Dalam Oracle versi 9i ada fasilitas untuk membuang tablespace secara langsung berikut dengan data file nya. Contohnya : DROP TABLESPACE POLTEKPOS INCLUDING CONTENTS AND DATAFILES;

Page 25: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 24

DATAFILES Seperti halnya Configuration-files dan log-files, data-files adalah bentuk fisik yang dapat dilihat oleh user dalam menggunakan database Oracle. Operasi yang berlaku untuk datafiles adalah : • ADD • OFFLINE • ONLINE • RESIZE • RENAME

Dalam operating system yang mempunyai arsitektur 32-bit, ukuran data file yang dibuat tidak memungkinkan untuk membuat sebuah data-files dengan ukuran lebih dari 2048 MB (atau sama dengan 2 GB), hal ini dikarenakan cara perhitungan ukuran di database Oracle yang menggunakan Signed-bit. Akan tetapi jika operating system yang digunakan mempunyai arsitektur 64-bit dan database Oracle-nya juga 64-bit, maka kita dapat membuat sebuah datafiles yang mempunyai ukuran data file lebih dari 2048 MB (atau sama dengan 2 GB). Selanjutnya ukuran sebenarnya data yang dibuat dapat dilihat dari rumus berikut ini:

Data-File = Spesifikasi Ukuran + DB-block-size

Sebagai contoh, jika kita menspesifikasikan ukuran data sebesar 5120 KB (atau sama dengan 5 MB) dan besarnya DB-block-size adalah 2 KB, maka ukuran sebenarnya data-file yang dibuat adalah 5122 KB (bukan 5 MB). Tidak seperti configuration-files dan log-files yang dapat melakukan proses mirroring, untuk keamanan transaksinya, data-files tidak dapat melakukan proses mirroring secara langsung, akan tetapi harus menggunakan perangkat keras yang khusus (disk yang khusus) dan perangkat lunak yang khusus (contohnya Veritas). Data-files dapat diperbesar (extend), satuan untuk perbesaran ini disebut dengan extension. Dengan menggunakan Database Configuration Assistant kita dapat menset spesifikasi ini melalui kotak dialog seperti berikut. Pada gambar dapat dilihat bahwa data ditentukan dapat diperbesar 10 MB setiap kali perbesaran. Ekuivalensi dalam script untuk contoh gambar tersebut adalah sebagai berikut : DATAFILE ‘C:\ORACLE\ORADATA\POLTEK\DTPOS.DBF’ SIZE 5 M REUSE AUTOEXTEND ON NEXT 10240 KB;

Page 26: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 25

bila data dispesifikasikan agar tidak dapat diperbesar, maka AUTOEXTEND OFF, dan pada kotak dialog akan terlihat tampilan sebagai berikut :

Page 27: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 26

Latihan 1. Buatlah sebuah tablespace dengan nama Kelas Anda.

Contoh : CREATE TABLESPACE TI2A DATAFILE ‘C:\ORACLE\ORADATA\POLTEK\TI2A.DBF’ SIZE 5 M;

2. Jalankan statement berikut ini : SELECT * FROM DBA_TABLESPACES; Analisa hasil dari statement tersebut.

3. Jalankan statement berikut ini : SELECT * FROM DBA_DATA_FILES; Analisa hasil dari statement tersebut.

4. Jalankan statement berikut ini :

SELECT NAME, FILE#, STATUS FROM v$datafile; Analisa hasil dari statement tersebut.

5. Ubahlah ukuran tablespace yang anda buat Contoh : ALTER TABLESPACE TI2A ADD DATAFILE ‘C:\ORACLE\ORADATA\POLTEK\TI2A1.DBF’ SIZE 5 M; Lihat perubahan yang terjadi dengan DBA_TABLESPACES dan v$datafile

6. Ubah status tablespace anda yang semula ONLINE menjadi OFFLINE Contoh : ALTER TABLESPACE TI2A OFFLINE NORMAL;

7. Pindahkan tablespace yang anda buat ke tablespace yang baru. Contoh : ALTER TABLESPACE TI2A RENAME DATAFILE ‘C:\ORACLE\ORADATA\POLTEK\TI2A1.DBF’ TO ‘C:\ORACLE\ORADATA\POLTEK1\TI2A1.DBF’; o Apa yang terjadi pada saat menjalankan perintah tersebut, amati dan

lakukan sampai terjadi pemindahan tablespace. o Cek perubahan yang terjadi dengan DBA_TABLESPACES dan v$datafile

8. Buatlah sebuah USER yang mempunyai default ke tablespace yang anda buat. Contoh Format Penulisan : CREATE USER <NamaUser> IDENTIFIED BY <PasswordUser> DEFAULT TABLESPACE <NamaTablespace> ACCOUNT UNLOCK;

Page 28: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 27

9. Berikan hak akses pada user yang anda buat sebagai DBA, CONNECT dan RESOURCE. Contoh Format Penulisan : GRANT <HakAkses> TO <NamaUser>; Kemudian logout dengan DISCONNECT; Login kembali sebagai user yang baru anda buat

10. Buatlah table dibawah dengan contoh format penulisan sebagai berikut : CREATE USER <NamaTabel> (<NamaField-1> <NamaTipe-1> <Length-1>, <NamaField-2> <NamaTipe-2> <Length-2>,... <NamaField-n> <NamaTipe-n> <Length-n>) TABLESPACE <NamaTablespace>; Table : Mahasiswa

Field Name Data Tipe Primary Key NPM VarChar2(7) Yes Nama VarChar2(20) No Alamat VarChar2(30) No TglLahir Date No Table : MataKuliah

Field Name Data Tipe Primary Key KodeMK VarChar2(7) Yes NamaMK VarChar2(20) No SKS Integer No

Table : Perkuliahan

Field Name Data Tipe Primary Key NPM VarChar2(7) Yes KodeMK VarChar2(7) Yes HariJamPertemuan VarChar2(20) No RuangPertemuan VarChar2(20) No

11. Isilah masing-masing table yang dibuat tadi dengan minimal 5 buah data

Page 29: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 28

SEGMENT, EXTENT DAN BLOCK

Segment Segment adalah tipe untuk object-object yang persistent (disimpan permanen didalam disk). Secara sederhana ada 5 jenis segment yang sering dipergunakan dalam database oracle, yaitu :

• Table Segment • Index Segment • Cluster Segment • Undo Segment • Sort Segment

Dari kelima segment ini hanya Table Segment, Index Segment, dan Undo Segment dapat dilakukan proses eksplisist CREATE, ALTER, dan DROP. Untuk lebih lengkapnya, berikut ini adalah tipe-tipe segment yang ada pada database Oracle Tipe Segment Keterangan Cache Dikendalikan seluruhnya oleh Instance bukan oleh DBA

Undo Sering juga disebut dengan ROLLBACK SEGMENT, diatur oleh DBA

Table Sering juga disebut dengan DATA SEGMENT, diatur oleh DBA Cluseter Jarang dipergunakan, diatur oleh DBA Index Diatur oleh DBA Non-Segment Digunakan untuk operasi Procedure, function, trigger, package Sort Sering juga disebut dengan TEMPORARY SEGMENT Table Partition Muncul mulai Oracle versi 8i Index Partition Muncul mulai Oracle versi 8iTable Subpartition Muncul mulai Oracle versi 8i Index Subpartition Muncul mulai Oracle versi 8i

Klausa Storage Klausa storage digunakan sejalan dengan hirarki logical aspec dari suatu database, yaitu :

1. Database 2. Tablespace 3. Segment

Contoh penggunaan storage dapat dilihat sebagai berikut : CREATE TABLESPACE Tables DATAFILE ‘C:\ORACLE\ORADATA\DTPOS\TABLES01.DBF’ SIZE 5M AUTOEXTEND ON NEXT 5M DEFAULT STORAGE (INITIAL 160K NEXT 160K PCTINCREASE 0); CREATE TABLE t (a number) TABLESPACE tables STORAGE (INITIAL 80K NEXT 80K PCTINCREASE 0);

Page 30: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 29

Pada contoh pertama, klausa storage dispesifikasikan pada level tablespace, sedangkan pada contoh kedua, klausa storage dispesifikasikan pada level segment. Pada contoh pertama, menyatakan bahwa extent-extent ditablespace tables akan berukuran 160k, sedangkan pada contoh kedua extent-extent di segment t akan berukuran 80K. Dalam hal ini memang tidak ada hubungan langsung antara Tablespace dengan Extent, yang ada hanyalah hubungan langsung antara Tablespace dengan Segment, dan antara Segment dengan Extent. Artinya, statement pada contoh pertama menyatakan secara tidak langsung bahwa semua segment dalam tablespace tables akan memiliki extent sebesar 160K.

Extent Extent adalah sebuah objek yang merupakan gabungan satu atau lebih objek bertipe block sehingga block-block tersebut contiguous. Sederetan blok-blok yang tidak contiguous bukanlah suatu extent. Operasi yang berlaku pada extent hanyalah ALLOCATE dan DEALLOCATE

Block Block adalah bagian terkecil dari sebuah extent. Operasi yang berlaku pada block adalah DEALLOCATE.

Storage Extent Perhatikan contoh penggunaan dalam operasi CREATE TABLE berikut ini : CREATE TABLE Departemen (DeptId NUMBER(4), DeptName VARCHAR2(40)) TABLESPACE tables STORAGE (INITIAL 10K NEXT 10K PCTINCREASE 0 MAXEXTENTS 256); Bandingkan dengan code imaginer untuk melihat keterkaitan hirarki database secara logis CREATE TABLE SEGMENT Departemen (DeptId NUMBER(4), DeptName VARCHAR2(40)) TABLESPACE tables EXTENT (INITIAL 10K NEXT 10K PCTINCREASE 0 MAX 256); Terlihat adanya keterkaitan hirarki tablespace segment extent dalam penulisan kode diatas, dimana membuat segment (bertipe table) dengan nama Departemen, pada tablespace bernama tables, dengan initial extent 10Kb, next 10Kb dan maksimum dari extent sebanyak 256. Sintaks storage extent di dalam tablespace umumnya harus didahului dengan kata kunci DEFAULT. Perhatikan contoh berikut ini :

Page 31: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 30

CREATE TABLESPACE Tables DATAFILE ‘C:\ORACLE\ORADATA\DTPOS\TABLES01.DBF’ SIZE 5M AUTOEXTEND ON NEXT 5M MAXSIZE 2040M DEFAULT STORAGE (INITIAL 10K NEXT 10K PCTINCREASE 0 MAXEXTENTS UNLIMITED);

Storage Block Penggunaan blok diatur oleh nilai dari 2 buah parameter, yaitu :

- PCTFREE - PCTUSED

Dimana parameter ini diberikan pada saat operasi CREATE TABLE, CREATE INDEX, ALTER TABLE atau ALTER INDEX. Bila pemakaian suatu blok mempunyai nilai dibawah nilai PCTUSED, maka operasi INSERT diperbolehkan untuk memasukkan sebuah row atau record kedalam blok tersebut. Bila persentasi pemakaian suatu blok mencapai (100 - PCTFREE), maka operasi INSERT tidak bisa lagi memasukkan row atau record kedalam blok tersebut. Contoh penggunaannya : Jika DB_BLOCK_SIZE = 40 PCTFREE = 10 PCTUSED = 80, maka : • Operasi INSERT tidak akan bisa memasukkan row atau record kedalam blok bila

blok sudah dipakai sebanyak 90% (100% - 10%). Artinya operasi INSERT tidak akan memasukkan row atau record kedalam blok tersebut bila operasi INSERT-INSERT sebelumnya telah memakai ukuran 36Kb.

• Operasi INSERT kembali dapat memasukkan row atatu record kedalam blok jika pemakaian blok sudah dibawah 80% (sudah dibawah 32KB).

Page 32: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 31

TABLE SEGMENT Table segment biasa disebut dengan table, hal ini dikarenakan table adalah sebuah tipe, salah satu dari tipe segment.

Membuat Table Membuat table berarti membuat segment, adapun sintak untuk membuatnya adalah sebagai berikut : CREATE TABLE table_name ( field_name type_expr [NOT] {NULL} [CONSTRAINT constraint_name PRIMARY KEY PK_field_name] | [CONSTRAINT constraint_name UNIQUE Unique_field_name] | [CONSTRAINT constraint_name FOREIGN KEY FK_field_name] | [CONSTRAINT constraint_name CHECK expr_logic] ) [ORGANIZATION INDEX] [TABLESPACE tablespace_name] [STORAGE [MINEXTENTS number] |

[MAXEXTENTS number] | [INITIAL number] | [NEXT number] | [PCTINCREASE number]]

[PCTFREE number | PCTUSED number];

Index-Organized Table (IOT) Sebuah IOT bisa disebut sebagai index, dan bisa disebut sebagai table. Sebuat IOT disebut sebagai table karena operasi-operasi berikut ini :

- CREATE TABLE - ALTER TABLE - DROP TABLE - TRUNCATE TABLE - SELECT - INSERT - UPDATE - DELETE

Selain itu, IOT disebut sebagai sebuah index karena sebuah IOT disimpan secara fisik sebagai sebuah B-Tree (Index Segment). Berikut ini adalah contoh penggunaan IOT CREATE TABLE IOT_Pesanan ( KodePesanan NUMBER(5) NOT NULL, KodeCust NUMBER(5), Tanggal DATE, TOTAL NUMERIC(11,2), BrgDiterima CHAR, CONSTRAINT PK_IOT_PESANAN PRIMARY KEY (KodePesanan), CONSTRAINT C_IOT_PESANAN CHECK (BrgDiterima IN (‘N’,’Y’)) ) ORGANIZATION INDEX

Page 33: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 32

TABLESPACE indexes PCTTHRESHOLD 20 OVERFLOW TABLESPACE tables; Kemudian cek isi dari USER_SEGMENTS SELECT segment_name, segment_type, tablespace_name From user_segments; Hasilnya adalah : SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME ------------------------ -------------------- ---------------- SYS_IOT_OVER_5251 TABLE TABLES PK_IOT_PESANAN INDEX INDEXES Perhatikan terdapat satu table dengan nama yang system-defined (tidak didefinisikan oleh user) [SYS_IOT_OVER_5251] dan ada satu index yang namanya berasal dari nama constraint yang didefinisikan oleh user. Kemudian cobalah sintaks berikut ini dan kemudian perhatikan hasil yang muncul. SELECT table_name, tablespace_name From user_tables; Hasilnya adalah : TABLE_NAME TABLESPACE_NAME ------------------------------ -------------------------- IOT_PESANAN SYS_IOT_OVER_5251 TABLES SELECT index_name, tablespace_name From user_indexes; Hasilnya adalah : INDEX_NAME TABLESPACE_NAME ------------------------------ ------------------------------ PK_IOT_PESANAN INDEXES Terlihat bahwa ada tabel tambahan bernama [SYS_IOT_OVER_5251] dan justru table yang system-defined inilah yang jelas tablespacenya (TABLES). IOT_PESANAN sendiri tidak terdefinisi tablespacenya. Segment yang juga terdefinisi tablespacenya adalah PK_IOT_PESANAN yang bertipe index. Dari sini terlihat bahwa IOT memang secara storage (segment) merupakan sebuah index, namun sebagai ‘object’ dapat dioperasikan sebagai table (dengan operasi SELECT, UPDATE, DELETE, INSERT)

Menghapus Table Sintaks untuk menghapus tabel seperti telah dipraktekkan sebelumnya adalah sebagai berikut : DROP TABLE table_name [CASCADE CONSTRAINTS];

Page 34: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 33

Drop hanya bisa dilakukan per satu Table. Membuang satu segment (table) berarti membuang semua extent milik segment tersebut dari data files. Membuang suatu table juga berarti membuang semua objek yang bergantung kepadanya. Cascade Constraints digunakan jika tabel yang akan dibuang adalah Master-Table, dimana table ini diacu oleh table lain. Tanpa sintaks ini, suatu Master-Table akan gagal untuk dihapus.

Truncate Table Operasi TRUNCATE berguna untuk mengosongkan table. Operasi ini jauh lebih cepat daripada menghapus semua record yang ada pada table dengan diikuti perintah COMMIT. Adapun sintaksnya adalah sebagai berikut : TRUNCATE TABLE table_name;

Page 35: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 34

Partitioning Table Partitioning table pada Oracle adalah berguna untuk memisahkan kelompok data yang dibuat sesuai dengan keinginan. Adapun beberapa macam partitioning table yang terdapat didalam Oracle adalah sebagai berikut

• Range Partitioning Umumnya partisi ini digunakan untuk memisahkan data menurut tanggal

• List Partitioning Umumnya partisi ini digunakan untuk memisahkan data menurut tipe data yang diinginkan

• Hash Partitioning Partisi yang dibangun menggunakan Hashing

• Composite Partitioning Gabungan dari Partisi yang ada diatas.

Range Partitioning Berikut ini adalah contoh penggunaan Range Partitioning table pada Oracle CREATE TABLE cust_order ( order_nbr NUMBER(7) NOT NULL, cust_nbr NUMBER(5) NOT NULL, order_dt DATE NOT NULL, sales_emp_id NUMBER(5) NOT NULL, sale_price NUMBER(9,2), expected_ship_dt DATE, cancelled_dt DATE, ship_dt DATE, status VARCHAR2(20)) PARTITION BY RANGE (order_dt) (PARTITION orders_2002 VALUES LESS THAN (TO_DATE('01-JAN-2003','DD-MON-YYYY')), PARTITION orders_2003 VALUES LESS THAN (TO_DATE('01-JAN-2004','DD-MON-YYYY')), PARTITION orders_2004 VALUES LESS THAN (TO_DATE('01-JAN-2005','DD-MON-YYYY')) );

Untuk melihat hasil partition yang dibangun gunakan sintaks berikut ini : SQL> SELECT TABLE_NAME, PARTITION_NAME, SUBPARTITION_COUNT FROM USER_TAB_PARTITIONS; TABLE_NAME PARTITION_NAME SUBPARTITION_COUNT -------------------- ------------------------- ------------------ CUST_ORDER ORDERS_2002 0 CUST_ORDER ORDERS_2003 0 CUST_ORDER ORDERS_2004 0

Untuk melihat nilai partisi yang telah dibangun, gunakan sintaks berikut ini : SQL> SELECT TABLE_NAME, HIGH_VALUE, PARTITION_NAME FROM USER_TAB_PARTITIONS; TABLE_NAME HIGH_VALUE PARTITION_NAME -------------------- ------------------------------ ----------------- CUST_ORDER TO_DATE(' 2003-01-01 00:00:00' ORDERS_2002

Page 36: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 35

, 'SYYYY-MM-DD HH24:MI:SS', 'N LS_CALENDAR=GREGORIA CUST_ORDER TO_DATE(' 2004-01-01 00:00:00' ORDERS_2003 , 'SYYYY-MM-DD HH24:MI:SS', 'N LS_CALENDAR=GREGORIA CUST_ORDER TO_DATE(' 2005-01-01 00:00:00' ORDERS_2004 , 'SYYYY-MM-DD HH24:MI:SS', 'N LS_CALENDAR=GREGORIA

Kemudian cobalah mengisi table tersebut dengan beberapa data.

Melihat isi Partitioning Untuk melihat isi data pada table kita menggunakan sintaks berikut ini SELECT * FROM cust_order; SELECT * FROM cust_order PARTITION (order_2004);

List Partitioning Berikut ini adalah contoh penggunaan List Partitioning table pada Oracle CREATE TABLE sales_fact ( state_cd VARCHAR2(3) NOT NULL, month_cd NUMBER(2) NOT NULL, year_cd NUMBER(4) NOT NULL, product_cd VARCHAR2(10) NOT NULL, tot_sales NUMBER(9,2) NOT NULL) PARTITION BY LIST (state_cd) (PARTITION sales_newengland VALUES ('CT','RI','MA','NH','ME','VT'), PARTITION sales_northwest VALUES ('OR','WA','MT','ID','WY','AK'), PARTITION sales_southwest VALUES ('NV','UT','AZ','NM','CO','HI'), PARTITION sales_southeast VALUES ('FL','GA','AL','SC','NC','TN','WV'), PARTITION sales_east VALUES ('PA','NY','NJ','MD','DE','VA','KY','OH'), PARTITION sales_california VALUES ('CA'), PARTITION sales_south VALUES ('TX','OK','LA','AR','MS'), PARTITION sales_midwest VALUES ('ND','SD','NE','KS','MN','WI','IA', 'IL','IN','MI','MO') );

Composite Partitioning Berikut ini adalah contoh penggunaan Composite Partitioning table pada Oracle CREATE TABLE cust_order ( order_nbr NUMBER(7) NOT NULL, cust_nbr NUMBER(5) NOT NULL, order_dt DATE NOT NULL, sales_emp_id NUMBER(5) NOT NULL, sale_price NUMBER(9,2), expected_ship_dt DATE, cancelled_dt DATE, ship_dt DATE, status VARCHAR2(20)) PARTITION BY RANGE (order_dt) SUBPARTITION BY HASH (cust_nbr) SUBPARTITIONS 4

Page 37: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 36

STORE IN (system,system,system,system) (PARTITION orders_2002 VALUES LESS THAN (TO_DATE('01-JAN-2003','DD-MON-YYYY')) (SUBPARTITION orders_2002_s1, SUBPARTITION orders_2002_s2, SUBPARTITION orders_2002_s3, SUBPARTITION orders_2002_s4), PARTITION orders_2003 VALUES LESS THAN (TO_DATE('01-JAN-2004','DD-MON-YYYY')) (SUBPARTITION orders_2003_s1, SUBPARTITION orders_2003_s2, SUBPARTITION orders_2003_s3, SUBPARTITION orders_2003_s4), PARTITION orders_2004 VALUES LESS THAN (TO_DATE('01-JAN-2005','DD-MON-YYYY')) (SUBPARTITION orders_2004_s1, SUBPARTITION orders_2004_s2, SUBPARTITION orders_2004_s3, SUBPARTITION orders_2004_s4)); Untuk melihat hasil partition yang dibangun gunakan sintaks berikut ini : SQL> SELECT TABLE_NAME, PARTITION_NAME,SUBPARTITION_COUNT FROM USER_TAB_PARTITIONS; TABLE_NAME PARTITION_NAME SUBPARTITION_COUNT -------------------- ----------------------------- ------------------ SALES_FACT SALES_NEWENGLAND 0 SALES_FACT SALES_NORTHWEST 0 SALES_FACT SALES_SOUTHWEST 0 SALES_FACT SALES_SOUTHEAST 0 SALES_FACT SALES_EAST 0 SALES_FACT SALES_CALIFORNIA 0 SALES_FACT SALES_SOUTH 0 SALES_FACT SALES_MIDWEST 0 CUST_ORDER ORDERS_1999 4 CUST_ORDER ORDERS_2000 4 CUST_ORDER ORDERS_2001 4

Mengubah Nama Partitioning Berikut ini adalah contoh untuk mengubah nama partisi yang telah dibangun ALTER TABLE cust_order RENAME PARTITION orders_2005 TO order_thn_2005;

Menghapus Partitioning Berikut ini adalah contoh untuk menghapus partisi yang telah dibuat ALTER TABLE cust_order DROP PARTITION order_thn_2005;

Page 38: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 37

INDEX SEGMENT Index segment biasa disebut dengan Index, hal ini dikarenakan index adalah sebuah tipe, salah satu dari tipe segment. Operasi-operasi yang berlaku pada index lebih terbatas dibandingkan dengan table, yaitu :

- CREATE INDEX - ALTER INDEX - DROP INDEX

Struktur B-Tree Index Struktur B-Tree adalah struktur yang paling umum dalam index didalam database Oracle. Sesuai dengan namanya ‘tree’ dimana terdapat percabangan dan daun pada struktur ‘tree’ nya. Akan tetapi Oracle instance secara otomatis akan berusaha agar kedalaman dari cabang di ‘tree’ untuk indeks tersebut akan sama antara cabang yang satu dengan cabang yang lainnya.

Struktur Bitmap Index Struktur Bitmap index berguna untuk mengindeks kolom-kolom yang mempunyai rentang nilainya rendah, contohnya adalah kolom jenis kelamin (dengan ‘L’ untuk Laki-laki, dan ‘P’ untuk Perempuan). Bitmap index untuk kolom seperti ini akan menghabiskan space jauh lebih kecil daripada B-Tree Index.

Membuat Index Index bisa dibuat secara otomatis maupun manual. Objek-objek yang dibuat secara otomatis terjadi saat sebuah table memiliki Constraints Primary Key atau Unique Key. Untuk pembuatan index secara manual, kita bisa menggunakan operasi Create Index dengan sintaks sebagai berikut : CREATE [BITMAP] INDEX index_name ON table_name (column_name) [TABLESPACE tablespace_name];

Menghapus Index Menghapus Index juga bisa dilakukan secara otomatis maupun manual. Index-index yang ada secara otomatis terhapus saat sebuah table yang memiliki Constraints, dihapus Constraint Primary-Key atau Unique-Keynya. Untuk menghapus index secara manual, kita bisa menggunakan sintaks berikut ini : DROP INDEX index_name; Index juga akan dihapus secara otomatis jika table asalnya dihapus.

Page 39: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 38

PRAKTIKUM MANDIRI 1. Buatlah sebuah tablespace dengan nama Hotel + Kelas Anda.

Contoh : HotelTI2A CREATE TABLESPACE HotelTI2A DATAFILE 'C:\HotelTI2A.DBF' SIZE 5M AUTOEXTEND ON NEXT 5M MAXSIZE 2040M DEFAULT STORAGE (INITIAL 10K NEXT 10K PCTINCREASE 0 MAXEXTENTS UNLIMITED)

2. Buatlah user untuk mengakses tablespace yang baru anda buat tersebut. Contoh : Username : admin Password : adm CREATE USER ADMIN IDENTIFIED BY ADM DEFAULT TABLESPACE HOTELTI2A ACCOUNT UNLOCK;

3. Berikan hak akses pada user yang anda buat untuk dapat membuat dan mengakses table. Contoh : GRANT DBA, CONNECT, RESOURCE TO ADMIN;

4. Login dengan nama user yang telah anda buat tersebut Contoh : Username : admin Password : adm SQL> connect Enter user-name: admin Enter password: ***

5. Rancanglah sebuah Sistem Informasi Reservasi Hotel, dengan kriteria sebagai berikut: - Hotel memiliki kamar-kamar yang mempunyai tipe yang berbeda-beda,

contoh : Kamar nomor 101 s/d 110 adalah kamar dengan tipe Deluxe, Kamar nomor 201 s/d 210 adalah kamar dengan tipe VIP

- Masing-masing Tipe Kamar memiliki fasilitas yang berbeda-beda - Hotel memiliki fasilitas Restaurant, Laundry dan Drug Store - Harga kamar ditentukan pada saat Reservasi (Pemesanan) - Pemesanan Kamar yang dilakukan oleh Pelanggan Baru tidak

mendapatkan diskon harga kamar, sedangkan untuk pelanggan lama mendapatkan diskon 10 Persen dari harga yang telah ditentukan.

- Kamar yang mempunyai status ‘AVAILABLE’ saja yang dapat dipesan oleh seorang pelanggan untuk hari tertentu. Setelah kamar tersebut dipesan, status ‘AVAILABLE’ berubah status menjadi ‘BOOKED’. Status ‘BOOKED’ berubah menjadi status ‘AVAILABLE’ jika pelanggan membatalkan Reservasi.

6. Gunakan CONSTRAINT untuk membangun database yang ada. 7. Buatlah TRIGGER untuk menggantikan status kamar dari ‘AVAILABLE’

menjadi ‘BOOKED’ dan sebaliknya 8. Coba isi table yang anda buat tersebut.

Page 40: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 39

CLUSTER SEGMENT Cluster segment biasa disebut dengan Cluster, hal ini dikarenakan cluster adalah sebuah tipe, salah satu dari tipe segment. Operasi-operasi yang berlaku pada cluster lebih terbatas dibandingkan dengan table, yaitu :

- CREATE CLUSTER - ALTER CLUSTER - DROP CLUSTER

Sebagai sebuah tipe segment, cluster dapat dibagi menjadi dua subtipe, yaitu 1. Index Cluster 2. Hash Cluster

Dimana secara umum kedua jenis cluster ini mempunyai persamaan.

Membuat Cluster Untuk mempermudahkan pengelompokan dan membedakan antara tipe cluster dengan tipe yang lain. Buatlah terlebih dahulu sebuah tablespace CLUSTERS untuk meletakkan cluster-cluster yang akan dibuat. CREATE TABLESPACE Clusters DATAFILE 'C:\Clusters01.DBF' SIZE 5M AUTOEXTEND ON NEXT 5M MAXSIZE 20M DEFAULT STORAGE (INITIAL 10K NEXT 10K PCTINCREASE 0 MAXEXTENTS UNLIMITED) Berikut ini adalah contoh membuat sebuah cluster CREATE CLUSTER Cls_NPM (NPM CHAR(7)) SIZE 200 TABLESPACE Clusters STORAGE (INITIAL 10K NEXT 10K PCTINCREASE 0 MAXEXTENTS 300); Kemudian kita lihat segment yang telah terbentuk pada USER_CLUSTERS dan USER_SEGMENTS SQL> SELECT CLUSTER_NAME, TABLESPACE_NAME FROM USER_CLUSTERS; CLUSTER_NAME TABLESPACE_NAME ------------------------------ ------------------------------ CLS_NPM TABLES SQL> SELECT SEGMENT_NAME, SEGMENT_TYPE FROM USER_SEGMENTS; SEGMENT_NAME SEGMENT_TYPE ----------------------------------- ------------------ CLS_NPM CLUSTER Kemudian buatlah sebuah table MAHASISWA yang mengacu kepada cluster yang telah dibuat tadi. Adapun sintaks penulisannya adalah sebagai berikut :

Page 41: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 40

CREATE TABLE Mahasiswa (NPM CHAR(7) NOT NULL, Nama VARCHAR(20), Alamat VARCHAR(30), CONSTRAINT PK_Mahasiswa PRIMARY KEY (NPM) ) CLUSTER Cls_NPM (NPM); Cek USER_SEGMENTS yang telah terbentuk SQL> SELECT SEGMENT_NAME, SEGMENT_TYPE FROM USER_SEGMENTS; SEGMENT_NAME SEGMENT_TYPE ----------------------------------- ------------------ CLS_NPM CLUSTER PK_MAHASISWA INDEX Kemudian cobalah mengisi table tersebut dengan sebuah data berikut ini SQL> INSERT INTO Mahasiswa 2 VALUES ('0101001','Joni','Jl. Riau No.11'); INSERT INTO Mahasiswa * ERROR at line 1: ORA-02032: clustered tables cannot be used before the cluster index is built

Index Cluster Berikut ini adalah contoh pembuatan Index-Cluster CREATE INDEX Cls_NPM_Index ON CLUSTER Cls_NPM TABLESPACE INDX STORAGE (INITIAL 10K NEXT 10K PCTINCREASE 0 MAXEXTENTS UNLIMITED); Cek USER_SEGMENTS yang telah terbentuk SQL> SELECT SEGMENT_NAME, SEGMENT_TYPE FROM USER_SEGMENTS; SEGMENT_NAME SEGMENT_TYPE ----------------------------------- ------------------ CLS_NPM CLUSTER PK_MAHASISWA INDEX CLS_NPM_INDEX INDEX Kemudian cobalah membuat sebuah table ANGSURAN yang memiliki constraint ke table MAHASISWA akan tetapi tidak memiliki hubungan ke cluster CLS_NPM.

Page 42: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 41

CREATE TABLE Angsuran( NPM CHAR(7) NOT NULL, Angsuran_Ke NUMBER, Jumlah NUMBER, CONSTRAINT pk_Angsuran PRIMARY KEY (NPM,Angsuran_Ke), CONSTRAINT fk_Angsuran_Mahasiswa FOREIGN KEY (NPM) REFERENCES Mahasiswa (NPM)); Selanjutnya buatlah sebuah table NILAI yang memiliki hubungan constraint ke table MAHASISWA dan memiliki hubungan ke cluster CLS_NPM. CREATE TABLE Nilai( NPM CHAR(7) NOT NULL, KodeMK CHAR(7) NOT NULL, UTS NUMBER, UAS NUMBER) CLUSTER Cls_NPM(NPM); Untuk mengecek table yang telah dibuat apakah memiliki hubungan dengan cluster yang telah dibangun, lakukan perintah berikut ini SQL> SELECT * FROM USER_CLU_COLUMNS; CLUSTER_NAME CLU_COLUMN_NAME TABLE_NAME TAB_COLUMN_NAME -------------- ----------------- ------------ ------- CLS_NPM NPM MAHASISWA NPM CLS_NPM NPM NILAI NPM Terlihat bahwa table ANGSURAN tidak muncul karena table yang dibuat tidak memiliki hubungan dengan cluster yang ada.

Menghapus Cluster Ada dua cara untuk menghapus cluster, antara lain :

1. Membuang cluster dengan sintaks INCLUDING TABLES 2. Membuang cluster table dulu, baru kemudian membuang cluster

Berikut ini adalah sintak untuk menghapus cluster untuk cara pertama DROP CLUSTER nama_cluster [INCLUDING TABLES] [CASCADE CONSTRAINT];

Page 43: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 42

USER DAN PROFILE User diperlukan untuk mengendalikan hak-hak dan akses dari pengguna sebuah sistem atau sebuah database. Operasi-operasi yang berlaku pada user, adalah :

- CREATE USER - ALTER USER - DROP USER

Membuat USER Sintaks untuk membuat sebuah user adalah sebagai berikut : CREATE USER user_name IDENTIFIED [EXTERNALLY | BY password] [DEFAULT TABLESPACE nama_tablespace] [TEMPORARY TABLESPACE nama_tablespace] [ACCOUNT ( LOCK | UNLOCK )]

Mengubah USER Berikut ini adalah contoh penggunaan ALTER untuk mengubah PASSWORD ALTER USER Administrator IDENTIFIED BY Admin PASSWORD EXPIRE; Berikut ini adalah contoh untuk mengubah agar user tidak dapat mengakses tablespace POLTEK ALTER USER Joni QUOTA 0M ON POLTEK;

Menghapus USER Sintaks untuk menghapus user yang ada adalah sebagai berikut : DROP USER user_name [CASCADE];

PROFILE Profile adalah sebuah named-sets batasan resource dan password. Penggunaan batasan pada sebuah user dimaksudkan agar mencegah user untuk melakukan aktifitas yang menghabiskan banyak resource dan memudahkan pemberian batas kepada sekelompok pengguna, misalnya waktu session untuk sebuah user. Batasan resource dan pasword ini mencakup antara lain :

• Waktu Session • Operasi I/O

Page 44: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 43

• Waktu Idle • Lama Koneksi • Memori • Concurrent Sessions • Rentang Waktu Password (Time Limit Password) • Password History • Kompleksitas Password • Locking User

Setiap database dalam Oracle memiliki satu profile default yang umumnya bernama DEFAULT. Setiap user yang telah dibuat jika tidak dispesifikasikan profile-nya, secara otomatis akan di-assign ke profile DEFAULT Sintaks untuk membuat profile adalah sebagai berikut : CREATE PROFILE profile_name LIMIT [SESSION_PER_USER max_value] [CPU_PER_SESSION max_value] [CONNECT_TIME max_value] [IDLE_TIME max_value] [LOGICAL_READ_PER_SESSION max_value] [LOGICAL_READ_PER_CALL max_value] [COMPOSITE_LIMIT max_value] [PRIVATE_SGA max_bytes] ; Dimana : MAX_VALUE dan MAX_BYTES diisi dengan nilai atau UNLIMITED

atau DEFAULT Berikut ini adalah contoh membuat profile CREATE PROFILE Develop LIMIT CONNECT_TIME UNLIMITED IDLE_TIME 5; Kemudian masukkan profile tersebut kedalam user yang ada, lihat contoh berikut ini : ALTER USER Administrator PROFILE Develop; Cek profile user yang telah disetting tadi dengan contoh berikut ini : SQL> SELECT USERNAME, PROFILE FROM DBA_USERS; USERNAME PROFILE ------------------------------ ------------------------------ SYS DEFAULT SYSTEM DEFAULT DBSNMP DEFAULT OUTLN DEFAULT ADMINISTRATOR DEVELOP

Page 45: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 44

Menghapus Profile Adapun sintaks untuk menghapus Profile adalah sebagai berikut SQL> DROP PROFILE Develop; DROP PROFILE Develop * ERROR AT LINE 1: ORA-02382: PROFILE DEVELOP HAS USERS ASSIGNED, CANNOT DROP WITHOUT CASCADE Kesalahan tersebut diakibatkan user yang akan dihapus dalam keadaan terkoneksi, untuk itu gunakan sintaks berikut ini : SQL> DROP PROFILE Develop CASCADE; Kemudian cek kembali profile user yang tersisa SQL> SELECT USERNAME, PROFILE FROM DBA_USERS; USERNAME PROFILE ------------------------------ ------------------------ SYS DEFAULT SYSTEM DEFAULT DBSNMP DEFAULT ADMINISTATOR DEFAULT OUTLN DEFAULT Berikut ini adalah profile DEFAULT yang secara otomatis ada dalam sebuah database SQL> SELECT * FROM DBA_PROFILES; PROFILE RESOURCE_NAME RESOURCE LIMIT ------------- --------------------------- -------- ---------- DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED DEFAULT CPU_PER_SESSION KERNEL UNLIMITED DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED DEFAULT CPU_PER_CALL KERNEL UNLIMITED DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED DEFAULT PASSWORD_LOCK_TIME PASSWORD UNLIMITED DEFAULT IDLE_TIME KERNEL UNLIMITED DEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMITED DEFAULT CONNECT_TIME KERNEL UNLIMITED DEFAULT PRIVATE_SGA KERNEL UNLIMITED

Page 46: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 45

File : Init.ORA # Cache and I/O db_block_size=4096 db_cache_size=31457280 # Cursors and Library Cache open_cursors=300 # Diagnostics and Statistics background_dump_dest=c:\a\bdump core_dump_dest=c:\a\cdump timed_statistics=TRUE user_dump_dest=c:\a\udump # Distributed, Replication and Snapshot db_domain="" remote_login_passwordfile=EXCLUSIVE # File Configuration control_files=("c:\a\control01.ctl", "c:\a\control02.ctl") # Miscellaneous compatible=9.0.0 db_name=a # Network Registration instance_name=iaa # Pools java_pool_size=31457280 shared_pool_size=37748736 # Processes and Sessions processes=150 # Redo Log and Recovery fast_start_mttr_target=300 # Sort, Hash Joins, Bitmap Indexes sort_area_size=524288

Page 47: Basis data_Modul - DBA

ORACLE 9i – DBA (Database Administrator)

Disusun Oleh : Viddi Mardiansyah S.Si. MT. Page 46

connect SYS/change_on_install as SYSDBA set echo on spool c:\a\CreateDB.log startup nomount pfile="c:\a\init.ora"; CREATE DATABASE a MAXINSTANCES 1 MAXLOGHISTORY 1 MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXDATAFILES 100 DATAFILE 'c:\a\system01.dbf' size 5M REUSE AUTOEXTEND ON NEXT 1024K MAXSIZE UNLIMITED CHARACTER SET WE8MSWIN1252 NATIONAL CHARACTER SET AL16UTF16 LOGFILE GROUP 1 ('c:\a\redo01.log') SIZE 256K, GROUP 2 ('c:\a\redo02.log') SIZE 256K;


Recommended