DBLOG
» WTF
Toggle navigation
DBLOG
主页
1、用户
2、各种方案
3、备份恢复
4、表空间相关
5、OGG
6、文件管理
7、常见故障分析
8、DG
9、集群相关
About Me
归档
标签
用户配置profile
无
2025-08-29 00:07:51
2
0
0
admin
[TOC] ### 1. 创建Profile ```sql -- 创建一个新的`PROFILE`并设置资源限制和密码策略: CREATE PROFILE my_profile LIMIT SESSIONS_PER_USER 5 CPU_PER_SESSION 10000 CPU_PER_CALL 1000 CONNECT_TIME 60 IDLE_TIME 30 FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LIFE_TIME 90 PASSWORD_REUSE_TIME 365 PASSWORD_REUSE_MAX 10 PASSWORD_VERIFY_FUNCTION NULL; ``` ### 2. 分配Profile给用户 将创建的`PROFILE`分配给特定用户: ```sql ALTER USER username PROFILE my_profile; ``` ### 3. 查看已分配的Profile 查询用户分配的`PROFILE`: ```sql SELECT username, profile FROM dba_users WHERE username = 'username'; ``` ### 4. 修改Profile 修改已存在的`PROFILE`的限制: ```sql ALTER PROFILE my_profile LIMIT PASSWORD_LIFE_TIME 180 PASSWORD_REUSE_TIME 730; ``` ### 5. 删除Profile 删除一个`PROFILE`(注意:该操作会将使用该`PROFILE`的用户恢复为默认`PROFILE`): ```sql DROP PROFILE my_profile CASCADE; ``` ### 常见的Profile参数 ``` - **SESSIONS_PER_USER**:每个用户允许的会话数。 - **CPU_PER_SESSION**:每个用户会话允许的CPU时间,以百分之一秒为单位。 - **CPU_PER_CALL**:每个用户调用允许的CPU时间,以百分之一秒为单位。 - **CONNECT_TIME**:用户会话的连接时间,以分钟为单位。 - **IDLE_TIME**:用户会话的空闲时间,以分钟为单位。 - **FAILED_LOGIN_ATTEMPTS**:允许的连续失败登录尝试次数。 - **PASSWORD_LIFE_TIME**:密码的有效期,以天为单位。 - **PASSWORD_REUSE_TIME**:密码重新使用的时间间隔,以天为单位。 - **PASSWORD_REUSE_MAX**:允许重新使用旧密码的次数。 - **PASSWORD_VERIFY_FUNCTION**:用于验证密码强度的PL/SQL函数。 ``` ### 示例场景 创建一个`PROFILE`,用于开发人员账号,限制每个用户最多可以有3个会话,同时每个会话的空闲时间不能超过10分钟,密码有效期为180天,并且密码必须至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符: #### 创建密码验证函数(可选) 首先,创建一个包含密码验证逻辑的PL/SQL函数: ```sql CREATE OR REPLACE FUNCTION password_verify_function (username VARCHAR2, password VARCHAR2, old_password VARCHAR2) RETURN BOOLEAN IS n BOOLEAN := FALSE; BEGIN IF LENGTH(password) < 8 THEN raise_application_error(-20001, 'Password length must be at least 8 characters.'); ELSIF NOT REGEXP_LIKE(password, '[A-Z]') THEN raise_application_error(-20002, 'Password must contain at least one uppercase letter.'); ELSIF NOT REGEXP_LIKE(password, '[a-z]') THEN raise_application_error(-20003, 'Password must contain at least one lowercase letter.'); ELSIF NOT REGEXP_LIKE(password, '[0-9]') THEN raise_application_error(-20004, 'Password must contain at least one digit.'); ELSIF NOT REGEXP_LIKE(password, '[@$!%*?&]') THEN raise_application_error(-20005, 'Password must contain at least one special character.'); ELSE n := TRUE; END IF; RETURN n; END; / ``` #### 创建Profile 创建一个新的`PROFILE`并应用该密码验证函数: ```sql CREATE PROFILE dev_profile LIMIT SESSIONS_PER_USER 3 IDLE_TIME 10 PASSWORD_LIFE_TIME 180 PASSWORD_VERIFY_FUNCTION password_verify_function; ``` 将该`PROFILE`分配给账号: ```sql ALTER USER dev_user PROFILE dev_profile; ``` 通过使用`PROFILE`,你可以有效地管理数据库用户的资源使用和安全性策略,从而确保数据库的稳定性和安全性。 ```
上一篇:
用户权限
下一篇:
表空间对应数据文件、扩容
0
赞
2 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网