概要文件管理
--1、账号锁定 /* FAILED_LOGIN_ATTEMPTS-- 连续登录的最大失败次数。 PASSWORD_LOCK_TIME --尝试登录失败次数后账号被锁定帐户的天数,如果没有这个选项,将自动使用unlimited,--需手动解锁 */ CREATE USER wl IDENTIFIED BY wl DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 10M ON users; create profile lock_account limit failed_login_attempts 3 password_lock_time 10; alter user wl profile lock_account; conn wl 输入 手动解锁 alter user wl account unlock; --2、口令有效期和终止期 --PASSWORD_LIFE_TIME 口令的有效期(以天为单位),此时间之后,口令会失效。 --PASSWORD_GRACE_TIME 指定口令失效后首次成功登录时用于更改口令的宽限期(以天为单位)。 create profile password_life_time limit password_life_time 10 password_grace_time 2; alter user wl profile password_life_time; --3、口令历史 --PASSWORD_REUSE_TIME:指定口令可重用时间(天) --PASSWORD_REUSE_MAX:指定在重用口令之前口令需要改变的次数 create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time 10 password_reuse_max unlimited; SYS@orcl> alter profile pro_2 limit password_reuse_time 1/1440 password_reuse_max 2; alter user wl profile password_history; --4、口令复杂性校验(使用系统口令校验函数verify_function) --@$ORACLE_HOME/rdbms/admin/utlpwdmg.sql --停止密码检验函数: SQL>alter profile DEFAULT limit password_verify_function null; alter user wl identified by wl; 删除profile(因为profile已分配给用户,须带cascade选项删除) drop profile profile_name cascade; 修改profile alter profile --使用概要文件管理资源,则必须要激活资源限制功能 ALTER SYSTEM SET RESOURCE_LIMIT=TRUE; --1、数据库最多允许两个开发人员以wl 用户登录进行应用开发,每个会话连接时间不能超过30min,会话空闲时间不能超过10min SQL>CREATE PROFILE devp_session LIMIT CPU_PER_SESSION 5000 SESSIONS_PER_USER 2 CONNECT_TIME 30 IDLE_TIME 10; SQL>ALTER USER wl PROFILE devp_session; --2、限制用户wl 的调用资源 SQL>CONNECT / AS SYSDBA SQL>CREATE PROFILE devp_call LIMIT CPU_PER_CALL 200 LOGICAL_READS_PER_CALL 3; SQL>ALTER USER devp PROFILE devp_call; SQL> grant select on scott.emp to wl; SQL> conn wl/wl SQL> select * from scott.emp; select * from scott.emp * ERROR at line 1: ORA-02395: exceeded call limit on IO usage
1 :概要文件的作用
概要文件是口令限制和资源限制的命名集合,是Oracle 安全策略的重要组成部分,利 用概要文件可以对数据库用户进行口令管理和资源限制。例如使用概要文可以指定口令有效 期、口令校验函数、用户连接时间以及最大空闲时间等。概要文件具有以下一些作用:
•限制用户执行消耗资源过度的SQL 操作。
• 自动断开空闲会话。
• 在大而复杂的多用户数据库系统中合理分配资源。
• 控制用户口令的使用。
在建立数据库时,Oracle 会自动建立名称为DEFAULT 的默认概要文件,初始的 DEFAULT 概要文件的所有口令及资源限制选项值均为UNLIMITED,即未进行任何口令及
资源限制。当建立用户时,如果不指定概要文件,则Oracle 会将DEFAULT 概要文件分配给 该用户。根据用户所承担任务的不同,DBA 应该建立不同的概要文件,并将概要文件分配 给相应用户。一个用户只能分配一个概要文件,一个概要文件可以同时包含口令限制和资源 限制。
2 :概要文件内容
概要文件内容包括口令和资源的限制,下面分别介绍这两部分的有关参数。
1: 口令策略参数
口令策略参数可以实现帐户锁定、口令的过期以及口令的复杂度等策略,在概要文件中 的口令参数可以有以下几个:
• FAILED_LOGIN_ATTEMPTS:该参数指定允许的输入错误口令的次数,超过该次 数后用户帐户被自动锁定。
• PASSWORD_LOCK_TIME:用于指定指定账户被锁定的天数(单位:天)。
• PASSWORD_LIFE_TIME:指定口令的有效期(单位:天)。如果在达到有效期前用 户还没有更换口令,它的口令将失效,这时必须由DBA 为它重新设置新的口令。
• PASSWORD_GRACE_TIME:用于指定口令失效的宽限期(单位:天)。• PASSWORD_REUSE_TIME:指定能够重复使用一个口令前必须经过的时间(单位: 天)。
• PASSWORD_REUSE_MAX:用于指定在重复使用口令之前必须对口令进行修改的 次数。PASSWORD_REUSE_TIME 和PASSWORD_REUSE_MAX 两个参数只能设
置一个,另一个必须为UNLIMITED。
• PASSWORD_VERIFY_FUNCTION:指定验证口令复杂度的函数。Oracle 提供了一 个默认的口令校验函数,这可以通过运行脚本utlpwdmg.sql 来建立该函数,脚本保
存在ORACLE_HOME dbmsadmin 目录中。DBA 也可以通过修改脚本来实现自己 的口令校验函数。
2: 资源限制参数
利用概要文件,可以对以下系统资源进行限制。
• CPU 时间
• 逻辑读
• 用户的并发会话数
• 空闲时间
• 连接时间
• 私有SGA 区对这些资源的限制是通过在概要文件中设置参数来实现的,参数的值可以是一个整数, 也可以是UNLIMITED(即不受限制),还可以是DEFAULT(使用DEFAULT 概要文件中的 参数设置)。
下面分别介绍有关参数:
• CPU_PER_SESSION:限制每个会话所能使用的CPU 时间。参数值是一个整数,单位是百分之一秒。
• SESSIONS_PER_USER:限制每个用户所允许建立的最大并发会话数。
• CONNECT_TIME:限制每个会话能连接到数据库的最长时间,超过这个时间会话 将自动断开。参数值是一个整数,单位是分钟。
• IDLE_TIME:限制每个会话所允许的最长连续空闲时间,超过这个时间会话将自 动断开。参数值是一个整数,单位是分钟。
• LOGICAL_READS_PER _SESSION:限制每个会话所能读取的数据块数目。
• PRIVATE_SGA:每个会话分配的私有SGA 区大小(以字节为单位)。该参数只对 共享服务器模式有效。• CPU_PER_CALL:用于指定每条SQL 语句可占用的最大CPU 时间,单位是百分 之一秒。
• LOGICAL_READS_PER_CALL:用于指定每条SQL 语句最多所能读取的数据块数 目。
3 :使用概要文件管理口令
Oracle 数据库中不同用户账户具有不同的口令,如何防止其他人窃取账户密码是DBA 要重点关切的问题。为了加强用户账户的安全性,Oracle 提供了概要文件来管理口令,概要 文件管理口令有锁定账户、终止口令、口令历史以及口令校验等四种安全保护方式。大家需 要注意,前面介绍的概要文件中共包含了7 个口令管理选项,如果仅指定某个或某几个选项, 那么其他选项将自动使用DEFAULT 概要文件的相应选项值。 使用概要文件管理口令主要步骤是先创建概要文件,然后设置相关口令参数,最后把概
要文件分配给用户。建立概要文件是使用CREATE PROFILE 命令来完成的,一般情况下建 立概要文件是由DBA 来完成的,如果要以其他用户身份建立概要文件,则要求该用户必须 具有CREATE PROFILE 系统权限。1 :锁定帐户
如果用户在指定的次数内尝试登录系统失败,系统会在设置的持续时间内锁定帐户。
• FAILED_LOGIN_ATTEMPTS 参数指定在锁定帐户前尝试登录失败的次数。
• PASSWORD_LOCK_TIME 参数指定在经历指定的尝试登录失败次数后锁定 帐户的天数。
如果建立PROFILE 时没有提供PASSWORD_LOCK_TIME 选项,将自动使用默认 值(UNLIMITED),在这种情况下,需要DBA 手工解锁通过使用概要文件,可以限制登录失败
次数,如果连续登录的失败次数超出一定范围,那么Oracle 会自动锁定账户。--【实例16-1】为了加强devp 用户的口令安全,要限制其登录失败次数为3。 --1)以管理员身份登录 SQL>CONNECT / AS SYSDBA 已连接。 --2)创建概要文件,设定相关参数 SQL>CREATE PROFILE devp_lock LIMIT FAILED_LOGIN_ATTEMPTS 3; 配置文件已创建 --3) 分配概要文件给用户devp,这既可以在建立用户时使用PROFILE 子句,也可以在建立用户之后使用ALTER USER 语句修改。 SQL>ALTER USER devp PROFILE devp_lock; 用户已更改。 --当将概要文件分配给devp 用户之后,如果以devp 连接到数据库时,连续登录失败次数达到三次,那么系统会自动锁定该用户账户。此时,即使为用户devp 提供了正确的口令,也将无法连接到数据库,并显示错误信息。例如: SQL>connect devp 请输入口令: ERROR: ORA-28000: the account is locked
2:终止口令
使用户口令具有生存期,口令在此生存期之后会失效,而且可能已更改。
• PASSWORD_LIFE_TIME 参数指定口令的生存期(以天为单位),此时间之后, 口令会失效。
• PASSWORD_GRACE_TIME 参数指定口令失效后首次成功登录时用于更改 口令的宽限期(以天为单位)。
注:通过使口令失效和锁定SYS、SYSMAN 和DBSNMP 帐户,可避免出现Enterprise Manager 不正常运行的情况。应用程序必须捕获“口令到期”警告消息并处理口令更
改;否则,宽限期一到期,会在原因不明的情况下锁定用户。--【实例16-2】强制用户devp 每隔10 天修改其自身口令,并设置两天宽限期。 --1)以管理员身份登录 SQL>CONNECT / AS SYSDBA 已连接。 --2)创建概要文件,设定相关参数 SQL>CREATE PROFILE devp_life LIMIT PASSWORD_LIFE_TIME 10 PASSWORD_GRACE_TIME 2; 配置文件已创建 --3) 分配概要文件给用户devp SQL>ALTER USER devp PROFILE devp_life; 用户已更改。 --当将概要文件分配给用户devp 之后,第10 天登录会显示警告信息: SQL>connect devp/development ERROR: ORA_28002:the password will expire within 2 days 已连接。 --如果第10 天未改变口令,那么第11 天登录时仍然会显示类似警告信息。但用户如果第11 天仍然未改变口令,那么第12 天登录时系统会强制你改变口令,并显示如下信息: SQL>connect devp/development ERROR: ORA-28001: the password has expired 更改devp 的口令 新口令: 重新键入新口令: 口令已更改 已连接。
3: 口令历史
通过核对新口令可确保在指定的时间内或者在指定的口令更改次数内不重复使用口令。
通过使用下列其中一项来进行核对:
• PASSWORD_REUSE_TIME:用于指定口令可重用时间
• PASSWORD_REUSE_MAX:用于指定在重用口令之前口令需要改变的次数
注意: 这两个参数是互相排斥的, 因此, 如果其中一个参数的设置值不是 UNLIMITED(如果DEFAULT 概要文件的设置值为UNLIMITED,则为DEFAULT),
则另一个参数必须设置为UNLIMITED。 假定devp 原有口令为development,终止口令时新口令仍然可以设置为development, 这种做法显然失去了终止口令的含义。为了强制用户使用不同口令,可以使用口令历史选项。
--【实例16-3】为了防止用户devp 重用旧口令,强制该用户在口令终止10 天之内不能重用以前口令。 --1)以管理员身份登录 SQL>CONNECT / AS SYSDBA --2)创建概要文件,设定相关参数 SQL>CREATE PROFILE devp_his LIMIT PASSWORD_LIFE_TIME 10 PASSWORD_GRACE_TIME 2 PASSWORD_REUSE_TIME 10 PASSWORD_REUSE_MAX UNLIMITED; 配置文件已创建 --3) 分配概要文件给用户devp SQL>ALTER USER devp PROFILE devp_his; 用户已更改。注意,前面已经提到过,当使用口令历史选项时, PASSWORD_REUSE_TIME 和 PASSWORD_REUSE_MAX 两个参数只能设置一个,另一个必须为UNLIMITED。
当将概要文件分配给用户devp 之后,如果前11 天没有修改用户口令,那么在第12 天 登录时,Oracle 会强制终止口令,并要求用户改变口令。但如果仍然使用过去的口令,则口 令修改不能成功,如下所示:SQL>CONNECT devp/development ERROR: ORA-28001: the password has expired 更改devp 的口令 新口令: 重新键入新口令: ERROR: ORA-28007: the password cannot be reused 口令未更改
4: 口令校验
口令校验是指使用PL/SQL 函数检查口令的有效性。在设置口令时,多数人都习惯于 按照自己易记的方式(如用户名、生日等)来指定口令。但如果其他人很了解用户的各种习惯, 那么口令将不再安全。通过使用口令校验函数,可以强制用户使用复杂的口令。尽管这种做 法会给用户带来一些小麻烦,但却可以大大加强口令的安全性。大家需要注意,如果要使用 口令校验函数,那么必须要以SYS 用户建立口令校验函数,并且口令校验函数必须满足如 下规范:function_name( userid_parameter IN VARCHAR2(30), password_parameter IN VARCHAR2(30), old_password_parameter IN VARCHAR2(30)) RETURN BOOLEAN其中,userid_parameter 对应于用户名, password_parameter 对应于用户的新口令, old_password_parameter 对应于用户的旧口令。如果函数返回值为TRUE,则表示新口令可 以使用;但如果返回值为FALSE,则表示新口令不满足函数规则。另外, Oracle 也提供了 默认的口令校验函数VERIFY_FUNCTION,该口令校验函数具有以下一些功能:
• 口令最少为4 个字符。
• 口令不能与用户名相同。
• 新口令与旧口令至少有三个字符不同。
• 口令至少包含一个阿拉伯字母、一个数字和一个特殊字符。
可以通过以SYS 用户身份登录后运行脚本utlpwdmg.sql 来建立默认的口令校验函数, 脚本保存在ORACLE_HOME dbmsadmin 目录中。DBA 也可以通过修改脚本来实现自己的 口令校验函数。--【实例16-4】为用户devp 指定口令校验函数以强制它使用复杂口令 --1)以管理员身份登录 SQL>CONNECT / AS SYSDBA 已连接。 --2)运行脚本utlpwdmg.sql 建立默认口令校验函数VERIFY_FUNCTION。(当然也可自 己创建口令校验函数) SQL>@%ORACLE_HOME%/rdbms/admin/utlpwdmg.sql 函数已创建。 --3)创建概要文件,设定参数 SQL>CREATE PROFILE devp_verify LIMIT PASSWORD_LIFE_TIME 10 PASSWORD_GRACE_TIME 2 PASSWORD_VERIFY_FUNCTION verify_function; 配置文件已创建 --4) 分配概要文件给用户devp SQL>ALTER USER devp PROFILE devp_verify; 用户已更改。 --这样,当修改devp 用户口令时,如果不满足函数规则,会出错。如把devp 的口令改成与用户名一样,则会显示如下错误信息: SQL>alter user devp identified by devp; alter user devp identified by devp * ERROR 位于第1 行: ORA-28003: 指定口令的口令验证失败 ORA-20001: Password same as or similar to user --另外,如果你不想使用口令校验函数,则可以将PASSWORD_VERIFY_FUNCTION 选项设置为NULL。
4:使用概要文件管理资源
概要文件不仅可用于管理用户口令,也可用于限制用户的资源占用。概要文件既可以限 制整个会话的资源占用,也可以限制调用级(SQL 语句)的资源占用。但大家需要注意,如果 要使用概要文件管理资源,则必须要激活资源限制功能,这可以通过设置初始化参数 RESOURCE_LIMIT 为TRUE 做到:
使用概要文件管理资源的步骤同管理口令的步骤一样,也是先创建概要文件,然后设置 相关资源参数,最后把概要文件分配给用户。
CREATE PROFILE "TEMPPROFILE" /*【一般信息】选项卡对应的配置参数*/ LIMIT CPU_PER_SESSION 1000 --//CPU 会话 CPU_PER_CALL 1000 --//CPU 调用 CONNECT_TIME 30 --//连接时间 IDLE_TIME DEFAULT --//空闲时间 SESSIONS_PER_USER 10 --//并行会话数 LOGICAL_READS_PER_SESSION 1000 --//读取数/会话 LOGICAL_READS_PER_CALL 1000 --//读取数/调用 PRIVATE_SGA 16K --//专用SGA COMPOSITE_LIMIT 1000000 --//组合限制 /*【口令】选项卡对应的配置参数*/ FAILED_LOGIN_ATTEMPTS 3 --//允许输入的错误口令的次数 PASSWord_LOCK_TIME 5 --//输入错误口令而被锁定的天数 PASSWORD_GRACE_TIME 60 --//口令过期时间天数 PASSWORD_LIFE_TIME 30 --// PASSWORD_REUSE_MAX DEFAULT PASSWORD_REUSE_TIME 30 PASSWORD_VERIFY_FUNCTION DEFAULTV --//验证用户口令复杂度的函数
1: 限制会话资源
当用户连接到数据库时,Oracle 将创建一个会话(session)。每个会话都将消耗Oracle 所在计算机的CPU 时间及内存。用户可以在会话级( session level)设置多种资源限制 (resource limit)。
如果用户超过了某一会话级资源限制,Oracle 将终止(回滚)当前执行的语句,并通知 用户此会话超出资源限制。此时,当前会话内已经执行的语句不受资源限制的影响,而用户 则只能执行COMMIT,ROLLBACK,或断开连接(disconnect)(如断开连接,当前事务将 被提交)。用户的其他所有操作都将导致报错。在事务被提交或回滚后,用户在当前会话内 也不能执行其他任何操作。--【实例16-5】数据库最多允许两个开发人员以devp 用户登录进行应用开发,每个会话连接时间不能超过30min,会话空闲时间不能超过10min。 --1)以管理员身份登录 SQL>CONNECT / AS SYSDBA 已连接。 --2)创建概要文件,设定参数 SQL>CREATE PROFILE devp_session LIMIT CPU_PER_SESSION 5000 SESSIONS_PER_USER 2 CONNECT_TIME 30 IDLE_TIME 10; 配置文件已创建 . --3) 分配概要文件给用户devp SQL>ALTER USER devp PROFILE devp_session; 用户已更改。 --因为在建立概要文件时指定SESSION_PER_USER 选项为2,即允许用户最多可以同时建立两个会话,所以如果用户devp 的并发会话个数达到两个,那么当建立第三个会话时则会显示如下错误信息: SQL>CONNECT devp/development ERROR: ORA-02391:exceeded simultaneous SESSIONS_PER_USER limit --因为IDLE_TIME 选项被设置为10,所以如果会话空闲时间超过10min,那么Oracle会自动断开会话。
管理员可以限制用户并发会话数(concurrent sessions for each user)。每个用户的并发会 话数不能超过预设值。
管理员可以限制一个会话的空闲时间(idle time)。如果会话内两次Oracle 调用间的间 隔时间达到了限制值,当前事务将被回滚,会话将被终止(aborted),会话所占用的资源将 被系统回收。下次会话将得到报错信息,提示用户已经终止了与实例的连接。此限制的设置 单位为分钟。
当会话由于超出空闲时间限制而被终止之后,进程监视器(process monitor,PMON) 后台进程将对被终止的会话进行清理。在PMON 完成此过程前,统计用户及会话资源使用 时仍将包含被终止的会话。管理员可以限制每个会话的连接持续时间。如果会话持续连接时间超出限制值,当前事 务将被回滚,会话将被移除(dropped),会话所占用的资源将被系统回收。此限制的设置单 位为分钟。
Oracle 不会持续不断地监控会话的空闲时间及连接时间,因为这样做将降低系统性能。 Oracle 的做法是每隔数分钟检查一次。因此,在Oracle 依据资源限制终止会话前,会 话有可能已经略微超出了限制时间(例如,超出5 分钟2: 限制调用资源
SQL 语句每次运行时,Oracle 都将执行一系列操作来处理此语句。在处理过程中,不 同的执行阶段需要向数据库发起不同的调用。为了防止某个调用过度地使用系统资源,
Oracle 允许管理员在调用级(call level)设定多种资源限制(resource limit)。
如果用户超过了调用级资源限制,Oracle 将停止执行语句,并进行回滚,之后向用户 报错。此时,当前会话内已经执行的语句不受资源限制的影响,用户会话也将保持连接状态。
当Oracle 执行SQL 语句或用户的其他各类调用(call)时,系统需要一定的CPU 时 间来处理此调用。普通的调用所需的CPU 时间较少。但是需要处理大量数据的语句,或失 控的查询(runaway query)可能占用大量的CPU 时间,这减少了其他处理任务可用的CPU 时间。
为了防止CPU 时间被不受控地占用,管理员可以限制会话内每个调用使用的CPU 时 间,以及会话中所有Oracle 调用的CPU 时间之和。设置及衡量调用或会话可使用的CPU时间的单位为百分之一秒。
--【实例16-6】限制用户devp 的调用级资源。 --1)以管理员身份登录 SQL>CONNECT / AS SYSDBA 已连接。 --2)创建概要文件,设定参数 SQL>CREATE PROFILE devp_call LIMIT CPU_PER_CALL 200 LOGICAL_READS_PER_CALL 3; 配置文件已创建 --3) 分配概要文件给用户devp SQL>ALTER USER devp PROFILE devp_call; 用户已更改。 --因为在建立概要文件devp_call 时指定了LOGICAL_READS_PER_CALL 选项为3,所以如果执行单条SQL 语句访问的数据块总数超过3,则会显示如下错误信息: SQL> CONNECT devp/development 已连接。 SQL>select * from scott.emp; select * from scott.emp * ERROR 位于第1 行: ORA-02395: 超出IO 使用的调用限制
5 :其他资源
1: 逻辑读取
输入/输出(Input/output,I/O)是数据库系统中开销最大的操作。I/O 操作密集的SQL 语 句可能会占用大量内存及硬盘,并与其他需要同样资源的数据库操作产生竞争。
为了防止I/O 被独占,Oracle 可以限制调用及会话的逻辑数据块读取(logical data block read)。逻辑数据块读取包含从内存及磁盘读取数据。设置及衡量调用或会话可使用的逻辑 读取的单位为数据块数量。
LOGICAL_READS_PER_SESSON:用于指定会话的最大逻辑读取次数.
LOGICAL_READS_PER_CALL:用于限制每次调用的最大逻辑I/O 次数.
2: CPU
可以每个会话或每个调用为基础限制CPU 资源。 “CPU/会话”限制为1,000 表示: 当使用此概要文件的任一会话占用10 秒以上的CPU 时间(CPU 时间限制以百分之一
秒为单位)时,该会话就会收到错误并被注销: ORA-02392: exceeded session limit on CPU usage, you are being logged off
每个调用限制的作用是相同的,但是它不是限制用户的整个会话,而是防止任一命令占 用过多的CPU。如果“CPU/调用”受到限制,而且用户超出了限制,命令就会中止,用户还 会收到错误消息,例如: ORA-02393: exceeded call limit on CPU usageCPU_PER_SESSION:用于指定每个会话可以占用的最大CPU 时间.
CPU_PER_CALL:限制每次调用(解析,执行或提取数据)可占用的最大CPU 时间(单位:百 分之一秒)3) 网络/内存:每个数据库会话都会占用系统内存资源和网络资源(如会话来自服务 器的非本地用户)。可以指定以下参数:
- 连接时间:指示用户在自动注销前可以保持连接的分钟数
- 闲置时间:指示用户会话在自动注销前可以保持闲置的分钟数。只会计算服务 器进程的闲置时间。闲置时间中不考虑应用程序活动。IDLE_TIME 限制不受 长时间运行查询和其它操作的影响。
- 并行会话:指示使用数据库用户帐户可以创建多少并行会话
- 专用SGA:限制系统全局区域(SGA) 中执行排序、合并位图等操作占用的空间。此限制仅在会话使用共享服务器时才有效。(在“配置Oracle Network 环境” 一课中会讨论共享服务器)。
PRIVATE_SGA:用于指定会话在共享池中可以分配的最大总计私有空间.需要注意,该选 项只使用与共享服务器模式.
COMPOSITE_LIMIT:用于指定会话的总计资源消耗(单位:服务单元).oracle 会根据
CPU_PER_SESSION,CONNECT_TIME,LOGICAL_READS_PER_SESSION 以及 PRIVATE_SGA 的求权结果取得总计服务单元.
SESSIONS_PER_USER:用于指定每个用户的最大并发会话个数.
CONNECT_TIME:用于指定会话的最大连接时间.
IDLE_TIME:用于指定会话的最大空闲时间.
通过概要文件还可提供组合限制。组合限制以“CPU/会话”、“读取/会话”、“连接时 间”和“专用SGA”的加权组合为基础。
下面以限制帐户DEVEP 会话占用CPU 时间不超过50 秒,逻辑读取次数不超过100 次为 例,说明使用PROFILE 限制会话资源的方法.为了控制会话资源,首先应执行CREATE
PROFILE 命令建立PROFILE,然后使用ALTER USER 命令将PROFILE 分配给用户DEVEP.
CREATE PROFILE session_limit LIMIT
CPU_PER_SESSION 5000 LOGICAL_READS_PER_SESSION 100;ALTER USER devep PROFILE session_limit;
6:其它操作
1: 修改概要文件
当口令和资源限制无法满足用户的实际需求时,你就需要修改概要文件中的口令及资源 限制参数。修改概要文件是使用ALTER PROFILE 命令由DBA 来完成的;如果要以其它用 户身份修改概要文件,则要求该用户必须具有ALTER PROFILE 系统权限。需要注意,修改 概要文件对已存在会话没有影响,而只对新会话起作用。
--【实例16-7】修改用户devp 的口令和资源限制。 --1)以管理员身份登录 SQL>CONNECT / AS SYSDBA 已连接。 --2)修改概要文件 SQL>ALTER PROFILE devp_call LIMIT SESSIONS_PER_USER 2 FAILED_LOGIN_ATTEMPTS 2 CPU_PER_CALL 200; 配置文件已更改修改用户devp 当前的概要文件后,当devp 重新登录后,其口令和资源限制就发生变化 了,如该用户的口令失败次数只能两次。
2 :删除概要文件
当某个概要文件不需要时,可以删除它。删除概要文件是使用DROP PROFILE 命令由 DBA 来完成的,如果要以其他用户身份删除概要文件,则要求该用户必须具有DROP
PROFILE 系统权限。--【实例16-8】删除概要文件devp_call --1)以管理员身份登录 SQL>CONNECT / AS SYSDBA 已连接。 --2)删除概要文件 SQL>DROP PROFILE devp_call CASCADE; 配置文件已丢弃需要注意,如果概要文件已经被分配给某个用户,那么当删除概要文件时必须带有CASCADE 选项。
如果用户的概要文件已经被删除,Oracle 将自动为用户重新指定DEFAULT 概要文 件。
7:显示概要文件信息
Oracle 提供了几个数据字典视图查询有关概要文件的信息。下面分别介绍。1: 显示用户的概要文件
当建立或修改用户时,通过PROFILE 子句可以为用户分配概要文件。如果没有显式地 分配概要文件,那么Oracle 会将DEFAULT 概要文件自动分配给用户。那么如何确定用户的 概要文件呢?通过查询数据字典视图DBA_USERS,可以取得用户的概要文件信息。--【实例16-9】查询用户devp 的概要文件 --1)以管理员身份登录 SQL>CONNECT / AS SYSDBA 已连接。 --2)查询 SQL>SELECT profile FROM DBA_USERS WHERE username=’DEVP’; PROFILE ------------------------ DEFAULT
2: 显示概要文件的内容
数据字典视图DBA_PROFILES 中包含了每个概要文件的内容,通过查询该数据字典视 图可以取得用户的口令限制及资源限制信息。--【实例16-10】查询概要文件devp_session 的口令和资源限制。 --1)以管理员身份登录 SQL>CONNECT / AS SYSDBA 已连接。 --2)查询 SQL>SELECT * FROM DBA_PROFILES WHERE profile=’DEVP_SESSION’; PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT ------------------------------------------------------------------------------------------------- DEVP_SESSION CONNECT_TIME KERNAL 30 DEVP_SESSION IDLE_TIME KERNAL 10 DEVP_SESSION SESSIONS_ PER_USER KERNAL 3 DEVP_SESSION CPU_PER_SESSION KERNAL 5000 DEVP_SESSION PASSWORD_LIFE_TIME PASSWORD DEFAULT