- 浏览: 244042 次
最新评论
profile文件的介绍:
Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,
用它来实现对数据库资源的限制使用,如果把该profile分配给用户,则该用户所能使用的数据库资源都在该profile的限制之内。
1、查看信息
select * from dba_users;--查看用户的参数
select * from dba_profiles;--显示所有profile文件及其限制
select * from user_password_limits;--描述指定给用户的profile中的口令限制情况
select * from user_resource_limits;--描述指定给用户的profile中的资源限制情况
select * from resource_cost;--列举每个资源的价值
2、profile的参数含义
COMPOSITE_LIMIT:一个会话的资源成本限制
SESSIONS_PER_USER:一个用户允许同时(并发)会话的总数,超过后系统禁止该用户的后续会话
CPU_PER_SESSION:定义了一个SESSION占用的CPU的时间(1/100 秒),当达到这个限制用户不能在此会话中执行任何操作,此时必须先断开连接,再连接才行
CPU_PER_CALL:限制每次调用SQL语句期间(parse、execute、fetch)可用的CPU时间总量,单位是百分之一秒。
达到限制时语句以报错结束。不同于CPU_PER_SESSION的是,没达到CPU_PER_SESSION限制,还可以进行新的查询
LOGICAL_READS_PER_SESSION:一个会话允许读写的逻辑块的数量限制
LOGICAL_READS_PER_CALL:一次调用的SQL期间,允许读数据库块数限制
IDLE_TIME:一个连接会话的最长连接时间;当用户空闲时间超过IDLE_TIME指定的时间,Oracle将回滚当前事务,并且结束他的会话
CONNECT_TIME:一个连接会话的最长连接时间(分钟);当用户会话时间超过CONNECT_TIME指 定的时间,Oracle将回滚当前事务,并且结束他的会话
PRIVATE_SGA:一个会话允许分配的最大SGA大小,使用K/M定义
FAILED_LOGIN_ATTEMPTS:当连续登陆失败次数达到该参数指定值时,用户被加锁;
PASSWORD_LIFE_TIME:口令的有效期(天),默认为UNLIMITED
PASSWORD_REUSE_TIME:口令被修改后原有口令隔多少天被重新使用,默认为UNLIMITED
PASSWORD_REUSE_MAX:口令被修改后原有口令被修改多少次才允许被重新使用
PASSWORD_VERIFY_FUNCTION:口令效验函数
PASSWORD_LOCK_TIME:帐户因FAILED_LOGIN_ATTEMPTS锁定时,加锁天数
PASSWORD_GRACE_TIME:口令修改的宽限期(天)
3、profile创建和参数修改
--创建一个简单profile,限制每个用户的会话数
SQL> create profile pf_all limit sessions_per_user 20;
--指定用户使用profile限制
为用户指定资源限制,必须:
动态地使用alter system或使用初始化参数resource_limit使资源限制生效。该改变对密码资源无效,密码资源总是可用。
SQL> show parameter resource_limit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean FALSE
SQL> alter system set resource_limit=true;
系统已更改。
SQL> show parameter resource_limit;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean TRUE
SQL> alter user tina profile pf_all;
--修改profile参数
SQL>alter PROFILE pf_all limit sessions_per_user 10;
--删除一个新的尚未分配给用户的PROFILE
SQL>DROP PROFILE pf_all;
--删除已创建的profile,如果已经指定了用户则要加上cascade关键字
SQL>DROP PROFILE pf_all cascade;
注:DEFAULT PROFILE不可以被删除
--设置密码可失败次数
SQL>alter profile default limit failed_login_attempts unlimited;
--设置密码生命周期
SQL>alter profile default limit PASSWORD_LIFE_TIME unlimited;
4、创建在创建新用户与老用户密码修改时验证复杂度的函数 --以前同事写的
CREATE OR REPLACE FUNCTION SYS.tina_passwd_complex
/*((1)长度:10位以上 (2)复杂度:必须为英文字母+特殊字符+数字 (3)密码不能与用户名相同 (4)密码需要至少有3个字符与之前的口令不相同)*/
(username varchar2,
password varchar2,
old_password varchar2)
RETURN boolean IS
n boolean;
m integer;
differ integer;
isdigit boolean;
ischar boolean;
ispunct boolean;
digitarray varchar2(20);
punctarray varchar2(25);
chararray varchar2(52);
BEGIN
digitarray:= '0123456789';
chararray:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
punctarray:='!"@#$%^&()``*+,-/:;<=>?_';
-- Check if the password is same as the username
IF NLS_LOWER(password) = NLS_LOWER(username) THEN
raise_application_error(-20001, 'Password same as or similar to user');
END IF;
-- Check for the minimum length of the password
IF length(password) < 10 THEN
raise_application_error(-20002, 'Password length less than 10');
END IF;
-- Check if the password is too simple.
IF NLS_LOWER(password) IN ('database','user', 'password', 'oracle') THEN
raise_application_error(-20002, 'Password too simple');
END IF;
-- Check if the password contains at least one letter, one digit and one punctuation mark.
-- 1. Check for the digit
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,1) THEN
isdigit:=TRUE;
GOTO findchar;
END IF;
END LOOP;
END LOOP;
IF isdigit = FALSE THEN
raise_application_error(-20003, 'Password should contain at least one digit, one character and one punctuation');
END IF;
-- 2. Check for the character
<<findchar>>
ischar:=FALSE;
FOR i IN 1..length(chararray) LOOP
FOR j IN 1..m LOOP
IF substr(password,j,1) = substr(chararray,i,1) THEN
ischar:=TRUE;
GOTO findpunct;
END IF;
END LOOP;
END LOOP;
IF ischar = FALSE THEN
raise_application_error(-20003, 'Password should contain at least one
digit, one character and one punctuation');
END IF;
-- 3. Check for the punctuation
<<findpunct>>
ispunct:=FALSE;
FOR i IN 1..length(punctarray) LOOP
FOR j IN 1..m LOOP
IF substr(password,j,1) = substr(punctarray,i,1) THEN
ispunct:=TRUE;
GOTO endsearch;
END IF;
END LOOP;
END LOOP;
IF ispunct = FALSE THEN
raise_application_error(-20003, 'Password should contain at least one
digit, one character and one punctuation');
END IF;
<<endsearch>>
-- Check if the password differs from the previous password by at least 3 letters
IF old_password IS NOT NULL THEN
differ := length(old_password) - length(password);
IF abs(differ) < 3 THEN
IF length(password) < length(old_password) THEN
m := length(password);
ELSE
m := length(old_password);
END IF;
differ := abs(differ);
FOR i IN 1..m LOOP
IF substr(password,i,1) != substr(old_password,i,1) THEN
differ := differ + 1;
END IF;
END LOOP;
IF differ < 3 THEN
raise_application_error(-20004, 'Password should differ by at least 3 characters');
END IF;
END IF;
END IF;
-- Everything is fine; return TRUE ;
RETURN(TRUE);
END;
/
5、创建profile
CREATE PROFILE pw_profile LIMIT
FAILED_LOGIN_ATTEMPTS 10 /*连续登录10次失败,则用户被锁*/
PASSWORD_LOCK_TIME 999 /*如果用户连续3次登录失败,账号被锁,指定被锁的时间长度*/
PASSWORD_GRACE_TIME 7 /*提示密码过期,仍能用原密码登录的天数*/
PASSWORD_LIFE_TIME 90 /*密码有效的天数,即需要用户至少90天修改一次密码*/
PASSWORD_REUSE_TIME UNLIMITED /*需要多少天后,该密码可以被重用,这里天数不受限制*/
PASSWORD_REUSE_MAX 10 /*当前密码被重用之前,最少需要修改10次密码 */
PASSWORD_VERIFY_FUNCTION tina_passwd_complex /*使用的密码规则验证的函数*/
SESSIONS_PER_USER 5
IDLE_TIME 10;
6、将所有profile均使用tina_passwd_complex函数,以使任何用户修改密码都必须符合复杂度函数
declare
sql_alter varchar2(200);
begin
for cur in(select distinct profile as profile_name from dba_profiles) loop
sql_alter:='ALTER PROFILE '||cur.profile_name||' limit password_verify_function tina_PASSWD_COMPLEX';
execute immediate sql_alter;
end loop;
end;
/
commit;
7.若不在需要,可删除函数和profile
SQL> drop function sys.tina_passwd_complex;
Function dropped.
SQL> drop profile pw_profile;
Profile dropped.
SQL> alter profile DEFAULT limit PASSWORD_VERIFY_FUNCTION null; --将所有涉及上面函数的profile都修改
Profile altered.
Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,
用它来实现对数据库资源的限制使用,如果把该profile分配给用户,则该用户所能使用的数据库资源都在该profile的限制之内。
1、查看信息
select * from dba_users;--查看用户的参数
select * from dba_profiles;--显示所有profile文件及其限制
select * from user_password_limits;--描述指定给用户的profile中的口令限制情况
select * from user_resource_limits;--描述指定给用户的profile中的资源限制情况
select * from resource_cost;--列举每个资源的价值
2、profile的参数含义
COMPOSITE_LIMIT:一个会话的资源成本限制
SESSIONS_PER_USER:一个用户允许同时(并发)会话的总数,超过后系统禁止该用户的后续会话
CPU_PER_SESSION:定义了一个SESSION占用的CPU的时间(1/100 秒),当达到这个限制用户不能在此会话中执行任何操作,此时必须先断开连接,再连接才行
CPU_PER_CALL:限制每次调用SQL语句期间(parse、execute、fetch)可用的CPU时间总量,单位是百分之一秒。
达到限制时语句以报错结束。不同于CPU_PER_SESSION的是,没达到CPU_PER_SESSION限制,还可以进行新的查询
LOGICAL_READS_PER_SESSION:一个会话允许读写的逻辑块的数量限制
LOGICAL_READS_PER_CALL:一次调用的SQL期间,允许读数据库块数限制
IDLE_TIME:一个连接会话的最长连接时间;当用户空闲时间超过IDLE_TIME指定的时间,Oracle将回滚当前事务,并且结束他的会话
CONNECT_TIME:一个连接会话的最长连接时间(分钟);当用户会话时间超过CONNECT_TIME指 定的时间,Oracle将回滚当前事务,并且结束他的会话
PRIVATE_SGA:一个会话允许分配的最大SGA大小,使用K/M定义
FAILED_LOGIN_ATTEMPTS:当连续登陆失败次数达到该参数指定值时,用户被加锁;
PASSWORD_LIFE_TIME:口令的有效期(天),默认为UNLIMITED
PASSWORD_REUSE_TIME:口令被修改后原有口令隔多少天被重新使用,默认为UNLIMITED
PASSWORD_REUSE_MAX:口令被修改后原有口令被修改多少次才允许被重新使用
PASSWORD_VERIFY_FUNCTION:口令效验函数
PASSWORD_LOCK_TIME:帐户因FAILED_LOGIN_ATTEMPTS锁定时,加锁天数
PASSWORD_GRACE_TIME:口令修改的宽限期(天)
3、profile创建和参数修改
--创建一个简单profile,限制每个用户的会话数
SQL> create profile pf_all limit sessions_per_user 20;
--指定用户使用profile限制
为用户指定资源限制,必须:
动态地使用alter system或使用初始化参数resource_limit使资源限制生效。该改变对密码资源无效,密码资源总是可用。
SQL> show parameter resource_limit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean FALSE
SQL> alter system set resource_limit=true;
系统已更改。
SQL> show parameter resource_limit;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean TRUE
SQL> alter user tina profile pf_all;
--修改profile参数
SQL>alter PROFILE pf_all limit sessions_per_user 10;
--删除一个新的尚未分配给用户的PROFILE
SQL>DROP PROFILE pf_all;
--删除已创建的profile,如果已经指定了用户则要加上cascade关键字
SQL>DROP PROFILE pf_all cascade;
注:DEFAULT PROFILE不可以被删除
--设置密码可失败次数
SQL>alter profile default limit failed_login_attempts unlimited;
--设置密码生命周期
SQL>alter profile default limit PASSWORD_LIFE_TIME unlimited;
4、创建在创建新用户与老用户密码修改时验证复杂度的函数 --以前同事写的
CREATE OR REPLACE FUNCTION SYS.tina_passwd_complex
/*((1)长度:10位以上 (2)复杂度:必须为英文字母+特殊字符+数字 (3)密码不能与用户名相同 (4)密码需要至少有3个字符与之前的口令不相同)*/
(username varchar2,
password varchar2,
old_password varchar2)
RETURN boolean IS
n boolean;
m integer;
differ integer;
isdigit boolean;
ischar boolean;
ispunct boolean;
digitarray varchar2(20);
punctarray varchar2(25);
chararray varchar2(52);
BEGIN
digitarray:= '0123456789';
chararray:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
punctarray:='!"@#$%^&()``*+,-/:;<=>?_';
-- Check if the password is same as the username
IF NLS_LOWER(password) = NLS_LOWER(username) THEN
raise_application_error(-20001, 'Password same as or similar to user');
END IF;
-- Check for the minimum length of the password
IF length(password) < 10 THEN
raise_application_error(-20002, 'Password length less than 10');
END IF;
-- Check if the password is too simple.
IF NLS_LOWER(password) IN ('database','user', 'password', 'oracle') THEN
raise_application_error(-20002, 'Password too simple');
END IF;
-- Check if the password contains at least one letter, one digit and one punctuation mark.
-- 1. Check for the digit
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,1) THEN
isdigit:=TRUE;
GOTO findchar;
END IF;
END LOOP;
END LOOP;
IF isdigit = FALSE THEN
raise_application_error(-20003, 'Password should contain at least one digit, one character and one punctuation');
END IF;
-- 2. Check for the character
<<findchar>>
ischar:=FALSE;
FOR i IN 1..length(chararray) LOOP
FOR j IN 1..m LOOP
IF substr(password,j,1) = substr(chararray,i,1) THEN
ischar:=TRUE;
GOTO findpunct;
END IF;
END LOOP;
END LOOP;
IF ischar = FALSE THEN
raise_application_error(-20003, 'Password should contain at least one
digit, one character and one punctuation');
END IF;
-- 3. Check for the punctuation
<<findpunct>>
ispunct:=FALSE;
FOR i IN 1..length(punctarray) LOOP
FOR j IN 1..m LOOP
IF substr(password,j,1) = substr(punctarray,i,1) THEN
ispunct:=TRUE;
GOTO endsearch;
END IF;
END LOOP;
END LOOP;
IF ispunct = FALSE THEN
raise_application_error(-20003, 'Password should contain at least one
digit, one character and one punctuation');
END IF;
<<endsearch>>
-- Check if the password differs from the previous password by at least 3 letters
IF old_password IS NOT NULL THEN
differ := length(old_password) - length(password);
IF abs(differ) < 3 THEN
IF length(password) < length(old_password) THEN
m := length(password);
ELSE
m := length(old_password);
END IF;
differ := abs(differ);
FOR i IN 1..m LOOP
IF substr(password,i,1) != substr(old_password,i,1) THEN
differ := differ + 1;
END IF;
END LOOP;
IF differ < 3 THEN
raise_application_error(-20004, 'Password should differ by at least 3 characters');
END IF;
END IF;
END IF;
-- Everything is fine; return TRUE ;
RETURN(TRUE);
END;
/
5、创建profile
CREATE PROFILE pw_profile LIMIT
FAILED_LOGIN_ATTEMPTS 10 /*连续登录10次失败,则用户被锁*/
PASSWORD_LOCK_TIME 999 /*如果用户连续3次登录失败,账号被锁,指定被锁的时间长度*/
PASSWORD_GRACE_TIME 7 /*提示密码过期,仍能用原密码登录的天数*/
PASSWORD_LIFE_TIME 90 /*密码有效的天数,即需要用户至少90天修改一次密码*/
PASSWORD_REUSE_TIME UNLIMITED /*需要多少天后,该密码可以被重用,这里天数不受限制*/
PASSWORD_REUSE_MAX 10 /*当前密码被重用之前,最少需要修改10次密码 */
PASSWORD_VERIFY_FUNCTION tina_passwd_complex /*使用的密码规则验证的函数*/
SESSIONS_PER_USER 5
IDLE_TIME 10;
6、将所有profile均使用tina_passwd_complex函数,以使任何用户修改密码都必须符合复杂度函数
declare
sql_alter varchar2(200);
begin
for cur in(select distinct profile as profile_name from dba_profiles) loop
sql_alter:='ALTER PROFILE '||cur.profile_name||' limit password_verify_function tina_PASSWD_COMPLEX';
execute immediate sql_alter;
end loop;
end;
/
commit;
7.若不在需要,可删除函数和profile
SQL> drop function sys.tina_passwd_complex;
Function dropped.
SQL> drop profile pw_profile;
Profile dropped.
SQL> alter profile DEFAULT limit PASSWORD_VERIFY_FUNCTION null; --将所有涉及上面函数的profile都修改
Profile altered.
发表评论
-
ETL工具--kettle简介
2016-02-24 11:21 0oracle ETL工具---数据迁移 常用的有:OWB(o ... -
oracle 游标实例
2015-12-31 17:23 1228oracle游标 游标-----内存 ... -
10053事件分析
2015-12-25 17:37 8201)10053介绍: 10053 事件是oracle 提供的用 ... -
oracle绑定变量学习
2015-12-25 17:01 1623绑定变量(binding variable) ... -
oracle 绑定变量
2015-12-24 17:26 0关键词: 绑定变量(binding variable),共享池 ... -
oracle插入大量数据
2015-12-23 17:35 1444oracle插入大量数据 1.生 ... -
ORA-03113:end-of-file on communication channel
2015-12-23 14:32 1182测试上面的一个库 plsql报错:shared memory ... -
oracle分区表【转】
2015-12-23 14:20 466oracle分区表 1.表空间及 ... -
迁移数据文件到ASM【转】
2015-12-23 11:53 8041.迁移数据文件到ASM 1) ... -
adrci命令
2015-12-23 11:46 3119一、adrci说明 在oracle11g中,dump ... -
用户+角色+权限
2015-12-21 17:58 928角色与用户权限的学习 ... -
oracle database link
2015-12-21 17:08 912目前我的数据库里只有tinadb一个实例,要创建db link ... -
oracle回收站
2015-12-21 14:22 463oracle回收站 1.drop table books; ... -
使用nid修改sid和dbname
2015-12-21 15:29 815如非必要,不建议在生产库上对dbid进行修改 1、修改dbi ... -
rman模拟故障恢复实验
2015-12-18 16:08 1195补充1:restore database和recover da ... -
rman命令学习-tina(下)
2015-12-18 16:07 1197五、rman删除 delete命令 删除相关的 ... -
rman命令学习-tina(上)
2015-12-18 16:06 924RMAN学习-tina rman的功能非常强大,下面我们来一 ... -
oracle缩小表空间
2015-12-18 16:59 1796oracle缩小表空间: oracle常用的此类命令Alte ... -
oracle数据库的启动和关闭【转】
2015-12-16 15:02 1181数据库的启动和关闭 Or ... -
oracle的主要进程
2015-12-16 14:21 1309[size=small]oracle的主要进程 Oracle实 ...
相关推荐
oracle profile 概要文件 Oracle系统为了合理分配和使用系统的资源提出了概要文件的概念。所谓概要文件,就是一份描述如何使用系统的资源(主要是CPU资源)的配置文件。将概要文件赋予某个数据库用户,在用户连接并...
### ORACLE_PROFILE的使用详解 #### 一、概述与目的 ...通过以上介绍可以看出,合理地设置和使用`PROFILE`可以有效地管理和优化Oracle数据库的性能。对于大型企业级应用而言,这是一个必不可少的工具。
安装Oracle之后,需要为oracle用户配置环境变量,这些环境变量存储在用户的.bash_profile文件中。.bash_profile文件位于用户的主目录下,用于设置环境变量和启动程序。本文档即为在安装Oracle时,对oracle用户下的....
本文将对 Oracle 主要配置文件进行介绍,包括 profile 文件、oratab 文件、数据库实例初始化文件 initSID.ora、监听配置文件、sqlnet.ora 文件、tnsnames.ora 文件等。 1. profile 文件 profile 文件是系统级的...
本文档主要讲述的是用ORACLE的PROFILE限制ORACLE用户;ORACLE的PROFILE文件是限制数据库用户使用的资源的一种手段。如:控制session或sql能使用的CPU、控制用户的密码管理策略等。 数据库创建后,系统则存在名为...
echo "export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib" >> /home/oracle/.bash_profile echo "export EDITOR=vi" >> /home/oracle/.bash_profile echo "export LANG=en_US" >> /home...
bash_profile_tuxedo+oracle bash_profile_tuxedo+oracle bash_profile_tuxedo+oracle bash_profile_tuxedo+oracle
进入 PowerBuilder,点击 DB Profile 选项,选择 Oracle 7.3 或 Oracle 8.0.4,输入“Profile Name”和“Server”信息,注意 Oracle 7 版本需要在数据连接字符串前加上@,否则不能连接上 PB 数据库。 Tnsnames.ora ...
linux下安装oracle的profile文件
在本文中,我们将详细介绍SAP开发中模块连接Oracle数据库的具体方法步骤。 首先,需要建立目录,使用mkdir命令创建/oracle/client/11x_64目录,并将其所有权更改为eq1adm用户,使用chown命令实现。然后,进入/...
### Oracle 8.1.7 的...- 验证用户环境配置:`grep oracle /home/oracle/.bash_profile` 至此,Oracle 8.1.7数据库的安装与配置过程就完成了。通过上述步骤,我们可以确保Oracle数据库能够在Red Hat环境中顺利运行。
本文将详细介绍如何使用 PowerBuilder 11.5 连接 Oracle 10g 和 SQL Server 2000 数据库。 #### 一、PowerBuilder 11.5 连接 Oracle 10g 数据库 ##### 第一步:打开 Database Profiles 首先,启动 PowerBuilder ...
在本篇文章中,我们将详细介绍如何在CentOS 6.4 64bit操作系统上安装Oracle 11g数据库,包括配置监听的步骤。 前期准备安装环境 在安装Oracle 11g之前,需要准备以下环境: * 操作系统:CentOS 6.4 64bit * 硬件...
在本文中,我们将详细介绍如何彻底卸载Oracle11g,避免手动清理注册表的复杂步骤。 首先,彻底卸载Oracle11g需要遵循一定的顺序,以确保所有组件都被正确移除。以下是一步一步的指南: 1. **停止Oracle服务**:在...
安装完成后,配置Oracle环境变量,如`ORACLE_HOME`、`PATH`、`LD_LIBRARY_PATH`等,将它们添加到`~/.bash_profile`或`/etc/profile.d/oracle.sh`中,以便于后续使用。 接下来,初始化数据库实例。运行`dbca`...
9、修改/etc/profile文件 10、创建安装目录、修改文件权限 11、切换到oracle用户,设置oracle用户环境变量 12、切换到root 用户进入oracle安装包解压后的目录备份db_install.rsp文件,修改db_install.rsp配置 13、...
在安装 Oracle 11g 之前,需要修改 profile 文件,以便 Oracle 11g 可以正确安装。可以使用 vim 命令来编辑 /etc/profile 文件,并添加相关设置。 本文提供了 Oracle 11g 在 Linux 下的离线安装教程,涵盖了查看和...
根据提供的信息,我们可以总结出以下Oracle数据库学习的关键知识点: ### Oracle 学习笔记概览 在Oracle学习过程中,掌握基础的命令与权限管理是至关重要的。以下内容将围绕Oracle数据库的基础操作、用户管理以及...