ORACLE的PROFILE文件是限制数据库用户使用资源的一种手段。
可以用来控制session或sql能使用的CPU、控制用户的密码管理策略等。
数据库创建后,系统中存在名为DEFAULT的默认PROFILE,若不做特殊指定,创建用户时用户默认使用的PROFILE就是DEFAULT。
1、查看数据库中有哪些profile文件:
SQL> select distinct profile from dba_profiles;
PROFILE
------------------------------
DEFAULT
这里数据库中只有一个profile,就是系统自带的DEFAULT。
2、查看这些profile中所有的内容:
可以用来控制session或sql能使用的CPU、控制用户的密码管理策略等。
数据库创建后,系统中存在名为DEFAULT的默认PROFILE,若不做特殊指定,创建用户时用户默认使用的PROFILE就是DEFAULT。
1、查看数据库中有哪些profile文件:
SQL> select distinct profile from dba_profiles;
PROFILE
------------------------------
DEFAULT
这里数据库中只有一个profile,就是系统自带的DEFAULT。
2、查看这些profile中所有的内容:
![](http://img.blog.itpub.net/blog/attachment/201611/18/28497416_1479451710m05r.png?x-oss-process=style/bb)
可以看到resoure_type有两种,一种是kernel,一种是password。
需要记住的是 password资源是永远可用的,而且任何关于 password资源的修改都是立即生效,无须修改。
而 kernel资源是收到参数 resource_limit的限制的。只有当 resource_limit参数设置为true时, kernel资源的限制 才会生效。
SQL> show parameter resource_limit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean FALSE
3、修改profile
alter profile [资源文件名] limit [资源名] unlimited;
例如: alter profile default limit failed_login_attempts 100;
4、删除profile
drop profile [资源文件名] [CASCADE] ;
cascade意义: 若创建的PROFILE已经授权给了某个用户,使用CASCADE级联收回相应的限制,收回限制信息后将以系统默认的PROFILE对该用户进行限制。
例如:
SQL> drop profile sess;
drop profile sess
ORA-02382: 概要文件 SESS 指定了用户, 不能没有 CASCADE 而删除
SQL> drop profile sess cascade;
Profile dropped
5、查看每个用户所属的profile:
SQL> SELECT username,PROFILE FROM dba_users ;
6、常见的关于profile的使用场景:
a)限制某一个用户的连接数:
SQL> alter system set resource_limit =TRUE; ---- 设置 RESOURCE_LIMIT参数为TRUE,即开启资源限制:
SQL>create profile sess limit sessions_per_user 20; --- 创建名为sess的PROFILE,并将 最大连接数限制为20
SQL>alter user test profile sess; ----- 将PROFILE指定给用户test
查看操作结果 :
SQL> SELECT username,PROFILE FROM dba_users where username='TEST';
USERNAME PROFILE
------------------------------ ------------------------------
TEST SESS
b) 修改用户密码的使用期限。oracle默认用户密码180天就到期,之后必须修改密码。可以改掉这个设置:
sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改后,还没有被提示ORA-28002警告的帐户不会再碰到同样的提示;已经被提示的用户需要修改密码,直接将密码设置和旧的一样就行。
c)修改密码输入错误的最大限制次数。oracle默认是10次,连续输错10次密码后,用户账号会被锁。可以更改该设置:
sql>ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
修改后,还没有被提示ORA-28000警告的用户不会再碰到同样的提示; 已经被锁定的帐户必须解除锁定 。
需要记住的是 password资源是永远可用的,而且任何关于 password资源的修改都是立即生效,无须修改。
而 kernel资源是收到参数 resource_limit的限制的。只有当 resource_limit参数设置为true时, kernel资源的限制 才会生效。
SQL> show parameter resource_limit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean FALSE
3、修改profile
alter profile [资源文件名] limit [资源名] unlimited;
例如: alter profile default limit failed_login_attempts 100;
4、删除profile
drop profile [资源文件名] [CASCADE] ;
cascade意义: 若创建的PROFILE已经授权给了某个用户,使用CASCADE级联收回相应的限制,收回限制信息后将以系统默认的PROFILE对该用户进行限制。
例如:
SQL> drop profile sess;
drop profile sess
ORA-02382: 概要文件 SESS 指定了用户, 不能没有 CASCADE 而删除
SQL> drop profile sess cascade;
Profile dropped
5、查看每个用户所属的profile:
SQL> SELECT username,PROFILE FROM dba_users ;
6、常见的关于profile的使用场景:
a)限制某一个用户的连接数:
SQL> alter system set resource_limit =TRUE; ---- 设置 RESOURCE_LIMIT参数为TRUE,即开启资源限制:
SQL>create profile sess limit sessions_per_user 20; --- 创建名为sess的PROFILE,并将 最大连接数限制为20
SQL>alter user test profile sess; ----- 将PROFILE指定给用户test
查看操作结果 :
SQL> SELECT username,PROFILE FROM dba_users where username='TEST';
USERNAME PROFILE
------------------------------ ------------------------------
TEST SESS
![](http://img.blog.itpub.net/blog/attachment/201611/18/28497416_1479452556WlAa.png?x-oss-process=style/bb)
b) 修改用户密码的使用期限。oracle默认用户密码180天就到期,之后必须修改密码。可以改掉这个设置:
sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改后,还没有被提示ORA-28002警告的帐户不会再碰到同样的提示;已经被提示的用户需要修改密码,直接将密码设置和旧的一样就行。
c)修改密码输入错误的最大限制次数。oracle默认是10次,连续输错10次密码后,用户账号会被锁。可以更改该设置:
sql>ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
修改后,还没有被提示ORA-28000警告的用户不会再碰到同样的提示; 已经被锁定的帐户必须解除锁定 。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28497416/viewspace-2128701/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28497416/viewspace-2128701/