使用profile 可以数据库用户的数据库资源进行有效限制,可以使用create profile 创建profile,用alter user xxx profile xx 分配用户一个profile,默认的用户使用的都是DEFAULT,如果新建 的profile 有未指定的值,该值还是有default所对应的值
语法如下:
SQL> show parameter resource;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean FALSE
resource_manager_plan string
SQL>
语法如下:
CREATE PROFILE profile复制
LIMIT { resource_parameters复制
| password_parameters复制
}复制
[ resource_parameters复制
| password_parameters复制
]... ;复制
复制
<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复制
{ integer [ K | M ] | UNLIMITED | DEFAULT }复制
}复制
< password_parameters >
{ { FAILED_LOGIN_ATTEMPTS复制
| PASSWORD_LIFE_TIME复制
| PASSWORD_REUSE_TIME复制
| PASSWORD_REUSE_MAX复制
| PASSWORD_LOCK_TIME复制
| PASSWORD_GRACE_TIME复制
}复制
{ expr | UNLIMITED | DEFAULT }复制
| PASSWORD_VERIFY_FUNCTION复制
{ function | NULL | DEFAULT }复制
}
解释
profile:配置文件的名称。Oracle数据库以以下方式强迫资源限制:
1.如果用户超过了connect_time或idle_time的会话资源限制,数据库就回滚当前事务,并结束会话。用户再次执行命令,数据库则返回一个错误,
2.如果用户试图执行超过其他的会话资源限制的操作,数据库放弃操作,回滚当前事务并立即返回错误。用户之后可以提交或回滚当前事务,必须结束会话。
提示:可以将一条分成多个段,如1小时(1/24天)来限制时间,可以为用户指定资源限制,但是数据库只有在参数生效后才会执行限制。
Unlimited:分配该profile的用户对资源使用无限制,当使用密码参数时,unlimited意味着没有对参数加限制。
Default:指定为default意味着忽略对profile中的一些资源限制,Default profile初始定义对资源不限制,可以通过alter profile命令来改变。
Resource_parameter部分
Session_per_user:指定限制用户的并发会话的数目。
Cpu_per_session:指定会话的CPU时间限制,单位为百分之一秒。
Cpu_per_call:指定一次调用(解析、执行和提取)的CPU时间限制,单位为百分之一秒。
Connect_time:指定会话的总的连接时间,以分钟为单位。
Idle_time:指定会话允许连续不活动的总的时间,以分钟为单位,超过该时间,会话将断开。但是长时间运行查询和其他操作的不受此限制。
Logical_reads_per_session:指定一个会话允许读的数据块的数目,包括从内存和磁盘读的所有数据块。
Logical_read_per_call:指定一次执行SQL(解析、执行和提取)调用所允许读的数据块的最大数目。
Private_sga:指定一个会话可以在共享池(SGA)中所允许分配的最大空间,以字节为单位。(该限制只在使用共享服务器结构时才有效,会话在SGA中的私有空间包括私有的SQL和PL/SQL,但不包括共享的SQL和PL/SQL)。
Composite_limit:指定一个会话的总的资源消耗,以service units单位表示。Oracle数据库以有利的方式计算cpu_per_session,connect_time,logical_reads_per_session和private-sga总的service units
Password_parameter部分:
Failed_login_attempts:指定在帐户被锁定之前所允许尝试登陆的的最大次数。
Password_life_time:指定同一密码所允许使用的天数。如果同时指定了password_grace_time参数,如果在grace period内没有改变密码,则密码会失效,连接数据库被拒绝。如果没有设置password_grace_time参数,默认值unlimited将引发一个数据库警告,但是允许用户继续连接。
Password_reuse_time和password_reuse_max:这两个参数必须互相关联设置,password_reuse_time指定了密码不能重用前的天数,而password_reuse_max则指定了当前密码被重用之前密码改变的次数。两个参数都必须被设置为整数。
1.如果为这两个参数指定了整数,则用户不能重用密码直到密码被改变了password_reuse_max指定的次数以后在password_reuse_time指定的时间内。
如:password_reuse_time=30,password_reuse_max=10,用户可以在30天以后重用该密码,要求密码必须被改变超过10次。
2.如果指定了其中的一个为整数,而另一个为unlimited,则用户永远不能重用一个密码。
3.如果指定了其中的一个为default,Oracle数据库使用定义在profile中的默认值,默认情况下,所有的参数在profile中都被设置为unlimited,如果没有改变profile默认值,数据库对该值总是默认为unlimited。
4.如果两个参数都设置为unlimited,则数据库忽略他们。
Password_lock_time:指定登陆尝试失败次数到达后帐户的缩定时间,以天为单位。
Password_grace_time:指定宽限天数,数据库发出警告到登陆失效前的天数。如果数据库密码在这中间没有被修改,则过期会失效。
Password_verify_function:该字段允许将复杂的PL/SQL密码验证脚本做为参数传递到create profile语句。Oracle数据库提供了一个默认的脚本,但是自己可以创建自己的验证规则或使用第三方软件验证。 对Function名称,指定的是密码验证规则的名称,指定为Null则意味着不使用密码验证功能。如果为密码参数指定表达式,则该表达式可以是任意格式,除了数据库标量子查询。
例如,
经常会使用为了防止,别人无限次的尝试对AA用户的密码,就可以建一个profile 限制超过三次锁定用户1个小时。
sql>create profile pwd_3
limit
FAILED_LOGIN_ATTEMPTS 3
Password_lock_time 1/24;
sql>alter user aa profile pwd_3;
还用一个就是限制并发用户的个数,比如只想让 bb用户建立一个连接
sql>create profile sess_one
limit
sessions_per_user 1;
sql>alter user bb profile sess_one;
但是会有人发现为什么以上所做的限制并未启作用呢,呵呵,那就是还有个参数你没有启用,千万不要忘记
SQL> show parameter resource;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean FALSE
resource_manager_plan string
SQL>
sql>alter system set resource_limit true ;
启用限制,好,现在可以再试试了!
查看用户对应 profile
SQL> select username ,profile from dba_users;
USERNAME PROFILE
------------------------------ ------------------------------
OLAT_NEW DEFAULT
JMJK_HUN_CHENZHOU DEFAULT
ZYY_GUIZHOU DEFAULT
JMJK_HEN_YEXIAN DEFAULT
HFEXAM DEFAULT
XNH DEFAULT
TOPBOX DEFAULT
CMS DEFAULT
XMSB_XJBT DEFAULT
JMJK_YEXIAN DEFAULT
IPTV4 DEFAULT
USERNAME PROFILE
------------------------------ ------------------------------
OLAT_NEW DEFAULT
JMJK_HUN_CHENZHOU DEFAULT
ZYY_GUIZHOU DEFAULT
JMJK_HEN_YEXIAN DEFAULT
HFEXAM DEFAULT
XNH DEFAULT
TOPBOX DEFAULT
CMS DEFAULT
XMSB_XJBT DEFAULT
JMJK_YEXIAN DEFAULT
IPTV4 DEFAULT
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle DataGuard高可用性解决方案详解
孙莹
509次阅读
2025-03-26 23:27:33
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
489次阅读
2025-04-15 17:24:06
墨天轮个人数说知识点合集
JiekeXu
406次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
400次阅读
2025-04-08 09:12:48
Oracle SQL 执行计划分析与优化指南
Digital Observer
380次阅读
2025-04-01 11:08:44
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
370次阅读
2025-04-18 14:18:38
Oracle 19c RAC更换IP实战,运维必看!
szrsu
345次阅读
2025-04-08 23:57:08
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
316次阅读
2025-04-15 14:48:05
oracle定时任务常用攻略
virvle
316次阅读
2025-03-25 16:05:19
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
312次阅读
2025-03-24 09:42:53
热门文章
移除DataGuard Standby配置导致Primary启动失败
2023-08-17 21282浏览
使用dblink产生的”SELECT /*+ FULL(P) +*/ * FROM XXXXX P ” 解析
2023-06-20 20890浏览
Troubleshooting 'ORA-28041: Authentication protocol internal error' change password 12c R2 DB
2020-04-08 13630浏览
浅谈ORACLE免费数据库Oracle Database XE (Express Edition) 版
2018-10-31 7578浏览
High wait event ‘row cache mutex’ in 12cR2、19c
2020-08-14 5560浏览