潇湘夜雨移动版

主页 > 数据库 >

ORACLE Profile 及权限(2)


    SQL> alter system set resource_limit=true; 
  2.使用create profile创建一个定义对数据库资源进行限制的profile。
  3.使用create user 或alter user命令把profile分配给用户。

三、查看系统的默认PROFILE

  1、通过dba_profiles视图查看一下系统中默认都有哪些PROFILE
  数据库创建以后,系统中只会存在一个名为DEFAULT的默认PROFILE,在用户创建之后,如果不做特殊指定,每个用户的PROFILE都会默认的使用个默认的PROFILE。
  sys@oral> select distinct profile from dba_profiles;

  2、全面查看这个 PROFILE 包含哪些限制定义
  sys@oral> col PROFILE for a12
  sys@oral> col RESOURCE_NAME for a25
  sys@oral> col LIMIT for a15
  sys@oral> select * from dba_profiles order by 1,2;

  3、结论:DEFAULT PROFILE 只对密码的错误尝试次数做了限制(最多可以错误输错10次密码)。如想改变限制条件,有两种方法:第一种方法是对默认的PROFILE做个性化调整;第二种方法是重新定制一个新的PROFILE。

四、创建 profile 的语法如下:

  CREATE PROFILE profile
  LIMIT { resource_parameters 对资源的限制
    | password_parameters   对密码的限制
    }... ;

  <resource_parameters> 
  {{ SESSIONS_PER_USER   每个用户名并行会话数
   | CPU_PER_SESSION    每会话可用的CPU时间,单位0.01秒
   | CPU_PER_CALL     一次SQL调用(解析、执行和获取)允许的CPU时间
   | 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   密码使用天数,默认180天
   | PASSWORD_REUSE_TIME   密码可重用的间隔时间(结合PASSWORD_REUSE_MAX)
   | PASSWORD_REUSE_MAX   密码最大改变次数(结合PASSWORD_REUSE_TIME)
   | PASSWORD_LOCK_TIME   超过试错次数后,被锁定的天数,默认1天
   | 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部分

  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 (责任编辑:liangzh)