57.PROFILE是口令限制、资源限制的命名集合。
在客户端将环境变量ORA_ENCRYPT_LOGIN设置为TRUE,当发送用户名和口令时,Oracle会自动对口令进行加密。
failed_login_attempts:连续登录的最大失败次数
password_lock_time:账户被锁定的天数
password_life_time:口令有效期
password_grace_time:口令宽限期
password_reuse_time
password_reuse_max
系统口令校验函数VERIFY_FUNCTION
当建立系统口令校验函数verify_function时,必须以sys用户运行sql脚本utlpwdmg.sql
@$ORACLE_HOME/rdbms/admin/utlpwdmg.sql
建立自定义口令校验函数
create or replace function password_function(username varchar2,password varchar2,old_password varchar2)
return boolean IS
n boolean;
m integer;
isdigit boolean;
ischar boolean;
digitarray varchar2(20);
chararray varchar2(52);
begin
digitarray:='0123456789';
chararray:='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
isdigit:=false;
m:=length(password);
for i in 1..10 loop
for j in 1..m loop
if substr(password,j,1)=substr(digitarray,i,i) then
isdigit:=true;
goto findchar;
end if;
end loop;
end loop;
if isdigit=false then
raise_application_error(-20003,'口令至少包含一个字符和数字');
end if;
<<findchar>>
ischar:=false
for i in 1..length(chararray) loop
for j in 1..m loop
if substr(password,j,i)=substr(chararray,i,1) then
ischar:=true;
end if;
end loop;
end loop;
if ischar=false then
raise_application_error(-20003,'口令至少包含一个字符和数字');
end if;
return(true);
end;
建立口令校验函数password_function后,为了使用该口令校验函数,需修改password_verify_function选项
alter profile default limit password_verify_function password_function;
禁用口令校验函数
alter profile password_history limit password_verify_function null;
58.激活资源限制
alter system set resource_limit=true;
cpu_per_session:每个会话可占用的最大CPU时间
cpu_per_call:每次调用(解析、执行或提取数据)可占用的最大CPU时间
logical_reads_per_session:回话的最大逻辑读取次数
logical_reads_per_call:每次调用(解析、执行或提取数据)的最大逻辑I/O次数
private_sga:只适用于共享服务器模式
composite_limit:指定会话的总计资源消耗
sessions_per_user:每个用户的最大并发会话数
connect_time:回话的最大连接时间
idle_time:回话的最大空闲时间
修改profile
alter profile session_limit limit
cpu_per_session 15000
sessions_per_user 5;
删除profile
drop profile call_limit cascade;
select resource_name, limit, profile, resource_type from dba_profiles;