1.注意RESOURCE_LIMIT 必须设置为TRUE,概要文件才能强制实行资源限制。

  1. SQL> show parameters resource_limit
  2. NAME TYPE VALUE
  3. ------------------------------------ ----------- ------------------------------
  4. resource_limit boolean TRUE

概要文件和用户

概要文件是用于限制数据库使用和实例资源的一组指定资源限制条件。通过概要文件还可
管理帐户状态并对用户的口令进行限制(长度、到期时间等)。每个用户都分配有一个概
要文件,而且该用户在指定时间只属于一个概要文件。如果在更改用户概要文件时用户已
经登录,则所做更改在用户下一次登录时才生效。
DEFAULT 概要文件用作其它所有概要文件的基础。可隐式指定概要
文件的限制(如“CPU/Session(CPU/会话)”),可取消限制(如“CPU/Call(CPU/
调用)”),也可以引用DEFAULT 概要文件中的任何设置(如“Connect Time(连接
时间)”)。
只有当RESOURCE_LIMIT 初始化参数设置为TRUE,概要文件才能对用户强制实行资源
限制。如果RESOURCE_LIMIT 使用默认值FALSE,则忽略概要文件的资源限制。概要
文件的口令设置始终会强制实行。
管理员使用概要文件可控制以下系统资源:
• CPU:可按会话或调用限制CPU 资源。将“CPU/Session(CPU/会话)”限制为
1,000 表示,如果使用此概要文件的任一会话占用10 秒以上的CPU 时间(CPU 时间
限制以百分之一秒为单位),该会话就会收到错误消息并被注销:
ORA-02392:exceeded session limit on CPU usage, you are being
logged off
对每个调用所做的限制也起相同作用,但是它不是限制用户的整个会话,而是防止任一命
令占用过多的CPU。如果“CPU/Call(CPU/调用)”受到限制,并且用户超出了该限制,
则命令会中止。用户将收到如下所示的错误消息:
ORA-02393: exceeded call limit on CPU usage
• 网络/内存:每个数据库会话都会占用系统内存资源和网络资源(如果会话不是来自
服务器的本地用户)。可以指定以下参数:
- 连接时间:指示用户在自动注销前可以保持连接的分钟数。
- 空闲时间:指示用户会话在自动注销前可以保持空闲的分钟数。只会计算服务器
进程的空闲时间。空闲时间不考虑应用程序活动。IDLE_TIME 限制不受长时间
运行的查询和其它操作的影响。
- 并行会话:指示使用数据库用户帐户可以创建多少并行会话。
- 专用SGA:限制在系统全局区域(SGA) 中执行排序、合并位图等操作所占用的
空间量。此限制仅在会话使用共享服务器时才有效(在“配置Oracle Network
环境”一课中介绍了共享服务器)。
• 磁盘I/O:限制用户在每个会话级或每个调用级可读取的数据量。“读取/会话”和
“读取/调用”可限制内存和磁盘的总读取次数。这样做可确保执行大量I/O 操作的
语句不会过度使用内存和磁盘。
通过概要文件还可提供组合限制。组合限制以“CPU/会话”、“读取/会话”、“连接
时间”和“专用SGA”的加权组合为基础。

实施口令安全功能

Oracle 口令管理是通过用户概要文件来实现的。概要文件可提供许多标准安全功能。
帐户锁定:如果用户在指定的次数内尝试登录系统失败,系统会在设置的持续时间内自动
锁定帐户。
• FAILED_LOGIN_ATTEMPTS:指定在锁定帐户前尝试登录的失败次数
• PASSWORD_LOCK_TIME:指定尝试登录失败达到了指定的次数后锁定帐户的天数
口令失效和到期:使用户口令具有生存期,口令在此生存期后会到期,必须对其进行更改。
• PASSWORD_LIFE_TIME:确定口令生存期(天),之后该口令就会到期
• PASSWORD_GRACE_TIME:指定首次成功登录后更改口令的宽限期(天),之后该
口令就会到期
注:使SYS、SYSMAN 和DBSNMP 帐户口令到期和锁定这些帐户,会导致Oracle
Enterprise Manager 无法正常运行。应用程序必须捕获“口令到期”警告消息并处理口令
更改;否则,宽限期一到期,就会锁定用户而不通知原因。

口令历史记录:

通过核对新口令可确保在指定的时间内或者在指定的口令更改次数内不
重复使用口令。通过使用下列其中一项来进行核对:
• PASSWORD_REUSE_TIME:指定用户不能在指定天数内重复使用口令
• PASSWORD_REUSE_MAX:指定在可重复使用当前口令之前口令更改需达到的次数
请回想一下,概要文件参数的值是在DEFAULT 概要文件中设置的或从该概要文件中
继承的。
如果两个口令历史记录参数都具有值UNLIMITED,则Oracle DB 将同时忽略两者。用户
可以随时重用任何口令,但这不是一种有效的安全做法。
如果两个参数均已设置,则允许重用口令,但必须同时满足这两个条件。用户更改口令的
次数必须达到指定次数,并且在最后一次使用旧口令之后已经过了指定的天数。
例如,假设用户ALFRED 的概要文件中的PASSWORD_REUSE_MAX 设置为10,
PASSWORD_REUSE_TIME 设置为30,则用户ALFRED 只有在已重置了10 次口令,并且
自最后一次使用该口令以来已经过了30 天之后,才能重用该口令。
如果一个参数设置为一个数,而另一个参数指定为UNLIMITED,则用户永远不能重用
口令。
口令复杂性验证:通过对口令进行复杂性检查可验证口令是否符合特定的规则。这种检查
一定要确保口令足够复杂,才能防止入侵者通过猜测口令尝试闯入系统。
PASSWORD_VERIFY_FUNCTION 参数指定一个PL/SQL 函数,以便在分配口令之前执行
口令复杂性检查。口令验证函数必须由SYS 用户拥有,而且必须返回布尔值(TRUE 或
FALSE)。位于以下目录中的utlpwdmg.sql 脚本提供了模型口令验证函数:
• Unix 和Linux 平台:$ORACLE_HOME/rdbms/admin
• Windows 平台:%ORACLE_HOME%\rdbms\admin

删除口令概要文件

在Enterprise Manager 中,无法删除用户使用的概要文件。但是,如果删除概要文件时使
用了CASCADE 选项(例如,在SQL*Plus)中,则具有该概要文件的所有用户将自动分配
DEFAULT 概要文件。