一:概述
       Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用CreateProfile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该profile分配给用户,则该用户所能使用的数据库资源都在该profile的限制之内。
注意事项:
  1:建立PROFILE时,如果只设置了部分口令或资源限制选项,其他选项会自动使用默认值(DEFAULT的相应选项)
  2:建立用户时,如果不指定PROFILE选项,oracle会自动将DEFAULT分配给相应的数据库用户
  3:每个用户只能分配一个PROFILE.如果要同时管理用户的口令和资源,那么在建立PROFILE时应该同时指定口令和资源选项.
  4:使用PROFILE管理口令时,口令管理选项总是处于被激活状态,但如果使用PROFILE管理资源,必须要激活资源限制.
二:相关操作
       1:创建profile文件
   

createprofile 文件名
    limit
      [限制条件…]
     例如:
             createprofilemyProfile                       --创建一个名为myProfile的profile文件
            limit
             password_reuse_time=30,           --限制密码使用的时间为30天
        password_reuse_max=10,          --限制修改密码宽限的时间为10天
        failed_login_attempts5,                --限制错误登陆次数为5次
        password_lock_time=3;               --限制锁定时间为3天
     注意事项:
       必须要有createprofile权限,才能创建profile。
     2:删除profile文件
       dropprofile文件名[cascade];
       例如:
              dropprofilemyProfilecascade;        --删除名为myProfil的profile文件
     注意事项:
       1> 已分配的profile,删除时必须加cascade选项。
       2> 必须要有createprofile权限,才能创建profile。
       3> DEFAULT为默认profile,不能删除
     3:修改profile文件
                 alterprofile文件名
         limit
           [限制条件…];
     例如:
          alterprofilemyProfile                          --修改名为myProfile的profile文件
          limit
          password_reuse_time=60,              --修改限制密码使用的时间为60天
      password_reuse_max=5,                  --修改限制修改密码宽限的时间为5天
      failed_login_attempts3,                     --修改限制错误登陆次数为3次
      password_lock_time=5;                    --修改限制锁定时间为5天
        4:给制定用户分配profile文件
               alteruser用户名profile文件名;
               例如
                      alteruseruser1profilemyProfile;           --为名为user1的用户分配名为myProfile的profile文件
        5:查看指定的profile文件内容
               select[限定条件…]|*fromdba_profileswhereprofile=文件名;
               例如:
       select
       password_lock_time
       fromdba_profile
       whereprofile=’myProfile’
 三:profile文件参数详解
   ● FAILED_LOGIN_ATTEMPT:设定登录到ORACLE数据库时可以失败的次数。一旦某用户尝试登录数据库的达到该值时,该用户的帐户就被锁定,只能由DBA能解锁。
   ● PASSWORD_LIFE_TIME:设定口令的有效时间(天数),一旦超过这一时间,必须重新设口令。缺省为UNLIMITED.
   ● PASSWORD_REUSE_TIME:许多系统不许用户重新启用过去用过的口令。该资源项设定了一个失效口令要经过多少天,用户才可以重新使用该口令。缺省为UNLIMITED.
   ● PASSWORD_REUSE_MAX:重新启用一个先前用过的口令前必须对该口令进行重新设置的次数(重复用的次数)。
   ● PASSWORD_LOCK_TIME:设定帐户被锁定的天数(当登录失败达到FAILED_LOGIN_ATTEMPTS时)。
   ● PASSWORD_GRACE_TIME:设定在口令失效前,给予的重新设该口令的宽限天。当口令失效之后回,在登录时会出现警告信息显示该天数。如果没有在宽限天内修改口令,口令将失效。
   ● PASSWORD_VERITY_FUNCTION:该资源项允许调用一个PL/SQL来验证口令。ORACLE公司已提供该应用的脚本,但是只要愿意的话,用户可以制定自己的验证脚本。该参数的设定就是PL/SQL函数的名称。缺省为NULL.
   ● SESSION_PER_USER:用户可以同时进行的会话(连接到Oracle)的最大数目。如果用户达到该限制,则在下一次登录时产生一条错误信息。
   ● CPU_PER_SESSION:用户在一次数据库会话期间可以占用的CPU时间总量(单位为:1%秒)。当达到该时间限制之后,用户就不能在会话中执行任何操作了。用户必须断开与Oracle的连接再重新建立连接以使该CPU累计器复位。
   ● CPU_PER_CALL:该资源表示用户可用的CPU时间总量(单位为:1%秒),与CPU_PER_SESSION不同,该资源是以每次调用(SQL语句)为基准来限制的,而不是以每次会话为基准的。无论何时,只要一个SQL语句达到该限制,该语句就以错误信息结束。不像CPU_PER_SESSION那样,用户不需断开与ORACLE的连接。当使用CPU_PER_CALL时,只要没有超出参数限定的时间用户就可以做新的查询。
   ● LOGICAL_READS_PER_SESSION:在一次给定的数据库会话期间能够进行的逻辑读(以数据库块为单位)的次数。如果超出该参数的限定。用户仍然可以工作,但只要他不进行读就可以。要想复位,用户必须断开数据库连接再重新连接才行。
   ● LOGICAL_READS_PER_CALL:在一次CPU调用(SQL语句)期间,可以读取的数据库块数,如果数据库的逻辑读超过了该设定值,则操作就被拒绝。
   ● IDLE_TIME:可以指定用户在数据库被终止之前,可以让连接处于多长的空闲状态(以分钟为单位)一个被终止的数据库连接可能不易被用户察觉,因为该资源并不终止任何应用程序。只有到用户试图下次执行某个操作时(如查询),他才会认识到该连接已被终止了。假设一用户已登到sqlplus并空闲了2小时,由于IDLE_TIME设为60(=1小时),则该用户的连接在第一小时之后就被终止了,但该用户仍可看到sqlplus,只是不能工作罢了。
   ● CONNECT_TIME:该资源用于限定用户可以和数据库连接的时间总量。和IDLE_TIME,该资源也是以分钟为单位,当连接时间超出该设置时,该连接就被终止。
   ● PRIVATE_SGA:表示用户私有的SQL区的大小(以块为单位)。确省为UNLIMITED.
   ● COMPOSITE_LIMIT:是一项复杂的资源项。利用该项可以对所有混合资源限定作出设定。可把它看成资源成本值。该成本值让用户能够确定在设置资源限制时哪些资源项比较重要。
   注意事项:(关于COMPOSITE_LIMIT的说明)
   在确定资源成本时,只有一下资源项有用:
   .CPU_PER_SESSION
   .LOGICAL-READS_PER_SESSION
   .CONNECT_TIME
   .PRIVATE_SGA
   如果某一资源项的资源成本为0,则该资源就没有成本。但是除0以外,都可用Alterresourcecost命令把值赋给资源项。
   如:alterresourcecostconnect_time10;
   在本例中,每连接1分钟的成本是10个混合资源限制点,当混合资源限制点数据超过该参数的设定时,数据库连接即被终止。
   假设用户具有以下资源成本:
   CPU_PER_SESSION1
   CONNECT_TIME50
   LOGICAL_READS_PER_SESSION0
   PRIVATE_SGA10
   并且当前的混合资源限制如下:
   COMPOSITE_LIMIT 15000
   则该用户可以用的资源加在一起不得超过由数据库管理员设定的COMPOSITE_LIMIT值15000。在这种情况下,用户在其私有的SQL区(PRIVATE_SGA_PER_SESSION)中能够占用的CPU时间为15000(150秒)(CPU_PER_SESSION)或者1500块(1500*10=15000)。当任何资源合成达到该限定值时,会话即被终止。这里CONNECT_TIME的值被设置为0,它并不占用总的COMPOSITE_LIMIT。
   可以同时采用混合限制和明确的限制,如:
   IDLE_TIME180
   CONNECT_TIME600
   CPU_PER_CALL750
   COMPOSITE_LIMIT10000


  在本例中,如果空闲超过180分钟,或者一次会话的总连接时间超过600分钟,或者执行一个SQL语句所耗的CPU时间超过750(7.5秒),或者混合资源限制超过10000,则配置文件就终止会话。在ORACLE中,只要IDLE_TIME,CONNECT_TIME,或CPU_PER_CALL的值没有超过限定值,则把COMPOSITE_LIMIT的值用做终止标志。如果这些值超出限定值,不管COMPOSITE_LIMIT的值多大,会话都会中断连接。