草原最好听的歌曲:Oracle学习笔记(12)口令和资源管理

来源:百度文库 编辑:中财网 时间:2024/05/04 04:59:52

口令和资源管理

 

1、Profiles: 概要文件,包含一些对口令和资源限制的一个命名的集合。通过CREATE USER 或 ALTER USER 命令来指定用户。它可以是enabled 或 disabled。可以参考default profile(默认,资源和口令没有做任何限定)。
sql>create user test
    identified by test; //用户和口令都是test

 

2、口令管理:Account locking >Password history >Password expiration and aging 口令生命周期和过期时间>Password verification 设定口令的复杂性(符号等)>用户

口令限制是一直保持的。使用 CREATE USER or Lock,unlock ,expire accounts 这些命令
sql> alter user test account lock;  //帐号锁定
sql>alter user test account unlock; //帐号解锁
sql>alter user test password expire; //口令到期

(1)口令帐号锁定:FAILED_LOGIN_ATTEMPTS 在帐号被锁之前登录尝试的失败次数 ,PASSWORD_LOCK_TIME 在尝试失败登录达到一定的次数后帐号被锁定的时间(单位:1天),超过这个时间将自动解锁。
sql>create profile profile1 limit
    password_lock_time 1/1440
    failed_login_attempts 3;    //配置文件profile1已创建

sql>alter user kong
    profile profile1;  //将用户kong使用配置文件profile1

sql>conn kong/kkk   //ERROR
sql>conn kong/kxf   //ERROR
sql>conn kong/kkk   //ERROR
sql>conn kong/111   //the account is locked 帐号已被锁定(登录失败3次后帐号自动锁定)

sql>alter profile profile1 limit
    password_lock_time 1/1440;     //表示1分钟后锁定的帐号将自动解锁(1/60*1/24)

sql>conn kong/kxf; 

(2)口令生存周期和失效后允许改变的时间:PASSWORD_LIFE_TIME 口令的生存周期(口令经过多少天后会提示到期)/ PASSWORD_GRACE_TIME 失效后锁定,即设定几天后锁定。
sql>alter profile profile1 limit
    password_life_time 2    //口令经过2天后会提示到期
    password_grace_time 3;  //口令到期的3天后被锁定,这3天内可以对口令做改变。
   

(3)保留口令历史记录: PASSWORD_REUSE_TIME  保留时间(几天)/ PASSWORD_REUSE_MAX 保留最多重用次数(几次)
注意:PASSWORD_REUSE_TIME 和PASSWORD_REUSE_MAX  是复式的,可以都指定但只有一个生效)
sql> alter profile profile1 limit
     password_reuse_time 10     //口令保留10天
     password_reuse_max 3;      //口令最多重用3次

(4)启用口令复杂性函数:PASSWORD_VERIFY_FUNCTION(PL/SQL函数在口令被设定前做一个口令复杂性检查)
满足条件:函数必须建立在SYS 作为owner下,Boolean函数返回的值是个boolean值。函数中三个参数必须是输入参数(用户ID,新口令,旧口令),并且是VARCHAR2类型和30个字符。
function_name(userid_parameter IN VARCHAR2(30),password_parameter IN VARCHAR2(30),old_password_paramemter IN VARCHAR2(30)) RETURN BOOLEAN

 

Oracle给了一个默认的口令验证函数:VERIFY_FUNCTION()

步骤:conn sys 连接 >  run一个脚本:utlpwdmg.sql ORACLE会自动产生一个VERIFY_FUNCTION()函数,同时修改DEFAULT profile概要文件。
要求如下:
a.口令最小长度是4个字节;
b.口令不能和用户名相同;
c.口令至少有一个字母,一个数字和一个特殊符号。
d.口令改变时新口令必须和旧口令保证有三个符号以上的差异。
sql>conn sys/admin1 as sysdba
sql>start d:\oracle\ora90\rdbms\admin\utlpwdmg.sql //函数已经创建,同时DEFAULT profile已经更新
sql>alter user kong profile default; //用户已更改为默认的口令文件
sql>alter user kong identified by kong_002; //口令已修改,新口令不能和旧口令相同
sql>alter user kong identified by kxf_001;  //重新改回kxf_001.

另一个窗口:
sql>conn kong/kxf_001
sql>password   //修改新口令:kong_002

(5)创建Profile:口令文件的设定
CREATE PROFILE grace_5 LIMIT
   FAILED_LOGIN_ATTEMPTS 3
   PASSWORD_LOCK_TIME UNLIMITED
   PASSWORD_LIFE_TIME 30
   PASSWORD_REISE_TIME 30
   PASSWORD_VERIFY_FUNCTION verify_function
   PASSWORD_GRACE_TIME 5;

sql>alter profile profile1 limit
    password_verify_function verify_function;  //配置文件已经修改。

(6)改变Profile:口令文件的设定
删除口令文件:
DROP PROFILE developer_prof;
DROP PROFILE developer_prof CASCADE;

sql>alter user kong
    profile profile1;
sql>drop profile profile1; //配置文件profile1指定了用户,不能没有casecade而删除

sql>drop profile profile1
    cascade;               //profile的删除对当前用户session不起作用。只是在以后的session中才会有效。


3、资源的管理:session级,call级别或者两个都生效(默认default不生效)。
限制可以被定位在profiles中使用CREATE PROFILE 命令。
要使资源限制生效方法:RESOURCE_LIMIT 初始化参数(静态改变)、ALTER SYSTEM 动态改变命令
ALTER SYSTEM SET resource_limit=TRUE;
例如:并行会话数 设定为2个用户 (默认disabled)
sql>conn kong/kxf_001    //已连接
在另一个窗口:
sql>conn kong/kxf_001    //已连接
第三个窗口:
sql>conn kong/kxf_001    //已连接
如果想要并行会话数起作用,那么需要用到resource_limit=true;
sql>alter system set resource_limit=true; 

sql>conn kong/kxf_001   //exceeded simultaneous SESSIONS_PER_USER limit 已经超过每个用户并行session限制

【注意】如果将并行会话数设置为4,那么继续conn kong/kxf_001又可以连接了。


(1)设定资源限制在Session级别:
CPU_PER_SESSION  CPU/会话——每个session可以指定多少CPU (单位:1/100 s)
SESSIONS_PER_USER  每个用户可以开多少session
CONNECT_TIME      连接时间——连接多久退出去 (单位:min)
IDLE_TIME        空闲时间——用户非活动检测时间,多长时间没有做动作就自动断开(单位:min)
LOGICAL_READS_PER_SESSION  每个Session读取多少数据块(物理和逻辑读)
PRIVATE_SGA     每个用户占用多少内存区域(单位:bytes)

sql>create profile profile1 limit
    cpu_per_session 10000  //100秒
    connect_time 60;  //连接时间60分钟
    idle_time 5;      //指定空闲时间为5分钟

sql>alter user kong
    profile profile1;

另一个窗口:
sql>conn kong/kxf_001
sql>select * from authors;
sql>set wrap off
sql>set linesize 1000
sql>run
等待5分钟后继续操作。。。
sql>select * from authors ;// 超出了最大的空闲时间,自动断开了连接


(2)设定资源限制CALL级别:
CPU_PER_CALL 每一个调用可以占用多少CPU时间(1/100 s)
LOGICAL_READS_PER_CALL 每一个调用可以读多少数据块(bytes)

sql>alter profile profile1 limit
    cpu_per_call 1000 ; //占用10s
    logical_reads_per_call 10; //每个调用只能读10块。

创建Profile做资源限定:
CREATE PROFILE developer_prof LIMIT
   SESSIONS_PER_USER 2
   CPU_PER_SESSION 10000
   IDLE_TIME 60
   CONNECT_TIME 480;

 

4、管理资源使用Database Resource Manager 数据库资源管理器:
提供Oracle服务器更多的控制来体现资源管理的决策:资源使用者组、资源计划、资源分配方法、资源计划调度等等信息。如果不通过图形界面完成,可以使用DBMS_RESOURCE_MANAGER package 来创建和管理这些元素。
要求使用ADMINISTER_RESOURCE_MANAGER 权限。

sql>desc dbms_resource_manager

 

5、获取口令和资源限制的信息:DBA_USERS / DBA_PROFILES
sql>desc dba_users;  //查询当前用户的所有信息
sql>select username,account_stauts from dba_users; //发现test用户是expire状态
sql>alter user test
    account lock;   //此时test用户状态:expired&locked

sql>desc dba_profiles  //profile、resource_name、resource_type、limit(继承)
sql>select * from dba_profiles where profile='profile1';