oracle数据库修改、创建配置文件

原创 2016年05月30日 22:58:59

1)       修改配置文件DEFAULT
ALTER PROFILE DEFAULT LIMIT

PASSWORD_LIFE_TIME UNLIMITED

PASSWORD_GRACE_TIME UNLIMITED

PASSWORD_REUSE_TIME UNLIMITED

PASSWORD_REUSE_MAX UNLIMITED

FAILED_LOGIN_ATTEMPTS UNLIMITED

PASSWORD_LOCK_TIME UNLIMITED

PASSWORD_VERIFY_FUNCTION NULL;

2)       启用资源限制
ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;

3)    创建口令校验函数“VF_285”

CREATE OR REPLACE FUNCTION VF_285
(username varchar2,
  password varchar2,
  old_password varchar2)
  RETURN boolean IS 
   n boolean;
   m integer;
   differ integer;
   isdigit boolean;
   ischar  boolean;
   ispunct boolean;
   db_name varchar2(40);
   digitarray varchar2(20);
   punctarray varchar2(25);
   chararray varchar2(52);
   i_char varchar2(10);
   simple_password varchar2(10);
   reverse_user varchar2(32);

BEGIN 
   digitarray:= '0123456789';
   chararray:= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

   -- Check for the minimum length of the password
   IF length(password) < 8 THEN
      raise_application_error(-20001, 'Password length less than 8');
   END IF;


   -- Check if the password is same as the username or username(1-100)
   IF NLS_LOWER(password) = NLS_LOWER(username) THEN
     raise_application_error(-20002, 'Password same as or similar to user');
   END IF;
   FOR i IN 1..100 LOOP
      i_char := to_char(i);
      if NLS_LOWER(username)|| i_char = NLS_LOWER(password) THEN
        raise_application_error(-20005, 'Password same as or similar to user name ');
      END IF;
    END LOOP;

   -- Check if the password is same as the username reversed
   
   FOR i in REVERSE 1..length(username) LOOP
     reverse_user := reverse_user || substr(username, i, 1);
   END LOOP;
   IF NLS_LOWER(password) = NLS_LOWER(reverse_user) THEN
     raise_application_error(-20003, 'Password same as username reversed');
   END IF;

   -- Check if the password is the same as server name and or servername(1-100)
   select name into db_name from sys.v$database;
   if NLS_LOWER(db_name) = NLS_LOWER(password) THEN
      raise_application_error(-20004, 'Password same as or similar to server name');
   END IF;
   FOR i IN 1..100 LOOP
      i_char := to_char(i);
      if NLS_LOWER(db_name)|| i_char = NLS_LOWER(password) THEN
        raise_application_error(-20005, 'Password same as or similar to server name ');
      END IF;
    END LOOP;

   -- Check if the password is too simple. A dictionary of words may be
   -- maintained and a check may be made so as not to allow the words
   -- that are too simple for the password.
   IF NLS_LOWER(password) IN ('welcome1', 'database1', 'account1', 'user1234', 'password1', 'oracle123', 'computer1', 'abcdefg1', 'change_on_install') THEN
      raise_application_error(-20006, 'Password too simple');
   END IF;

   -- Check if the password is the same as oracle (1-100)
    simple_password := 'oracle';
    FOR i IN 1..100 LOOP
      i_char := to_char(i);
      if simple_password || i_char = NLS_LOWER(password) THEN
        raise_application_error(-20007, 'Password too simple ');
      END IF;
    END LOOP;

   -- Check if the password contains at least one letter, one digit 
   -- 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(-20008, 'Password must contain at least one digit, one character');
   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 endsearch;
         END IF;
      END LOOP;
   END LOOP;
   IF ischar = FALSE THEN
      raise_application_error(-20009, 'Password must contain at least one \
              digit, and one character');
   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);

     differ := abs(differ);
     IF differ < 3 THEN
       IF length(password) < length(old_password) THEN
         m := length(password);
       ELSE
         m := length(old_password);
       END IF;

       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(-20011, 'Password should differ from the \
            old password by at least 3 characters');
       END IF;
     END IF;
   END IF;
   -- Everything is fine; return TRUE ;   
   RETURN(TRUE);
END;
/

4)       创建配置文件PRO_271
CREATE PROFILE PRO_271 LIMIT

PASSWORD_LOCK_TIME 9

PASSWORD_REUSE_TIME 30

PASSWORD_VERIFY_FUNCTION VF_285

CPU_PER_SESSION 100

IDLE_TIME 120

LOGICAL_READS_PER_CALL 80     

PRIVATE_SGA 52428800;


版权声明:本文为博主原创文章,未经博主允许不得转载。

管理用户配置文件++查询用户配置文件+修改用户配置文件+删除用户配置文件

管理用户配置文件 原先的配置文件 create profile profile_zhou6 limit failed_login_attempts 3–允许3次输入口令错误 password_...
  • zhou920786312
  • zhou920786312
  • 2017年05月26日 08:31
  • 444

Oracle 使用配置文件来配置JDBC连接数据库

首先配置文件保存为config.properties放在包内。 driver=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@localh...
  • yulungggg
  • yulungggg
  • 2017年03月08日 23:06
  • 4805

Centos6.7安装oracle11gR2及配置开机启动、新建表空间和用户、导入数据

版本:Centos6.7(桌面版);oracle11gR2(两个压缩包);jdk1.71. 软件准备:0. Centos系统要求:1)内存(RAM) 2GB+;2)虚拟内存 swap 建议:内存为 2...
  • fansy1990
  • fansy1990
  • 2016年06月24日 13:56
  • 4693

oracle数据库中sql语言创建表,更新,删除数据

oracle数据库对表的增删改查
  • strong_yu
  • strong_yu
  • 2016年06月19日 10:44
  • 1317

如何修改oracle数据库用户密码

用CRT以安装oracle数据库的用户连接oracle数据库所在服务器。 (以服务器为linux 为例) 输入命令: sqlplus /nolog ,进入oracle控制台,...
  • Seaee
  • Seaee
  • 2016年01月20日 18:09
  • 2119

修改Oracle数据库名称

一般情况下,不需要修改数据库名称。但如果修改了数据库名,客户机就必须重新进行网络服务名的配置,才能连接到数据库。   【实验前必知的信息】 1. 平台环境:CentOS5.5 + Oracl...
  • zjrodger
  • zjrodger
  • 2014年03月27日 00:05
  • 6165

Oracle学习之创建数据库(新建实例)

出处:http://blog.csdn.net/luiseradl/article/details/6972217 http://wenku.baidu.com/view/864b9b2c453610...
  • u010678947
  • u010678947
  • 2014年03月03日 22:32
  • 24019

Windows下Oracle创建数据库的3种方式

1.   Creating a Database with DBCA DatabaseConfiguration Assistant (DBCA) is the preferred way to c...
  • cscscscsc
  • cscscscsc
  • 2015年09月08日 01:11
  • 4539

Oracle 11g创建本地数据库

安装完oracle11g之后,启动本地数据库,开始一直报错,没有监听,但是本地的监听也配置了 就是启动不了 ,于是乎找了很多资料,终于启动了。 首先确定你成功安装了oracle11g。然后打开net...
  • HF709363456
  • HF709363456
  • 2017年02月23日 09:49
  • 2607

修改oracle实例名(sid)和数据库名(db_name)

有时我们需要修改数据库的sid和dbname,除了使用rman进行备份恢复之外,也可以通过手工方式修改,主要由两个主要过程完成: 1、修改实例名(SID) 2、修改数据库名(dbname) ...
  • cuiyan1982
  • cuiyan1982
  • 2016年09月18日 14:51
  • 1737
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle数据库修改、创建配置文件
举报原因:
原因补充:

(最多只允许输入30个字)