oracle的profiles

来源:互联网 发布:k8陀螺仪软件下载 编辑:程序博客网 时间:2024/06/12 19:51

摘自:

http://hi.baidu.com/samson_wu/item/2b9edb18a2cafd673f87ce95

 

profiles文件是口令和资源限制的配置集合,包括CPU的时间、I/O的使用、空闲时间、连接时间、并发会话数量、密码策略等对于资源的使用profile可以做到控制会话级别或语句调用级别。oracle自带的默认好多是不限制的,用户创建时都会被指定这个PROFILE。

       了解和配置参照如下:
一.sqlplus连接
C:\Users\prdadm>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Fri Feb 24 16:23:23 2012
Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

二.了解当前用户的profile配置文件,如果没有修改过,你的所有用户profile都是Default;

SQL> select username,profile from dba_user

USERNAME                       PROFILE
------------------------------ ---------
SAPSR3                         DEFAULT
OUTLN                           DEFAULT
TSMSYS                         DEFAULT
DIP                                  DEFAULT
ORACLE_OCM               DEFAULT
DBSNMP                         DEFAULT


三.查看系统本身的profile的配置参数都有哪些?
select * from dba_profiles where profile='default';
----
COMPOSITE_LIMIT UNLIMITED    一次会话总的消耗资源不超过的服务单元
SESSIONS_PER_USER UNLIMITED  用户并发会话数不限制
CPU_PER_SESSION UNLIMITED    定义了每个SESSION占用的CPU的时间
CPU_PER_CALL UNLIMITED一次   每个语句调用消耗cpu时间不限制
LOGICAL_READS_PER_SESSION UNLIMITED  一次会话读取逻辑数据块不限制
LOGICAL_READS_PER_CALL UNLIMITED
IDLE_TIME UNLIMITED
CONNECT_TIME UNLIMITED    连接会话超时不限制
PRIVATE_SGA UNLIMITED
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LIFE_TIME UNLIMITED
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_VERIFY_FUNCTION NULL
PASSWORD_LOCK_TIME UNLIMITED
PASSWORD_GRACE_TIME UNLIMITED
你看见这个默认的profile对于密码的限制是很少的,特别令你失望的是居然没有密码复杂度要求(比如要有大小写数字、密码长度要求等)。当然oracle不会这么弱智,只是需要我们去启用;


四.启用oracle的密码复杂度验证函数
SQL>@c:\oracle\PRD\102\RDBMS\ADMIN\utlpwdmg.sql
运行成功后,用select * from dba_profiles就可以显示出来了;
PASSWORD_VERIFY_FUNCTION verify_function
这个oracle默认verify_function()函数,要求口令密码最小长度4、不能和用户名相同、至少有一个字母、数字和特殊字母,旧密码和新密码至少有三位不同。如果你觉得这个要求还太低,那你就创建自己复杂的验证函数。


五.我们这个是修改了Default,通常我们是不希望修改默认的profile,如果还原回去
ALTER PROFILE DEFAULT LIMIT
COMPOSITE_LIMIT UNLIMITED
.....


六.既然Default最好不要修改,那自己创建一个玩玩
CREATE PROFILE my_profile LIMIT
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL 6000
CONNECT_TIME 60
LOGICAL_READS_PER_SESSION DEFAULT
LOGICAL_READS_PER_CALL 6000
COMPOSITE_LIMIT 6000000
PRIVATE_SGA 66K   一次会话在SGA中不能分配超过66k的空间
FAILED_LOGIN_ATTEMPTS 6 密码尝试次数
PASSWORD_LIFE_TIME 60 密码生存期
PASSWORD_REUSE_TIME 60 密码重用周期
PASSWORD_REUSE_MAX 5   密码重用前需要改变的次数
PASSWORD_LOCK_TIME 1/24 密码错误锁定时间
PASSWORD_GRACE_TIME 10 密码过期缓冲时间天数
PASSWORD_VERIFY_FUNCTION verify_function密码复杂度校验


七.将profile分配给用户
我们前面提到,新建用户机场默认profile,如果我们创建的proflie不分配给需要的用户,对这个用户还是不起作用
如果是在新建用户就分配
CREATE USER username ...profile myprofile;
如果是已经创建好的用户则:
ALTER USER username PROFILE myprofile;


八.如果没有的profile,我们可以删除profile;
建起来困难,删除就容易多了,drop profile my_profile一下子搞定,如果已经分配给用户,需要先修改用户配置,或者使用DROP PROFILE my_profile CASCADE,一旦PROFILE被删除,用户被自动加载DEFAULT PROFILE