Administrasi User

Waktu kita membuat database, secara otomatis Oracle membuat user sys dan system. User sys bisa melakukan apa saja, oleh karenanya disebut sebagai super user. User system digunakan untuk administrasi database sehari-hari, misalnya membuat user, tablespace, dan lain-lain. Kalau user sys bisa melakukan semuanya, kenapa mesti ada user system? Ya tentu saja, pertimbangannya adalah masalah security. Oke, mari kita mulai membahas administrasi user di database Oracle.

Create (membuat) user

Berikut ini format perintah SQL untuk membuat user [Gambar diambil dari dokumentasi Oracle 9i]

Perintah membuat user yang paling sederhana adalah (contoh, saya akan membuat user dengan nama ROHMAD dan passwordnya PASSROH):
SQL> conn system
SQL> create user ROHMAD identified by PASSROH;

Karena tidak di-specify, maka atribut-atribut yang lainnya memakai nilai default. Untuk melihatnya lihat di view dba_users
SQL> select * from dba_users where username='ROHMAD';
Ini hasilnya:
USERNAME: ROHMAD
ACCOUNT_STATUS : OPEN
EXPIRY_DATE :
DEFAULT_TABLESPACE : USERS
TEMPORARY_TABLESPACE : TEMP
PROFILE : DEFAULT
INITIAL_RSRC_CONSUMER_GROUP : DEFAULT_CONSUMER_GROUP

Untuk melihat default tablespace dan default temporary tablespace dari suatu database, silahkan lihat di Administrasi Tablespace.

Berikut ini contoh membuat user dengan men-specify default tablespace, quota pemakaian di tablespace, dan temporary tablespace (ini contoh yang paling sering digunakan):
SQL> CREATE USER rohmad
IDENTIFIED BY passroh
DEFAULT TABLESPACE users
QUOTA unlimited ON users
QUOTA 500K ON data_ts
TEMPORARY TABLESPACE temp;

Alter (mengubah) user

Semua atribut user bisa diubah (alter) kecuali username itu sendiri. Secara umum perintah alter sama dengan create, hanya mengganti kata create menjadi alter. Contoh:
SQL> alter user ROHMAD identified by PASSROH2;

Grant User

Setelah user dibuat, user tersebut tidak bisa melakukan koneksi sebelum diberi grant (hak) untuk connect ke database.
SQL> conn rohmad/passroh2
ERROR:
ORA-01045: user ROHMAD lacks CREATE SESSION privilege; logon denied

Berikut ini perintah untuk memberi grant ke user agar bisa connect ke database
SQL> conn system;
SQL> grant connect to rohmad;

Setelah itu, dengan user rohmad tersebut, mari kita coba membuat table
SQL> conn rohmad/passroh2
SQL> create table tab_test (no number);
ERROR at line 1:
ORA-01031: insufficient privileges

OO… ternyata user rohmad belum punya priviledges untuk membuat table. Coba beri privilege ke user rohmad agar bisa membuat tabel
SQL> conn system;
SQL> grant create table to rohmad;

Sekarang buat table
SQL> conn rohmad/passroh2
SQL> create table tab_test (no number);
ERROR at line 1:
ORA-01950: no privileges on tablespace 'USERS'

OO… ternyata error. Walaupun default tablespace untuk user ROHMAD adalah tablespace USERS, ternyata ROHMAD masih belum bisa membuat table (menulis) di tablespace USERS. Beri quota ke user ROHMAD, bisa unlimited ataupun di-specify besarannya. Contoh, beri quota unlimited:
SQL> conn system;
SQL> alter user rohmad quota unlimited on USERS;

Coba lagi, dan berhasil …
SQL> conn rohmad/passroh2
SQL> create table tab_test (no number);
Table created.

Agar bisa membuat index, user rohmad harus diberi grant. Demikian juga untuk bisa membuat view. Wow… dapat anda bayangkan, berapa banyak privilege yang mesti gita beri (grant)? Untuk mengatasi itu, Oracle membuat role. Role berisi beberapa (banyak) privilege. Contoh, role RESOURCE berisi grant untuk membuat table, membuat index, quota unlimited di default tablespace, dan lain-lain.

Berikut ini perintah untuk memberi hak (grant) role RESOURCE ke user ROHMAD
SQL> conn system
SQL> grant RESOURCE to rohmad;

Umumnya, cukup dengan memberi grant CONNECT dan RESOURCE ke user yang baru dibuat, user tersebut sudah bisa melakukan banyak pekerjaan.
SQL> create user ROHMAD identified by PASSROH;
SQL> grant connect to rohmad;
SQL> grant RESOURCE to rohmad;

Menghapus User
SQL> drop user rohmad;

Kalau user tersebut mempunyai object (misalnya tabel), maka akan muncul error berikut
ORA-01922: CASCADE must be specified to drop 'ROHMAD'

Kalau begitu, tambahkan parameter CASCADE untuk sekaligus menghapus semua object yang dimiliki user tersebut
SQL> drop user rohmad CASCADE;

Referensi
1. Oracle9i Database Administrator’s Guide Release 2 (9.2) – Managing Users and Resources
2. Oracle9i Database Administrator’s Guide Release 2 (9.2) – Managing User Privileges and Roles

This entry was posted in Administration and tagged , , , , . Bookmark the permalink.

3 Responses to Administrasi User

  1. rio says:

    Salam,

    saya dapati kandungan website anda amat bagus sekali, bisa kah saya mengambil kandungan tulisan anda untuk dimuatkan dalam website saya untuk membantu dba di malaysia? pastinya kalau bisa, saya akan meletakkan link anda sebagai referensi.

  2. hanang says:

    Mas, tanya nih, aku coba belajar pake console. Waktu administrasi user kok dah banyak user yang ada dari instalasi bawaan ya? Dari template awal database yang kita buat mungkin ya? Waktu instal aku nga pake instal sampel.

    Trus user apa aja yg nga boleh dihapus (di luar sys, system, sysman)

    Makasih sebelumnya mas.

  3. rahman says:

    untuk Query Revoke gimana mas rohmad ? ada contohnya ga ya ?
    tks

Leave a Reply

Your email address will not be published. Required fields are marked *