2024年2月8日发(作者:)

Oracle profile 参数详解

一、profile功能

oracle系统中的profile是用来对用户所能使用的数据库资源进行限制的。

二、profile参数详解

(1)查看数据库资源限制参数

SQL> select * from dba_profiles;

PROFILE RESOURCE_NAME

RESOURCE LIMIT

------------------------------ -------------------------------- --------

--------------------

DEFAULT COMPOSITE_LIMIT

KERNEL UNLIMITED

DEFAULT SESSIONS_PER_USER

KERNEL UNLIMITED

DEFAULT CPU_PER_SESSION

KERNEL UNLIMITED

DEFAULT CPU_PER_CALL

KERNEL UNLIMITED

DEFAULT LOGICAL_READS_PER_SESSION

RNEL UNLIMITED

DEFAULT LOGICAL_READS_PER_CALL

ERNEL UNLIMITED

DEFAULT IDLE_TIME

KERNEL UNLIMITED

DEFAULT CONNECT_TIME

KERNEL UNLIMITED

DEFAULT PRIVATE_SGA

KERNEL UNLIMITED

DEFAULT FAILED_LOGIN_ATTEMPTS

PASSWORD 10

DEFAULT PASSWORD_LIFE_TIME

PASSWORD UNLIMITED

KE K

DEFAULT PASSWORD_REUSE_TIME

PASSWORD UNLIMITED

DEFAULT PASSWORD_REUSE_MAX

PASSWORD UNLIMITED

DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL

DEFAULT PASSWORD_LOCK_TIME

PASSWORD UNLIMITED

DEFAULT

PASSWORD UNLIMITED

MONITORING_PROFILE

NEL DEFAULT

MONITORING_PROFILE

EL DEFAULT

MONITORING_PROFILE

NEL DEFAULT

MONITORING_PROFILE

RNEL DEFAULT

MONITORING_PROFILE

DEFAULT

MONITORING_PROFILE

DEFAULT

MONITORING_PROFILE

KERNEL DEFAULT

MONITORING_PROFILE

RNEL DEFAULT

MONITORING_PROFILE

ERNEL DEFAULT

MONITORING_PROFILE

RD UNLIMITED

MONITORING_PROFILE

ORD DEFAULT

MONITORING_PROFILE

ORD DEFAULT

MONITORING_PROFILE

ORD DEFAULT

PASSWORD_GRACE_TIME

KER KERN KER KEKERNEL

KERNEL

KE K PASSWO PASSW PASSW PASSW

COMPOSITE_LIMIT

SESSIONS_PER_USER

CPU_PER_SESSION

CPU_PER_CALL

LOGICAL_READS_PER_SESSION

LOGICAL_READS_PER_CALL

IDLE_TIME

CONNECT_TIME

PRIVATE_SGA

FAILED_LOGIN_ATTEMPTS

PASSWORD_LIFE_TIME

PASSWORD_REUSE_TIME

PASSWORD_REUSE_MAX

MONITORING_PROFILE PASSWORD_VERIFY_FUNCTION PASSWORD

DEFAULT

MONITORING_PROFILE PASSWORD_LOCK_TIME PASSWORD DEFAULT

MONITORING_PROFILE PASSWORD_GRACE_TIME PASSWORD DEFAULT

32 rows selected.

Unlimited:分配该profile的用户对资源使用无限制,当使用密码参数时,unlimited意味着没有对参数加限制。

Default:指定为default意味着忽略对profile中的一些资源限制,Default profile初始定义对资源不限制,可以通过alter profile命令来改变。

(2)参数详解

Resource_parameter部分:

Session_per_user:指定限制用户的并发会话的数目。

Cpu_per_session:指定会话的CPU时间限制,单位为百分之一秒。

Cpu_per_call:指定一次调用(解析、执行和提取)的CPU时间限制,单位为百分之一秒。

Connect_time:指定会话的总的连接时间,以分钟为单位。

Idle_time:指定会话允许连续不活动的总的时间,以分钟为单位,超过该时间,会话将断开。

Logical_reads_per_session:指定一个会话允许读的数据块的数目,包括从内存和磁盘读的所有数据块。

Logical_read_per_call:指定一次执行SQL(解析、执行和提取)调用所允许读的数据块的最大数目。

Private_sga:指定一个会话可以在共享池(SGA)中所允许分配的最大空间,以字节为单位。

Composite_limit:指定一个会话的总的资源消耗,以service units单位表示。Oracle数据库以有利的方式计算cpu_per_session, connect_time,logical_reads_per_session和private-sga总的service units

Password_parameter部分:

Failed_login_attempts:指定在帐户被锁定之前所允许尝试登陆的的最大次数。

Password_life_time:指定同一密码所允许使用的天数。

Password_reuse_time和password_reuse_max:这两个参数必须互相关联设置,password_reuse_time指定了密码不能重用前的天 数,而password_reuse_max则指定了当前密码被重用之前密码改变的次数。两个参 数都必须被设置为整数。

Password_lock_time:指定登陆尝试失败次数到达后帐户的锁定时间,以天为单位。

Password_grace_time:指定宽限天数,数据库发出警告到登陆失效前的天数。如果数据库密码在这中间没有被修改,则过期会失效。

Password_verify_function:该字段允许将复杂的PL/SQL密码验证脚本做为参数传递到create profile语句。Oracle数据库提供了一个默认 的

脚本,但是自己可以创建自己的验证规则或使用第三方软件验证。 对Function名称,指定的是密码验证规 则的名称, 指定为Null则意味着不使用密码验证功能。如果为密码参数指定表达式,则该表达式可以是任意 格式,除了数据库 量子查询。

三、使用profile

(1)创建profile,命令如下:

CREATE PROFILE profile profile_name

LIMIT { resource_parameters

| password_parameters

}

[ resource_parameters

| password_parameters

]... ;

(2) profile分配给用户,命令如下:

alter user user_name profile profile_name;

四、举例

(1)创建一个用户u1

SQL> show user;

USER is "SYS"

SQL> create user u1 identified by u1;

User created.

SQL> grant create session to u1;

Grant succeeded.

(2)创建profile为p1用来限制用户尝试登陆失败2次后会被锁定

SQL> create profile p1 limit FAILED_LOGIN_ATTEMPTS 2;

Profile created.

(3)把创建的p1分配给u1

SQL> alter user u1 profile p1;

User altered.

(4)尝试验证

SQL> select USERNAME,ACCOUNT_STATUS,LOCK_DATE,PROFILE from dba_users

where username='U1';

USERNAME ACCOUNT_STATUS LOCK_DATE PROFILE

---------- -------------------------------- ---------

------------------------------ //看u1用户的状态没有被锁

U1 OPEN

P1

SQL> conn u1/a1;

ERROR:

ORA-01017: invalid username/password; logon denied

Warning: You are no longer connected to ORACLE.

//尝试两次失败登陆

SQL> conn u1/a1;

ERROR:

ORA-01017: invalid username/password; logon denied

SQL> select USERNAME,ACCOUNT_STATUS,LOCK_DATE,PROFILE from dba_users where

USERNAME='U1';

USERNAME ACCOUNT_STATUS LOCK_DATE PROFILE

--------------- ------------------------------

----------- ------------------- //查看U1用的状态,已经被锁

U1 LOCKED(TIMED) 05-MAR-14 P1

SQL> conn u1/u1;

ERROR:

//在被锁之后,使用正确的密码也不能再登陆

ORA-28000: the account is

locked

Warning: You are no longer connected to ORACLE.

(5)解决办法:第一种可以等Password_lock_time参数设定的天数过了之后自动解锁,第二种需要管理员帮助,为用户解锁,在此选择第二种方法 求职管理员。

SQL> show user;

USER is "SYS"

SQL> alter user u1 account unlock identified by

u1; //用户解锁时可以使用之前的密码

User altered.

SQL> conn u1/u1;

Connected.

SQL> show user;

USER is

"U1" //u1用户成功登陆