Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该profile分配给用户,则该用户所能使用的数据库资源都在该profile的限制之内。
l 创建profile必须要有CREATE PROFILE的系统权限。
1.启动profile
SQL> show parameter resource_limit
NAME TYPE VALUE
------------------------------ ---------------------- ------------------------------
resource_limit boolean FALSE
SQL> alter system set resource_limit=true;
默认profiles是不启动的
2. 创建profiles
SQL> select * from dba_sys_privs where grantee='ASSETS';
GRANTEE PRIVILEGE
--------------------------------------------------- -------------------------
ASSETS CREATE TABLE
ASSETS CREATE SESSION
ASSETS UNLIMITED TABLESPACE
SQL> conn assets/assets@test
SQL> create profile test
2 limit
3 idle_time 30
4 connect_time 480;
create profile test
*
第 1 行出现错误:
ORA-01031: insufficient privileges
SQL> grant alter profile to assets; system登陆
SQL> grant create profile to assets;
SQL> select * from dba_sys_privs where grantee='ASSETS';
GRANTEE PRIVILEGE
---------------------------------------------------- ----------------------
ASSETS CREATE TABLE
ASSETS CREATE SESSION
ASSETS CREATE PROFILE
ASSETS ALTER PROFILE
ASSETS UNLIMITED TABLESPACE
SQL> create profile test
2 limit
3 sessions_per_user 100;
配置文件已创建
3.指定用户profile,并修改
SQL> conn system/system@test
已连接。
SQL> alter user assets profile test;
用户已更改。
SQL> alter profile test limit idle_time 60;
配置文件已更改
sql> select *from dba_profile where profile = 'test'
4.删除
SQL> drop profile test;
drop profile test
*
第 1 行出现错误: 已分配的profile,删除时必须加cascade选项。
ORA-02382: profile TEST has users assigned, cannot drop without CASCADE
SQL> drop profile test cascade;
配置文件已删除。
5. 视图与详情
l select * from dba_profiles
l select username,profile from dba_users
KERNEL RESOURCE(默认:UNLIMITED 无限制)
COMPOSITE_LIMIT | 指定一个会话的总的资源消耗,以service units单位表示。Oracle数据库以有利的方式计算cpu_per_session,connect_time,logical_reads_per_session和private-sga总的service units COMPOSITE_LIMIT:这是一项由上述限制参数构成的组合资源项。举例来说,假设资源设置如下: IDLE_TIME 20 CONNECT_TIME 120 CPU_PER_CALL 750 COMPOSITE_LIMT 800 那么,当会话空间超过20分钟,或者连接时间超过120分钟,又或者执行一个SQL耗费超过7.5秒,再或者这几个资源限制加起来的总数超过800,则系统自动终止会话。 |
SESSIONS_PER_USER | 指定限制用户的并发会话的数目 |
CPU_PER_SESSION | 定义了每个SESSION占用的CPU的时间。(单位:1/100 秒) |
CPU_PER_CALL | 指定一次调用(解析、执行和提取)的CPU时间限制。(单位:1/100 秒) |
LOGICAL_READS_PER_SESSION | 指定一个会话允许读的数据块的数目,包括从内存和磁盘读的所有数据块。 |
LOGICAL_READS_PER_CALL | 指定一次执行SQL(解析、执行和提取)调用所允许读的数据块的最大数目。 |
IDLE_TIME | 指定会话允许连续不活动的总的时间(单位:分钟)。超过该时间,会话将断开。但是长时间运行查询和其他操作的不受此限制。 |
CONNECT_TIME | 指定会话的总的连接时间。(单位:分钟) |
PRIVATE_SGA | 指定一个会话可以在共享池(SGA)中所允许分配的最大空间(单位:字节)。 注:该限制只在使用共享服务器结构时才有效,会话在SGA中的私有空间包括私有的SQL和PL/SQL,但不包括共享的SQL和PL/SQL |
PASSWORD RESOURCE |
|
FAILED_LOGIN_ATTEMPTS | 指定在帐户被锁定之前所允许尝试登陆的的最大次数。 |
PASSWORD_LIFE_TIME | 指定同一密码所允许使用的天数。如果同时指定了password_grace_time参数,如果在grace period内没有改变密码,则密码会失效,连接数据库被拒绝。如果没有设置password_grace_time参数,默认值unlimited将引发一个数据库警告,但是允许用户继续连接。 |
PASSWORD_REUSE_TIME PASSWORD_REUSE_MAX | 这两个参数必须互相关联设置,password_reuse_time指定了密码不能重用前的天数,而password_reuse_max则指定了当前密码被重用之前密码改变的次数。两个参数都必须被设置为整数。 1.如果为这两个参数指定了整数,则用户不能重用密码直到密码被改变了password_reuse_max指定的次数以后在password_reuse_time指定的时间内。如:password_reuse_time=30,password_reuse_max=10,用户可以在30天以后重用该密码,要求密码必须被改变超过10次。 2.如果指定了其中的一个为整数,而另一个为unlimited,则用户永远不能重用一个密码。 3.如果指定了其中的一个为default,Oracle数据库使用定义在profile中的默认值,默认情况下,所有的参数在profile中都被设置为unlimited,如果没有改变profile默认值,数据库对该值总是默认为unlimited。 4.如果两个参数都设置为unlimited,则数据库忽略他们。 |
PASSWORD_LOCK_TIME | 指定登陆尝试失败次数到达后,帐户的锁定时间(单位:天)。 |
PASSWORD_GRACE_TIME | 指定宽限天数,数据库发出警告到登陆失效前的天数。如果数据库密码在这中间没有被修改,则过期会失效。 |
PASSWORD_VERIFY_FUNCTION | 该字段允许将复杂的PL/SQL密码验证脚本做为参数传递到create profile语句。Oracle数据库提供了一个默认的脚本,但是自己可以创建自己的验证规则或使用第三方软件验证。 对Function名称,指定的是密码验证规则的名称,指定为Null则意味着不使用密码验证功能。如果为密码参数指定表达式,则该表达式可以是任意格式,除了数据库标量子查询。 |
USER_PER_CALL | 用户一次SQL调用可用的CPU时间总量限额,单位为百分之一秒; |
CONNECT_TIME | 一次连接的时间总量限额,单位为分钟,连接时间超过此值时,连接被断开; |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27693611/viewspace-743640/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27693611/viewspace-743640/