Database Administrator || ii
BASIS DATA LANJUT
ORACLE 9i
(DATABASE ADMINISTRATOR)
MODUL
Disusun Oleh :
Saepudin Nirwan, S.Kom., M.Kom.
JURUSAN TEKNIK INFORMATIKA
POLITEKNIK POS INDONESIA
Database Administrator || i
KATA PENGANTAR
Modul ini disusun sebagai pedoman bagi mahasiswa dilingkungan Politeknik Pos Indonesia yang mengikuti matakuliah Basisdata Lanjut (Oracle). Tujuannya agar mahasiswa memiliki panduan dalam bahasa indonesia sebagai sumber kedua, dimana sumber utama adalah buku-buku teks Oracle.
Modul ini menjelaskan teori dan pengelolaan administrasi pada Oracle 9i, dalam modul ini juga mengulas arsitektur dan konfigurasi Oracle. Materi yang diberikan dalam modul tentunya masih belum lengkap dan untuk itu mahasiswa dan dosen diharapkan dapat mencari referensi tambahan yang diperlukannya baik di perpustakaan maupun melalui media internet.
Modul ini masih belum sempurna, sehingga perlu dikaji baik oleh dosen pengajar, instruktur, asisten maupun praktikan yang terlibat dalam matakuliah ini. Oleh karena itu penyusun berharap agar para pemakai modul ini dapat memberikan sumbangan saran untuk perbaikan modul rekayasa perangkat lunak ini.
Semoga modul ini dapat bermanfaat serta dapat meningkatkan kemampuan mahasiswa dalam menguasai pengelolaan administrasi Oracle 9i.
Bandung, September 2008 Penyusun
Database Administrator || ii
DAFTAR ISI
DAFTAR ISI ... i
DAFTAR GAMBAR ... v
DAFTAR TABEL ... vi
LANDASAN TEORI ORACLE 9i ... 1
1.1 Tujuan Pembelajaran ... 1 1.2 ARSITEKTUR ORACLE ... 2 1.2.1 Background Process ... 2 1.2.1.1 Background Processes ... 2 1.2.1.2 Foreground Processes ... 2 1.2.2 Instance... 3 1.2.3 Database ... 5
1.2.4 Data, Log dan Metadata ... 6
1.2.5 INSTANCE ... 7
1.2.6 Instance Name ... 7
1.2.7 PEMBUATAN DATABASE DENGAN SCRIPT ... 9
1.2.7.1 Pembuatan Database ... 9
1.2.7.2 Pembuatan Tablespace ... 10
1.2.7.3 Pembuatan Repository... 10
1.2.8 ARSITEKTUR DATABASE ORACLE ... 11
1.2.8.1 Arsitektur Fisik ... 11
1.2.8.2 Arsitektur Logikal ... 12
1.2.8.3 Arsitektur Fisik dan Arsitektur Logikal ... 12
1.2.9 CONFIGURATION FILE/ FILE CONTROL ... 13
1.2.9.1 Configuration-Files/ Control-Files ... 13
1.2.9.2 Mirroring ... 14
1.2.9.3 Startup Nomount ... 14
1.2.9.4 Startup Mount ... 15
1.2.9.5 Startup Open ... 15
Database Administrator || iii
1.2.10.1 Log-Files ... 16
1.2.10.2 Mekanisme : Rotasi ... 16
1.2.10.3 Mirroring ... 17
1.2.10.4 Operasi : SWITCH ... 18
1.2.10.5 Operasi : DROP - Group ... 20
1.2.10.6 Operasi : ADD MEMBER ... 21
1.2.10.7 Operasi : ADD GROUP ... 22
1.2.10.8 Operasi : DROP - Member ... 23
1.2.11 TABLESPACE... 25
1.2.11.1 Jenis Tablespace ... 25
1.2.11.2 Operasi untuk Tablespace ... 27
1.2.12 DATAFILES ... 32
1.2.13 SEGMENT, EXTENT DAN BLOCK ... 36
1.2.13.1 Segment ... 36 1.2.13.2 Klausa Storage... 37 1.2.13.3 Extent ... 38 1.2.13.4 Block ... 38 1.2.13.5 Storage Extent ... 39 1.2.13.6 Storage Block ... 39 1.2.14 TABLE SEGMENT ... 40 1.2.15 Membuat Table ... 40
1.2.16 Index-Organized Table (IOT) ... 41
1.2.17 Menghapus Table ... 43
1.2.18 Truncate Table... 43
1.2.19 Partitioning Table ... 44
1.2.20 Range Partitioning ... 44
1.2.21 Melihat isi Partitioning ... 45
1.2.22 List Partitioning ... 45
1.2.23 Composite Partitioning ... 46
1.2.24 Mengubah Nama Partitioning ... 47
Database Administrator || iv
1.2.26 INDEX SEGMENT... 47
1.2.26.1 Struktur B-Tree Index ... 47
1.2.26.2 Struktur Bitmap Index ... 48
1.2.26.3 Membuat Index ... 48 1.2.26.4 Menghapus Index ... 48 1.2.26.5 PRAKTIKUM MANDIRI... 49 1.2.27 CLUSTER SEGMENT ... 50 1.2.27.1 Membuat Cluster ... 51 1.2.27.2 Index Cluster ... 52 1.2.27.3 Menghapus Cluster ... 53
1.2.28 USER DAN PROFILE ... 55
1.2.28.1 Membuat USER ... 55
1.2.28.2 Mengubah USER... 55
1.2.28.3 Menghapus USER ... 55
1.2.28.4 PROFILE ... 56
Database Administrator || v
DAFTAR GAMBAR
Gambar 1 Oracle Process ... 3
Gambar 2 Instance Oracle ... 3
Gambar 3 Background Process Oracle ... 4
Gambar 4 Instance Type ... 4
Gambar 5 Database Type ... 5
Gambar 6 Struktur Instance dan Database Oracle ... 6
Gambar 7 Sebuah tabel yang sudah dikenal instance ... 6
Gambar 8 Sebuah tabel yang sudah diisi sebuah record ... 6
Gambar 9 Nama database pada stuktur direktori Oracle ... 7
Gambar 10 Intance pada Service Windows ... 8
Gambar 11 Register Oracle di Windows ... 8
Gambar 12 Start/ Stop Instance Oracle dari Service Windows ... 9
Gambar 13 Arsitektur Database Oracle ... 12
Gambar 14 Arsitektur Lojik Oracle ... 12
Gambar 15 Arsitektur Fisik dan Lojik Oracle ... 13
Gambar 16 Mekanisme Rotasi Log Files ... 17
Gambar 17 Mirroring Log Files ... 18
Gambar 18 Jenis – Jenis Tablespace ... 25
Gambar 19 Extend Datafile secara otomatis ... 33
Database Administrator || vi
DAFTAR TABEL
Tabel 1 Nama – Nama Tablespace Oracle ... 26 Tabel 2 Tipe Segment ... 37
Database Administrator || 1
LANDASAN TEORI ORACLE 9i
1.1 Tujuan Pembelajaran
a) Memahami Arsitektur Oracle. b) Memahami Instance Oracle.
c) Dapat membuat Database Dengan Script d) Memahami Arsitektur Database Oracle
e) Dapat membuat Configuration File/ File Control f) Memahami Log File/ Transaction Log File g) Dapat membuat Tablespace
h) Dapat mengelola Datafiles
i) Dapat membuat Segment, Extent Dan Block j) Memahami Table Segment
k) Memahami Index Segment l) Memahami Cluster Segment m) Memahami User dan Profile n) Memahami Administrasi Oracle.
Database Administrator || 2 1.2 ARSITEKTUR ORACLE
1.2.1 Background Process
Kumpulan proses yang membentuk arsitektur Oracle terdiri dari dua bagian, yaitu : 1.2.1.1 Background Processes
Proses yang di-run dilatar 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.
1.2.1.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
Database Administrator || 3 Process
Background Foreground
Mandatory Optional Server Application. Client Application
Gambar 1 Oracle Process
1.2.2 Instance
Instance sebagai operasi (process) didalam arsitektur ORACLE instance dari sudut pandang processes dan bagian pembentuknya dapat digambarkan sebagai berikut :
Gambar 2 Instance Oracle
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.
Sebuah instance merupakan sebuah kumpulan background process, dimana harus terdiri atas : a. Checkpointer, disingkat ckpt
Database Instance
Server Processes
Database Administrator || 4 b. Database Writer, disingkat dbw0
c. Log-Writer, disingkat lgwr d. Process-Monitor, disingkat pmon e. System-Monitor, disingkat smon f. Recover disingkat reco
Gambar 3 Background Process Oracle
akan tetapi instance bisa dipandang tidak hanya sebagai sebuah operasi, melainkan juga sebagai sebuah tipe. Dapat dilihat pada gambar disamping.
Gambar 4 Instance Type Database Database
Writer
Server Processes
Log Writer Checkpointer
Process Monitor System Monitor Recover Instance Data cache Log cache Repository cache Miscellaneous cache Java cache Start Stop
Database Administrator || 5 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
1.2.3 Database
Seperti halnya dengan instance yang dimodelkan sebagai tipe, database juga dapat dimodelkan sebagai sebuah tipe, seperti dapat dilihat pada gambar berikut ini :
Gambar 5 Database Type
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.
Di Oracle istilah yang telah digambarkan tadi agak berbeda dalam penulisannya meskipun mempunyai arti yang sama, berikut ini adalah istilah yang dipakai dalam Oracle.
Database Data file Log file Configuration file Mount Open
Database Administrator || 6 Gambar 6 Struktur Instance dan Database Oracle
1.2.4 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. Seandainya table ini sudah dimasukkan kedalam memori, maka pada saat itu memori instance akan berisi sebagai berikut :
Log cache Data cache T C Metadata cache DBA_tables Table_Name Num_rows T 0
Gambar 7 Sebuah tabel yang sudah dikenal instance
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 cache T C Metadata cache DBA_tables Table_Name Num_rows T 1 3
Gambar 8 Sebuah tabel yang sudah diisi sebuah record
Instance Buffer cache Log buffer Shared pool Large pool Java pool Database Data file
Redo logfile
Database Administrator || 7 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.
1.2.5 INSTANCE
1.2.6 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.
Database Administrator || 8 Gambar 10 Intance pada Service Windows
Setelah database tercipta, maka pada register windows, instance untuk database tersebut juga tercipta. Lihat pada tampilan berikut ini :
Gambar 11 Register Oracle di Windows
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
Database Administrator || 9 banyak dilakukan dalam programming. Lihat tampilan berikut untuk operasi Start dan Stop dalam menu Administrative Tools|Services
Gambar 12 Start/ Stop Instance Oracle dari Service Windows 1.2.7 PEMBUATAN DATABASE DENGAN SCRIPT
1.2.7.1 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>
Database Administrator || 10 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];
1.2.7.2 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; 1.2.7.3 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;
Database Administrator || 11 1.2.8 ARSITEKTUR DATABASE ORACLE
1.2.8.1 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 :
a) Nama Database b) Checkpoint c) Backup History d) Log Sequence
e) Nama-nama data files
f) Timestamp pembuatan database g) 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.
Database Administrator || 12 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.
Gambar 13 Arsitektur Database Oracle 1.2.8.2 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.
Gambar 14 Arsitektur Lojik Oracle 1.2.8.3 Arsitektur Fisik dan Arsitektur Logikal
Untuk lebih memperjelas hubungan antar arsitektur fisik dan arsitektur Logik dalam database Oracle, dapat dilihat pada ilustrasi gambar berikut ini:
Config-Files Log-Files DATABASE Data-Files 2 Segment Extent Database Tablespace DB-block
Database Administrator || 13 Gambar 15 Arsitektur Fisik dan Lojik Oracle
1.2.9 CONFIGURATION FILE/ FILE CONTROL
1.2.9.1 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 : a) MAXLOGFILES, diset pada saat pembuatan database
Config-Files Log-Files DATABASE Data-Files 2 Segment Extent Tablespace DB-block
Database Administrator || 14 b) MAXDATAFILES, diset pada saat pembuatan database
c) 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.
1.2.9.2 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 di atas 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.
1.2.9.3 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.
Database Administrator || 15 1.2.9.4 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. 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.
1.2.9.5 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
Database Administrator || 16 1.2.10 LOG FILE/ TRANSACTION LOG FILE
1.2.10.1 Log-Files
files/ Transaction 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 :
a. ADD GROUP b. DROP GROUP c. ADD MEMBER d. DROP MEMBER e. SWITCH (group) f. RENAME 1.2.10.2 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 :
Database Administrator || 17 Gambar 16 Mekanisme Rotasi Log Files
Pada gambar di atas, 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.
1.2.10.3 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.
Group 1 Group 2
Redo1a. log
Redo2a. log
Database Administrator || 18 Group 1 Group 2 Redo1 a.log Redo2 a.log Redo1 b.log Redo2 b.log Disk C Disk D
Gambar 17 Mirroring Log Files
1.2.10.4 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
Database Administrator || 19
3 1 87 2621440 1 NO INACTIVE 157463
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
Database Administrator || 20 1.2.10.5 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.
Database Administrator || 21 1.2.10.6 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.
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;
Database Administrator || 22 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
1.2.10.7 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
Database Administrator || 23 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
1.2.10.8 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.
Database Administrator || 24 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 :
1) Hilangkan member dan group 3
Database Administrator || 25 1.2.11 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’).
1.2.11.1 Jenis Tablespace
Jenis-jenis tablespace yang ada pada oracle dapat dilihat pada gambar berikut ini :
Gambar 18 Jenis – Jenis Tablespace
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.
TABLESPACE
User-defined System-defined
Locally-managed Globally-managed
Database Administrator || 26 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 and Index System’s repository,User’s library
Tool Table and Index User’s metadata
Tabel 1 Nama – Nama Tablespace Oracle
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
Database Administrator || 27 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.
1.2.11.2 Operasi untuk Tablespace
Operasi-operasi yang digunakan pada umumnya sama dengan operasi-operasi objek yang lainnya, antara lain :
CREATE
Database Administrator || 28 Contoh sintaks membuat tablespace
CREATE TABLESPACE POLTEKPOS
DATAFILE ‘C:\ORACLE\ORADATA\POLTEK\DTPOS.DBF’ SIZE 5 M;
ALTER
Database Administrator || 30 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
Database Administrator || 31
DROP TABLESPACE POLTEKPOS;
- Tablespace berisi segment tanpa kendala referensial ke objek pada tablespace yang lain
Contoh sintaks menghapus tablespace
DROP TABLESPACE POLTEKPOS INCLUDING CONTENTS;
- 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 :
Database Administrator || 32 1.2.12 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 : a) ADD b) OFFLINE c) ONLINE d) RESIZE e) 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,
Database Administrator || 33 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;
Database Administrator || 34 bila data dispesifikasikan agar tidak dapat diperbesar, maka AUTOEXTEND OFF, dan pada kotak dialog akan terlihat tampilan sebagai berikut :
Gambar 20 Extend Otomatis dimatikan
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;
Database Administrator || 35 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;
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;
Database Administrator || 36 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 1.2.13 SEGMENT, EXTENT DAN BLOCK
1.2.13.1 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 : 1) Table Segment
2) Index Segment 3) Cluster Segment 4) Undo Segment
Database Administrator || 37 5) 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 8i Table
Subpartition Muncul mulai Oracle versi 8i Index
Subpartition Muncul mulai Oracle versi 8i
Tabel 2 Tipe Segment 1.2.13.2 Klausa Storage
Klausa storage digunakan sejalan dengan hirarki logical aspec dari suatu database, yaitu : a) Database
b) Tablespace c) Segment
Contoh penggunaan storage dapat dilihat sebagai berikut :
CREATE TABLESPACE Tables
DATAFILE ‘C:\ORACLE\ORADATA\DTPOS\TABLES01.DBF’ SIZE 5M AUTOEXTEND ON NEXT 5M
Database Administrator || 38
CREATE TABLE t (a number) TABLESPACE tables
STORAGE (INITIAL 80K NEXT 80K PCTINCREASE 0);
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.
1.2.13.3 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
1.2.13.4 Block
Block adalah bagian terkecil dari sebuah extent. Operasi yang berlaku pada block adalah DEALLOCATE.
Database Administrator || 39 1.2.13.5 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 :
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);
1.2.13.6 Storage Block
Penggunaan blok diatur oleh nilai dari 2 buah parameter, yaitu : a) PCTFREE
Database Administrator || 40 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 :
a) 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.
b) Operasi INSERT kembali dapat memasukkan row atatu record kedalam blok jika pemakaian blok sudah dibawah 80% (sudah dibawah 32KB).
1.2.14 TABLE SEGMENT
Table segment biasa disebut dengan table, hal ini dikarenakan table adalah sebuah tipe, salah satu dari tipe segment.
1.2.15 Membuat Table
Membuat table berarti membuat segment, adapun sintak untuk membuatnya adalah sebagai berikut :
Database Administrator || 41
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];
1.2.16 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 :
a) CREATE TABLE b) ALTER TABLE c) DROP TABLE d) TRUNCATE TABLE e) SELECT f) INSERT g) UPDATE h) 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.
Database Administrator || 42
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
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;
Database Administrator || 43
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).
1.2.17 Menghapus Table
Sintaks untuk menghapus tabel seperti telah dipraktekkan sebelumnya adalah sebagai berikut :
DROP TABLE table_name [CASCADE CONSTRAINTS];
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.
1.2.18 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 :
Database Administrator || 44 1.2.19 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
a) Range Partitioning
Umumnya partisi ini digunakan untuk memisahkan data menurut tanggal b) List Partitioning
Umumnya partisi ini digunakan untuk memisahkan data menurut tipe data yang diinginkan c) Hash Partitioning
Partisi yang dibangun menggunakan Hashing d) Composite Partitioning
Gabungan dari Partisi yang ada diatas.
1.2.20 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
Database Administrator || 45 );
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
, '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. 1.2.21 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);
1.2.22 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'),
Database Administrator || 46 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')
);
1.2.23 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 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
Database Administrator || 47 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 1.2.24 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;
1.2.25 Menghapus Partitioning
Berikut ini adalah contoh untuk menghapus partisi yang telah dibuat ALTER TABLE cust_order
DROP PARTITION order_thn_2005; 1.2.26 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
1.2.26.1 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.
Database Administrator || 48 1.2.26.2 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.
1.2.26.3 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];
1.2.26.4 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;
Database Administrator || 49 1.2.26.5 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
Database Administrator || 50 - 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. 1.2.27 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 :
a) CREATE CLUSTER b) ALTER CLUSTER c) DROP CLUSTER
Sebagai sebuah tipe segment, cluster dapat dibagi menjadi dua subtipe, yaitu a) Index Cluster
Database Administrator || 51 Dimana secara umum kedua jenis cluster ini mempunyai persamaan.
1.2.27.1 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 :
CREATE TABLE Mahasiswa (NPM CHAR(7) NOT NULL,
Database Administrator || 52
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
1.2.27.2 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
Database Administrator || 53 Kemudian cobalah membuat sebuah table ANGSURAN yang memiliki constraint ke table MAHASISWA akan tetapi tidak memiliki hubungan ke cluster CLS_NPM.
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.
1.2.27.3 Menghapus Cluster
Database Administrator || 54 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];
Database Administrator || 55 1.2.28 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 :
a) CREATE USER b) ALTER USER c) DROP USER
1.2.28.1 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 )]
1.2.28.2 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;
1.2.28.3 Menghapus USER
Sintaks untuk menghapus user yang ada adalah sebagai berikut :