Oracle数据库用户的profile详解和修改
一.前言
在Oracle数据库中,profile是用来限制数据库用户在系统资源和密码参数上的命名集合。每个Oracle用户都会被分配一个Profile,Profile中定义了用户会话可以使用的资源限制。
通过Profile,我们可以控制用户对数据库资源的访问和使用,以确保数据库的稳定性和安全性。一旦用户超出了Profile中定义的资源限制,数据库会对用户的操作进行限制或拒绝。
二.profile详解
首先查看某个用户的profile
select username,profile from dba_users where username='SCOTT';
这里可以看到SCOTT用户的profile为默认 DEFAULT
查看default这个profile的资源计划
select * from dba_profiles where profile = 'DEFAULT';
dba_profiles视图一共有四个字段
PROFILE -Profile的名称,用于唯一标识一个Profile。
RESOURCE_NAME -资源名称,表示Profile中限制的资源类型。
RESOURCE_TYPE -资源类型,表示资源的类型,如 KERNEL内核参数、PASSWORD密码参数。
LIMIT -资源限制的具体数值,表示对应资源的限制值。UNLIMITED表示无限制,具体数字的话表示天。
这里对RESOURCE_NAME的每个参数进行解释
COMPOSITE_LIMIT -组合限制值,表示多个资源限制的组合限制值
SESSIONS_PER_USER -每个用户的最大并发会话数限制
CPU_PER_SESSION -每个会话的CPU使用量限制
CPU_PER_CALL -限制了每个数据库调用可以使用的CPU时间量
LOGICAL_READS_PER_SESSION -用于限制每个会话在执行期间可以进行的逻辑读取(logical reads)的数量
LOGICAL_READS_PER_CALL -用于限制每次调用(CALL)期间允许进行的逻辑读取(logical reads)的数量
IDLE_TIME -会话空闲时间限制
CONNECT_TIME -会话连接时间限制
PRIVATE_SGA -每个SESSION能够使用的SGA的大小
FAILED_LOGIN_ATTEMPTS -允许的最大登录失败尝试次数。用户在登录尝试失败n次后被锁定
PASSWORD_LIFE_TIME -密码有效期限制。
PASSWORD_REUSE_TIME -指定了口令不能重用之前多少天之内的使用的密码
PASSWORD_REUSE_MAX -在达到PASSWORD_REUSE_TIME指定时间后,要再次使用同一口令前必须改变的次数。
PASSWORD_VERIFY_FUNCTION -密码复杂度验证函数
PASSWORD_LOCK_TIME -登录尝试失败达到指定次数,用户锁定时长,以“Day”为单位。
PASSWORD_GRACE_TIME -表示用户口令使用时间超过其生命周期后,可以延续使用的天数,并且可延续时间内登录会有相应口令即将过期的提示。
三.profile的修改
下面举几个修改用户资源限制的例子
-设置不能重用180天内用过的密码
alter profile default limit password_reuse_time 180;
-设置密码有效期为90天
alter profile default limit password_life_time 90;
-设置密码有效期为无限制,永久有效
alter profile default limit password_life_time unlimited;
-设置密码输错次数 超过6次就锁住
alter profile default limit failed_login_attempts 6;
四.profile的创建
创建profile并指定用户
create profile test_profile limit
PASSWORD_REUSE_TIME 10 --密码重用次数。
FAILED_LOGIN_ATTEMPTS 5 --输错密码5次账号锁定
PASSWORD_LIFE_TIME 180 --密码180天过期。
PASSWORD_REUSE_MAX 1 --密码只能重用一次
PASSWORD_LOCK_TIME 1/48 --锁定时间30分钟
PASSWORD_VERIFY_FUNCTION verify_function_11G; --指定密码复杂度函数:最少8位,包含大写,小写,数字
如果报错提示 ORA-07443: function VERIFY_FUNCTION_11G not found
说明需要创建密码复杂度函数,创建的脚本数据自带
$ORACLE_HOME/rdbms/admin/utlpwdmg.sql
首先将脚本复制一份 以作备份
cp $ORACLE_HOME/rdbms/admin/utlpwdmg.sql $ORACLE_HOME/rdbms/admin/utlpwdmg_bak.sql
这个脚本中修改了默认的profile中的资源限制参数,如果你的默认的profile修改过用户密码的资源限制,不希望被修改,那么可以修改脚本中的内容
vim $ORACLE_HOME/rdbms/admin/utlpwdmg.sql
找到这个部分
删除红框中的几行
随后进入到sqlplus执行脚本
@$ORACLE_HOME/rdbms/admin/utlpwdmg.sql
再次创建profile 创建成功
create profile test_profile limit
PASSWORD_REUSE_TIME 10
FAILED_LOGIN_ATTEMPTS 5
PASSWORD_LIFE_TIME 180
PASSWORD_REUSE_MAX 1
PASSWORD_LOCK_TIME 1/48
PASSWORD_VERIFY_FUNCTION verify_function_11G;
修改用户的profile
alter user scott profile test_profile;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了