Untuk alasan keamanan, pemakaian resource oleh user database perlu dibatasi. Selain itu, otorisasi (password) user juga perlu diperketat. Di database Oracle, pembatasan itu dilakukan oleh profile.
Berikut ini informasi profile (beserta parameter-patameternya) yang ada di database:
SQL> conn system SQL> SELECT * FROM DBA_PROFILES ORDER BY PROFILE,RESOURCE_TYPE; PROFILE RESOURCE_NAME RESOURCE LIMIT ---------- -------------------------------- -------- ---------- DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED DEFAULT SESSIONS_PER_USER KERNEL UNLIMITED DEFAULT PRIVATE_SGA KERNEL UNLIMITED DEFAULT CONNECT_TIME KERNEL UNLIMITED DEFAULT IDLE_TIME KERNEL UNLIMITED DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED DEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMITED DEFAULT CPU_PER_CALL KERNEL UNLIMITED DEFAULT CPU_PER_SESSION KERNEL UNLIMITED DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10 DEFAULT PASSWORD_LOCK_TIME PASSWORD UNLIMITED DEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMITED
Ketika kita membuat database, by default Oracle membuat profile dengan nama DEFAULT. Ketika kita membuat user tanpa menyebutkan profile-nya, maka user tersebut akan di-assign ke profile DEFAULT.
Membuat profile
Gambar diambil dari Oracle Documentation.
Format

resource_parameters

password_parameters

Contoh membuat profile:
SQL> CREATE PROFILE profileku LIMIT SESSIONS_PER_USER UNLIMITED CPU_PER_SESSION UNLIMITED CPU_PER_CALL 3000 CONNECT_TIME 45 LOGICAL_READS_PER_SESSION DEFAULT LOGICAL_READS_PER_CALL 1000 PRIVATE_SGA 15K COMPOSITE_LIMIT 5000000;
Mengedit profile
Formatnya sama persis dengan CREATE profile, hanya ganti kata CREATE menjadi ALTER. Contoh:
SQL> ALTER PROFILE profileku LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LIFE_TIME 60 PASSWORD_REUSE_TIME 60 PASSWORD_REUSE_MAX 5 PASSWORD_LOCK_TIME 1/24 PASSWORD_GRACE_TIME 10;
Assign profile ke user
Misalkan saya ingin melihat profile dari user TEST
SQL> select USERNAME,PROFILE from dba_users where USERNAME='TEST'; USERNAME PROFILE ------------------------------ ---------- TEST DEFAULT
Saya akan mengubah profile user TEST dari DEFAULT ke PROFILEKU
SQL> alter user test profile PROFILEKU;
Menghapus
Untuk menghapus profile PROFILEKU, gunakan perintah berikut:
SQL> drop profile PROFILEKU; ERROR at line 1: ORA-02382: profile PROFILEKU has users assigned, cannot drop without CASCADE
OO… Error. Profile PROFILEKU ada yang makai, yaitu user TEST. Kalau begitu tambahkan argument CASCADE:
SQL> drop profile PROFILEKU CASCADE;
Setelah profile dihapus, user yang di-assign ke profile tersebut akan dikembalikan ke profile DEFAULT.
Keterangan
Resource parameter:
- SESSIONS_PER_USER
Jumlah session paling banyak yang bisa digunakan secara bersamaan (concurrent). - CPU_PER_SESSION
Maksimal CPU per session. Satuan: 10 ms (hundredth of seconds). - CPU_PER_CALL
Maksimal CPU per call (parse, execute, atau fetch). Satuan: 10 ms (hundredths of seconds). - CONNECT_TIME
Maksimal waktu untuk koneksi. Satuan: menit. - IDLE_TIME
Maksimal waktu dalam status INACTIVE (idle). Satuan: menit. - LOGICAL_READS_PER_SESSION
Maksimal block yang boleh dibaca per session, termasuk block dari memori dan disk. - LOGICAL_READS_PER_CALL
Maksimal block yang boleh dibaca per call (parse, execute, atau fetch). - PRIVATE_SGA
Maksimal memory untuk PRIVATE AREA. Hanya berlaku pada “shared server”. Satuan: bytes. - COMPOSITE_LIMIT
Total resource cost per session. Satuan: service. Dihitung dari jumlah CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION, dan PRIVATE_SGA.
Password Parameter:
- FAILED_LOGIN_ATTEMPTS
Jumlah maksimal berapa kali salah login (password). Setelah mencapai FAILED_LOGIN_ATTEMPTS, user yang bersangkutan akan di-lock. - PASSWORD_LIFE_TIME
Umur password, dalam satuan hari. Password harus diganti sebelum mencapai PASSWORD_LIFE_TIME. - PASSWORD_GRACE_TIME (satuan: hari)
Bila setelah mencapai PASSWORD_LIFE_TIME, namun user masih belum mengubah passwordnya, maka user akan diberi peringatan selama PASSWORD_GRACE_TIME. Bila telah mencapai PASSWORD_GRACE_TIME namun user masih belum mengubah passwordnya, maka password akan expired dan tidak bisa digunakan untuk login. Bila PASSWORD_GRACE_TIME tidak disetting, maka nilainya UNLIMITED, artinya user akan tetap bisa login meskipun telah mencapai PASSWORD_LIFE_TIME. - PASSWORD_REUSE_TIME (satuan hari) dan PASSWORD_REUSE_MAX
Kedua parameter ini dipakai bersamaan. PASSWORD_REUSE_TIME menyatakan berapa hari (sejak password diganti) password boleh dipakai lagi. PASSWORD_REUSE_MAX menyatakan berapa kali password harus berubah (berganti) sebelum memakai password lama yang dulu pernah dipakai itu. - PASSWORD_LOCK_TIME (satuan hari)
Menyatakan berapa hari user akan di-lock setelah gagal login. - PASSWORD_VERIFY_FUNCTION


4 Comments
waaa,pembahasannya bagus banget, tapi aku cuma mudeng dikit2 aja…
gak begitu familiar dengan oracle seh, hehe..
lam kenal mas…
pak rohmat, saya mo tanya…. tutorial2 yang ada di sini… semuanay harus menggunakan login sebagai SYS ato SYSTEM ya pak??
Menggunakan user SYS bisa, SYSTEM bisa, user biasa yang punya privilege DBA juga bisa.
Halo. Saya cuma pengen ucapkan terima kasih kepada siapapun yang telah membangun web ini. Site ini adalah site terbaik yang membahas tentang oracle yang saya temukan. Sangat lengkap. Makasih banyak yaaa………
Post a Comment