Thursday, June 19, 2008

Using Resource User Profiles

User Profiles

Bạn có thể dùng profile để giới hạn tài nguyên của hệ thống, database mà user sử dụng và quản lý password. Nếu không có profile nào được tạo trong database, thì database sẽ dùng default profile – chỉ định tài nguyên không giới hạn (unlimited resource) cho tất cả các user.

Resource Description
SESSION_PER_USER Số session đồng thời của 1 user
CPU_PER_SESSION Thời gian CPU mà session có thể dùng (100s)
CPU_PER_CALL Thời gian CPU mà 1 thao tác (parse, execute, hoặc fetch) có thể dùng
CONNECT_TIME Thời gian session có thể connect đến database (phút)
IDLE_TIME Thời gian session ở trạng thái idle sau khi connect đến database
LOGICAL_READS_PER_SESSION Số database block có thể đọc trong 1 session
LOGICAL_READS_PER_CALL Số database block có thể đọc trong 1 thao tác (parse, execute, fetch)
PRIVATE_SGA Dung lượng session có thể cấp phát trong Shared Pool (đối với Shared Server)
FAILED_LOGIN_ATTEMPTS Số lần login fail liên tiếp => account bị lock
PASSWORD_LIFE_TIME Số ngày dùng password trước khi password bị expire
PASSWORD_REUSE_TIME Số ngày phải trải qua để có thể dùng lại password
PASSWORD_REUSE_MAX Số lần password bị thay đổi trước khi có thể dùng lại
PASSWORD_LOCK_TIME Số ngày account bị lock nếu login fail vượt quá FAILED_LOGIN_ATTEMPTS
PASSWORD_GRACE_TIME Số ngày password vẫn có thể được thay đổi khi đến ngày PASSWORD_LIFE_TIME
PASSWORD_VERIFY_FUNCTION Tên của hàm (function) của Oracle được dùng để đánh giá độ phức tạp của password. Hàm này có thể được chỉnh sửa.


First things first, the resouce_limit parameter must be set to TRUE. You can either set it in the init.ora or via ALTER SYSTEM.

Next, you create the profile and assign limits to it. Read the descriptions carefully, though, some of the resource parameters may sound self-explanatory, but aren't. For example, you would think SESSIONS_PER_USER would mean the number of times a particular user can login. In fact, it's the number of concurrent sessions that can run at one time.
SQL> create profile really_small limit
2 sessions_per_user 1
3 cpu_per_session 100
4 cpu_per_call 100
5 connect_time 5
6 /

Profile created.

Then you assign the profile to a particular user:
SQL> alter user jh profile really_small;

User altered.

Just for kicks, you can check that your profile is assigned to your user.
SQL> select username, profile from dba_users where username = 'JH';

USERNAME PROFILE
------------ ---------------
JH REALLY_SMALL

SQL> select resource_name, resource_type, limit
2 from dba_profiles
3 where profile = 'REALLY_SMALL';

RESOURCE_NAME RESOURCE LIMIT
-------------------------------- -------- ------------------
COMPOSITE_LIMIT KERNEL DEFAULT
SESSIONS_PER_USER KERNEL 1
CPU_PER_SESSION KERNEL 100
CPU_PER_CALL KERNEL 100
LOGICAL_READS_PER_SESSION KERNEL DEFAULT
LOGICAL_READS_PER_CALL KERNEL DEFAULT
IDLE_TIME KERNEL DEFAULT
CONNECT_TIME KERNEL 5
PRIVATE_SGA KERNEL DEFAULT
FAILED_LOGIN_ATTEMPTS PASSWORD DEFAULT
PASSWORD_LIFE_TIME PASSWORD DEFAULT
PASSWORD_REUSE_TIME PASSWORD DEFAULT
PASSWORD_REUSE_MAX PASSWORD DEFAULT
PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
PASSWORD_LOCK_TIME PASSWORD DEFAULT
PASSWORD_GRACE_TIME PASSWORD DEFAULT

16 rows selected.

No comments: