转至:https://blog.csdn.net/zhuomingwang/article/details/6444240?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control
1.用户创建语句PROFILE选项
如果大家细心的话,在创建用户的语法中有这么一个选项“PROFILE profile”。
下面是Oracle 11gR2官方文档中关于创建用户的语法描述(较之10g的文档可读性加强了,当然功能也同样有所增加):
CREATE USER user
IDENTIFIED { BY password
| EXTERNALLY [ AS 'certificate_DN' | AS 'kerberos_principal_name' ]
| GLOBALLY [ AS '[ directory_DN ]' ]
}
[ DEFAULT TABLESPACE tablespace
| TEMPORARY TABLESPACE
{ tablespace | tablespace_group_name }
| { QUOTA { size_clause | UNLIMITED } ON tablespace }...
| PROFILE profile
| PASSWORD EXPIRE
| ACCOUNT { LOCK | UNLOCK }
| ENABLE EDITIONS
]...
] ;
2.提问:PROFILE选项是做什么用的呢?
回答:简要的说,PROFILE在Oracle数据库对数据库用户能够使用的资源做进一步的限制的一种手段,
如对连接到某个用户的session或sql所能使用的CPU资源进行控制,又如控制Oracle用户的密码管理策略等等……
3.查看系统的默认PROFILE
1)通过dba_profiles视图查看一下系统中默认都有哪些PROFILE
数据库创建以后,系统中只会存在一个名为DEFAULT的默认PROFILE,在用户创建之后,如果不做特殊指定,
每个用户的PROFILE都会默认的使用个默认的PROFILE。
sys@ora10g> select distinct profile from dba_profiles;
PROFILE
----------
DEFAULT
2)全面查看一下这个PROFILE都包含哪些限制定义
sys@ora10g> 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 KERNEL UNLIMITED
DEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITED
DEFAULT IDLE_TIME KERNEL UNLIMITED
DEFAULT CONNECT_TIME KERNEL UNLIMITED
DEFAULT PRIVATE_SGA KERNEL UNLIMITED
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD10DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED
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_GRACE_TIME PASSWORD UNLIMITED16 rows selected.
3)结论
通过上面的查看,可以得到这个系统默认的PROFILE “DEFAULT”的配置信息只对密码的错误尝试次数做了限制
(最多可以错误输错10次密码),如果我们启用了PROFILE(下面有介绍如何启用和停止PROFILE),默认的限制只有这些。
如果想要改变限制条件,有两种方法:第一种方法是可以对这个默认的PROFILE做个性化的调整;
第二种方法是再重新定制一个新的PROFILE满足新的需求。
4.对创建PROFILE的标准语法做一下“解剖麻雀”(更多细节可以参考Oracle的官方文档)
1)创建PROFILE的语法如下:
CREATE PROFILE profile
LIMIT { resource_parameters 对资源的限制
| password_parameters 对密码的限制
}...
;
修改参数的值ALTER PROFILE LIMIT ;;
例如:alter profile default limit password_life_time 1;
2)对数据库资源做限制时,下面是全部可用的参数:
RESOURCE_LIMIT=TRUE is required for resource limiting portions of the profile.
Password limiting functionality is not affected by this parameter.
SELECT name, value
FROM gv$parameter
WHERE name = 'resource_limit';
ALTER SYSTEM SET resource_limit=TRUE SCOPE=spfile;
startup force;
SELECT name, value
FROM gv$parameter
WHERE name = 'resource_limit';
{ { SESSIONS_PER_USER 每个用户名所允许的并行会话数
| CPU_PER_SESSION 一个会话一共可以使用的CPU时间,单位是百分之一秒
| CPU_PER_CALL 一次SQL调用(解析、执行和获取)允许使用的CPU时间
| CONNECT_TIME 限制会话连接时间,单位是分钟
| IDLE_TIME 允许空闲会话的时间,单位是分钟
| LOGICAL_READS_PER_SESSION 限制会话对数据块的读取,单位是块
| LOGICAL_READS_PER_CALL 限制SQL调用对数据块的读取,单位是块
| COMPOSITE_LIMIT “组合打法”
}
{ integer | UNLIMITED | DEFAULT }
| PRIVATE_SGA 限制会话在SGA中Shared Pool中私有空间的分配
{ size_clause | UNLIMITED | DEFAULT }
}
3)对密码做限制时,下面是全部可用的参数:
{ { FAILED_LOGIN_ATTEMPTS 帐户被锁定之前可以错误尝试的次数
| PASSWORD_L