Oracle Profile(用户资源和口令限制文件)

Oracle Profile

Oracle概要文件:

  • 概要文件可以开启或关闭
  • 是一组命了名的口令和资源限制
  • 可以通过DDL语句CREATE USER或ALTER赋予用户

常用命令:

#将profile文件赋予用户
alter user username profile profile_name;

#激活profile资源限制(临时生效)
alter system set resource_limit=TRUE scope=memory;

#激活profile资源限制(永久生效)
alter system set resource_limit=TRUE;

#查看某个用户当前使用的profile文件
select username,profile from dba_users where username = 'USERNAME';

#查询DEFAULT(默认PROFILE)文件的密码限制
select * 
from dba_profiles 
where profile = 'DEFAULT' 
and resource_type = 'PASSWORD';

当一个概要文件被创建后并将其赋予用户,如果此时资源限制为开启状态,Oracle服务器就会按照概要文件中的规则来限制用户对资源的使用,但是与资源限制不同,口令限制总是开启的。
注:当数据被创建时,Oracle服务器会自动创建一个名为DEFAULT的默认概要文件,任何用户没有被指定赋予一个概要文件,Oracle服务器就将默认概要文件赋予这个用户

一、使用CREATE PROFILE语句创建一个配置文件

sql语法:

CREATE PROFILE profile
   LIMIT { resource_parameters
         | password_parameters
         }...
;

1、resource_parameters的设置

{ { SESSIONS_PER_USER			#每个用户名所允许的并行会话数
  | CPU_PER_SESSION				#总共的CPU时间(单位是1%秒)
  | CPU_PER_CALL				#每个调用所用的CPU时间(单位是1%秒)
  | CONNECT_TIME				#连接时间(单位是分钟)
  | IDLE_TIME					#没有活动的时间(单位是分钟,该参数只记录服务器进程)
  | LOGICAL_READS_PER_SESSION	#物理(磁盘)和逻辑(内存)读的数据块数
  | LOGICAL_READS_PER_CALL		#每个调用可以读的数据块数
  | COMPOSITE_LIMIT				#指定会话的总资源成本,以服务单位表示。Oracle数据库计算总服务单位的加权和CPU_PER_SESSION,CONNECT_TIME,LOGICAL_READS_PER_SESSION,和PRIVATE_SGA
  }
  { integer | UNLIMITED | DEFAULT }
| PRIVATE_SGA					#指定会话可以在系统全局区域(SGA)的共享池中分配的私有空间量
  { size_clause | UNLIMITED | DEFAULT }
}

UNLIMETED: 当使用resource参数指定时,UNLIMITED指示分配了此配置文件的用户可以使用无限量的该资源。当使用密码参数指定时,UNLIMITED表示尚未为该参数设置任何限制.
DEFAULT: 指定DEFAULT是否要在此配置文件中忽略此资源的限制。分配了此配置文件的用户受配置文件中指定的此资源的限制DEFAULT。该DEFAULT配置文件最初定义了无限的资源。您可以使用该ALTER PROFILE语句更改这些限制 未明确分配配置文件的任何用户都必须遵守配置文件中定义的限制DEFAULT。同样,如果显式分配给用户的配置文件忽略了某些资源的限制或指定DEFAULT了某些限制,则用户将受到DEFAULT配置文件定义的那些资源的限制.

示例:

SQL> CREATE PROFILE nice_prof LIMIT		#创建一个名为nice_prof的概要文件
SESSIONS_PER_USER 8						#使用这个概要文件的用户,利用同一个用户名和口令可以同时打开8个会话(八个链接)
CPU_PER_SESSION 16800					#每个会话最多可以使用的CPU时间为16800个1%秒(168秒)
LOGICAL_READS_PER_SESSION 23688			#每个会话最多可以读23688个数据块(包括内存读和磁盘读)
CONNECT_TIME 268						#每个会话的连接时间最多为268分(4小时28分钟)
IDLE_TIME 38;							#每个会话的没有活动的时间不能超过38分钟

Profile created.

SQL> 

查询验证:

SQL> select * from dba_profiles where profile like 'NICE%';

PROFILE 		       RESOURCE_NAME				RESOURCE LIMIT
---------------------- ---------------------------- -------- -------
NICE_PROF		       COMPOSITE_LIMIT				KERNEL	 DEFAULT
NICE_PROF		       SESSIONS_PER_USER			KERNEL	 8
NICE_PROF		       CPU_PER_SESSION				KERNEL	 16800
NICE_PROF		       CPU_PER_CALL					KERNEL	 DEFAULT
NICE_PROF		       LOGICAL_READS_PER_SESSION	KERNEL	 23688
NICE_PROF		       LOGICAL_READS_PER_CALL		KERNEL	 DEFAULT
NICE_PROF		       IDLE_TIME					KERNEL	 38
NICE_PROF		       CONNECT_TIME					KERNEL	 268
NICE_PROF		       PRIVATE_SGA					KERNEL	 DEFAULT
NICE_PROF		       FAILED_LOGIN_ATTEMPTS		PASSWORD DEFAULT
NICE_PROF		       PASSWORD_LIFE_TIME			PASSWORD DEFAULT

PROFILE 		       RESOURCE_NAME				RESOURCE LIMIT
---------------------- ---------------------------- -------- -------
NICE_PROF		       PASSWORD_REUSE_TIME			PASSWORD DEFAULT
NICE_PROF		       PASSWORD_REUSE_MAX			PASSWORD DEFAULT
NICE_PROF		       PASSWORD_VERIFY_FUNCTION 	PASSWORD DEFAULT
NICE_PROF		       PASSWORD_LOCK_TIME			PASSWORD DEFAULT
NICE_PROF		       PASSWORD_GRACE_TIME			PASSWORD DEFAULT

16 rows selected.

SQL> 
#第三列RESOURCE_TYPE的显示为KERNEL时,就表示这是一个资源限制
#第三列RESOURCE_TYPE的显示为PASSWORD时,就表示这是一个口令限制
#凡是没有定义的限制都为默认

2、password_parameters口令管理

(1)口令账户加锁(password account locking)
通过FAILED_LOGIN_ATTEMPTSPASSWORD_LIFE_TIME参数设置;
(2)口令衰老和过期通过PASSWORD_LIFE_TIMEPASSWORD_GRACE_TIME参数设置;
(3)口令历史(password history)
通过PASSWORD_REUSE_TIMEPASSWORD_REUSE_MAX参数设置;
(4)口令复杂性验证(password complexity verification)
通过PASSWORD_VERIFY_FUNCTION参数设置。

{ { FAILED_LOGIN_ATTEMPTS		#在账户被锁住之前可以尝试登录失败的次数
  | PASSWORD_LIFE_TIME			#口令的生命周期(可以使用的天使),在此之后口令作废,如果您还为设置了一个值PASSWORD_GRACE_TIME,那么如果在宽限期内未更改密码,密码将过期,并且其他连接将被拒绝。如果省略此子句,则默认值为180天。
  | PASSWORD_REUSE_TIME			#(必须与PASSWORD_REUSE_MAX相互结合设置)指定不能重用密码的天数
  | PASSWORD_REUSE_MAX			#(必须与PASSWORD_REUSE_TIME相互结合设置)指定在可以重用当前密码之前所需的密码更改次数。为了使这些参数生效,必须为它们两个都指定一个值
  | PASSWORD_LOCK_TIME			#指定在指定次数的连续失败登录尝试之后帐户将被锁定的天数。如果省略此子句,则默认值为1天。
  | PASSWORD_GRACE_TIME			#指定宽限期开始后发出警告并允许登录的天数。如果省略此子句,则默认值为7天。
  }
  { expr | UNLIMITED | DEFAULT }
| PASSWORD_VERIFY_FUNCTION		#在一个新的口令赋予一个用户之前,要运行验证口令的复杂性是否满足安全要求的一个PL/SQL函数,所有新口令必须通过该函数的验证
  { function | NULL | DEFAULT }
}

PASSWORD_VERIFY_FUNCTION(口令复杂性验证)请参考我写的另一篇文章:
点击跳转:PASSWORD_VERIFY_FUNCTION

示例:

SQL> CREATE PROFILE good_prof LIMIT		#创建一个名为good_prof的概要文件
FAILED_LOGIN_ATTEMPTS 7					#在账户被锁定之前可以尝试登录失败的次数为7次
PASSWORD_LOCK_TIME UNLIMITED			#在尝试登录指定的次数失败后,账户将被永远锁住
PASSWORD_LIFE_TIME 44					#口令的生命周期(可以使用的天数)为44天
PASSWORD_REUSE_TIME 24					#一个口令要在作废24天之后才可以重用
PASSWORD_GRACE_TIME 4;					#当口令过期之后有4天可以使用原口令登录的宽免期

Profile created.

SQL> 

查询验证:

SQL> select * 
from dba_profiles 
where profile like 'GOOD%' 
and resource_type = 'PASSWORD';

PROFILE 		       RESOURCE_NAME				RESOURCE LIMIT
---------------------- ------------------------ ------------ ---------------
GOOD_PROF		       FAILED_LOGIN_ATTEMPTS		PASSWORD 7
GOOD_PROF		       PASSWORD_LIFE_TIME			PASSWORD 44
GOOD_PROF		       PASSWORD_REUSE_TIME			PASSWORD 24
GOOD_PROF		       PASSWORD_REUSE_MAX			PASSWORD DEFAULT
GOOD_PROF		       PASSWORD_VERIFY_FUNCTION 	PASSWORD DEFAULT
GOOD_PROF		       PASSWORD_LOCK_TIME			PASSWORD UNLIMITED
GOOD_PROF		       PASSWORD_GRACE_TIME			PASSWORD 4
#查询结果可以看出,凡是在创建概要文件时没有定义的口令限制都为默认,其他参数与创建概要文件所定义的完全一致
7 rows selected.

SQL> 
二、修改、查询和删除概要文件

1、修改概要文件

根据不同应用的要求,有些口令文件已经不能满足需求,这时使用ALTER PROFILE语句来修改口令限制

示例:

#使用缺省的profile文件-DEFAULT
#分开执行修改profile文件password_parameters:
alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS 4;		#登录失败4次后账户被锁定
alter profile DEFAULT limit PASSWORD_LIFE_TIME 90;			#口令的生命周期(可以使用的天数)为90天
alter profile DEFAULT limit PASSWORD_REUSE_TIME	 60;		#不能重用密码的天数60天
alter profile DEFAULT limit PASSWORD_REUSE_MAX	 5;			#修改五次密码后才能重用该密码
alter profile DEFAULT limit PASSWORD_GRACE_TIME	 7;			#当口令过期之后有7天可以使用原口令登录的宽免期

#也可以一起执行:
SQL> ALTER PROFILE DEFAULT LIMIT
FAILED_LOGIN_ATTEMPTS 4
PASSWORD_REUSE_TIME	 60
PASSWORD_GRACE_TIME 14
PASSWORD_REUSE_MAX	 5
PASSWORD_GRACE_TIME	 7;

Profile altered.

SQL> 

查询验证:

将用户密码修改为无限期:
alter profie default limit password_life_time unlimited;

SQL> select * from dba_profiles where profile like 'GOOD%' and resource_type = 'PASSWORD';

PROFILE 		       RESOURCE_NAME				RESOURCE LIMIT
---------------------- ---------------------------- -------- ----------
GOOD_PROF		       FAILED_LOGIN_ATTEMPTS		PASSWORD 4
GOOD_PROF		       PASSWORD_LIFE_TIME			PASSWORD 74
GOOD_PROF		       PASSWORD_REUSE_TIME			PASSWORD 24
GOOD_PROF		       PASSWORD_REUSE_MAX			PASSWORD DEFAULT
GOOD_PROF		       PASSWORD_VERIFY_FUNCTION 	PASSWORD DEFAULT
GOOD_PROF		       PASSWORD_LOCK_TIME			PASSWORD UNLIMITED
GOOD_PROF		       PASSWORD_GRACE_TIME			PASSWORD 14
#概要参数中的值与修改概要文件时指定的时完全一致
7 rows selected.

SQL>	

2、查询数据库中有哪些概要文件

SQL> select * 
from dba_profiles 
where resource_name = 'FAILED_LOGIN_ATTEMPTS';
#该where字句的作用就是使每一个概要文件在查询显示中的结果只输出一行,全部显示会很多,不好分辨
PROFILE 		       RESOURCE_NAME				RESOURCE LIMIT
---------------------- ---------------------------- -------- ------------
DEFAULT 		       FAILED_LOGIN_ATTEMPTS		PASSWORD 10
GOOD_PROF		       FAILED_LOGIN_ATTEMPTS		PASSWORD 4
NICE_PROF		       FAILED_LOGIN_ATTEMPTS		PASSWORD DEFAULT
#可以看到该数据库中有一个默认概要文件和我自己手动创建的两个概要文件
SQL> 

3、删除概要文件

当一个概要文件不再被需要时,可以使用DROP PROFILE语句来删除这个概要文件,如果该概要文件已经被赋予用户,那么在DROP PROFILE语句中要加上CASCADE参数选项,使用CASCADE参数将概要文件从所赋予的用户手中回收,之后Oracle会自动将默认概要文件赋予用户,所以默认概要文件不能被删除。

SQL> DROP PROFILE good_prof;

Profile dropped.

SQL> 

查询验证:

select * 
from dba_profiles 
where resource_name = 'FAILED_LOGIN_ATTEMPTS';

PROFILE 		       RESOURCE_NAME				RESOURCE LIMIT
---------------------- ---------------------------- -------- -----------
DEFAULT 		       FAILED_LOGIN_ATTEMPTS		PASSWORD 10
NICE_PROF		       FAILED_LOGIN_ATTEMPTS		PASSWORD DEFAULT
#good_prof概要文件已经被删除
SQL> 

概要文件nice_prof中只定义了资源限制,其口令限制为Oracle默认值,
概要文件good_prof中只定义的口令限制,其资源限制为Oracle默认值
在生产环境中,一般将资源限制和口令限制创建一个概要文件同时定义。

至此结束,一些其他问题还会后续补充,欢迎留言,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值