PROFILE 文件概述:PROFILE 文件是一个资源限制和密码参数的命名集合,用于限制某个用户的数据库和实例资源的使用情况,可以限制用户的并发会话数、每个会话可用的 CPU 处理时间和可用的逻辑 I/O 量。当创建数据库时,Oracle 会自动创建名称为 default 的 profile 。当创建的用户没有指定 profile 时,那么 Oracle 就会将 default 分配给新建的用户。
DBA_PROFILES 显示所有配置文件及其它们对应的限制。其中 DBA_PROFILES 的表结构如下:
字段名 | 数据类型 | 是否为空 | 描述 |
---|---|---|---|
PROFILE | VARCHAR2(128) | NOT NULL | 概要文件名 |
RESOURCE_NAME | VARCHAR2(32) | NOT NULL | 资源名称 |
RESOURCE_TYPE | VARCHAR2(8) | 表示资源配置文件是内核还是密码参数 | |
LIMIT | VARCHAR2(128) | 这个概要文件对这个资源的限制 | |
COMMON | VARCHAR2(3) | 表示给定的概要文件是否通用。可能的值:如果概要文件是普通配置文件(YES),则是如果概要文件是本地的(NO)(不常见) | |
INHERITED | VARCHAR2(3) | 表示该概要文件定义是否继承自另一个容器(YES/NO) | |
IMPLICIT | VARCHAR2(3) | 表示该概要文件是否由隐式应用程序创建(YES/NO) |
查询DEFAULT PROFILE 概述文件:
SELECT * FROM dba_profiles WHERE profile = 'DEFAULT';
新增自定义 profile
对于非sys用户,如果需要创建 profile,则需要有
语法:
CREATE PROFILE profile
LIMIT { resource_parameters
| password_parameters
}...
[ CONTAINER = { CURRENT | ALL } ] ;
resource_parameters 选项:
{ { SESSIONS_PER_USER
| CPU_PER_SESSION
| CPU_PER_CALL
| CONNECT_TIME
| IDLE_TIME
| LOGICAL_READS_PER_SESSION
| LOGICAL_READS_PER_CALL
| COMPOSITE_LIMIT
}
{ integer | UNLIMITED | DEFAULT }
| PRIVATE_SGA
{ size_clause | UNLIMITED | DEFAULT }
}
password_parameters 选项:
{ { FAILED_LOGIN_ATTEMPTS
| PASSWORD_LIFE_TIME
| PASSWORD_REUSE_TIME
| PASSWORD_REUSE_MAX
| PASSWORD_LOCK_TIME
| PASSWORD_GRACE_TIME
| INACTIVE_ACCOUNT_TIME
}
{ expr | UNLIMITED | DEFAULT }
| PASSWORD_VERIFY_FUNCTION
{ function | NULL | DEFAULT }
| ( PASSWORD_ROLLOVER_TIME { expr | DEFAULT } )
}
示例:
CREATE PROFILE app_profile LIMIT
FAILED_LOGIN_ATTEMPTS 5 --指定在帐户被锁定之前所允许尝试登陆的的最大次数
PASSWORD_LIFE_TIME 60 --指定同一密码所允许使用的天数
PASSWORD_REUSE_TIME 60 --密码不能重用前的天数
PASSWORD_REUSE_MAX 5
PASSWORD_VERIFY_FUNCTION ora12c_verify_function --允许将复杂的PL/SQL密码验证脚本做为参数传递到create profile语句
PASSWORD_LOCK_TIME 1/24 --登陆尝试失败次数到达后帐户的锁定时间,以天为单位
PASSWORD_GRACE_TIME 10 --宽限天数,数据库发出警告到登陆失效前的天数
INACTIVE_ACCOUNT_TIME 30;
修改自定义 profile
ALTER PROFILE 参数名称 新值;
删除自定义 profile
DROP PROFILE 名称; --删除新创建的 PROFILE
DROP PROFILE 名称 CASCADE; --删除已经创建的 PROFILE 并取消已关联的用户
查询用户对应的配置
SELECT username, profile FROM dba_users;
根据以上语句查出用户的 profile,再查出对应的详细参数:
SELECT * FROM dba_profiles WHERE profile = 'xxx';
分配 profile 给用户
- 创建用户的同时分配自定义的 profile 给用户
CREATE USER 用户名...... profile名称
- 用户已创建,需要更改的情况下:
ALTER USER 用户名 PROFILE profile名称;