`
atoooo
  • 浏览: 13270 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ORACLE用户自动被锁解决方法

阅读更多

ORACLE用户自动被锁解决方法

--1.
--系统参数配置  connect sys/password@db_link as sysdba

select * from dba_profiles where resource_name like 'FAILED_LOGIN_ATTEMPTS%';
--1 DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
--连续错误连接10次用户被锁定
--2.
--查看被锁的用户
select LOCK_DATE,username from dba_users where username='USERNAME';
LOCK_DATE为空说明没有锁定,非空为锁定。

-----
SELECT S.USERNAME,
       DECODE(L.TYPE, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL,
       O.OWNER,
       O.OBJECT_NAME,
       O.OBJECT_TYPE,
       S.SID,
       S.SERIAL#,
       S.TERMINAL,
       S.MACHINE,
       S.PROGRAM,
       S.OSUSER
   FROM V$SESSION S, V$LOCK L, DBA_OBJECTS O
WHERE S.SID = L.SID
   AND O.OBJECT_ID = L.ID1
   AND S.USERNAME IS NOT NULL;
--3.
--解锁方法
ALTER USER USER_NAME ACCOUNT UNLOCK;
--值的注意,在升级过程中,被锁的用户,有可能不值一个
--重新升级

-----设置系统的默认登录次数

alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS 10;

alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS UNLIMITED;

------------

数据管理员为这个用户单独设置了登录次数则要查找这个用户对应的profile,然后修改.可以查看用户的创建语名找到对应的设置。

Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用 Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该profile分配给用户,则该用户所能使用的数据库资源都在该 profile的限制之内。

二、条件:

创建profile必须要有CREATE PROFILE的系统权限。

为用户指定资源限制,必须:

1.动态地使用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>

2.使用create profile创建一个定义对数据库资源进行限制的profile。

3.使用create user 或alter user命令把profile分配给用户。

三、语法:

          CREATE PROFILE profile 

LIMIT { resource_parameters | password_parameters } [ resource_parameters | password_parameters ]… ;

 
   <resource_parameters>
{{ SESSIONS_PER_USER | CPU_PER_SESSION | CPU_PER_CALL | CONNECT_TIME | IDLE_TIME | LOGICAL_READS_PER_SESSION | LOGICAL_READS_PER_CALL | COMPOSITE_LIMIT } { integer | UNLIMITED | DEFAULT }
| PRIVATE_SGA { integer [ K | M ] | UNLIMITED | DEFAULT }}

< password_parameters >

{{ FAILED_LOGIN_ATTEMPTS | PASSWORD_LIFE_TIME | PASSWORD_REUSE_TIME | PASSWORD_REUSE_MAX | PASSWORD_LOCK_TIME | PASSWORD_GRACE_TIME } { expr | UNLIMITED | DEFAULT }
| PASSWORD_VERIFY_FUNCTION { function | NULL | DEFAULT }

}

四、语法解释:

       profile :配置文件的名称。Oracle数据库以以下方式强迫资源限制:

       1 .如果用户超过了connect_time或idle_time的会话资源限制,数据库就回滚当前事务,并结束会话。用户再次执行命令,数据库则返回一个错误,

       2 .如果用户试图执行超过其他的会话资源限制的操作,数据库放弃操作,回滚当前事务并立即返回错误。用户之后可以提交或回滚当前事务,必须结束会话。

       提示:可以将一条分成多个段,如1小时(1/24天)来限制时间,可以为用户指定资源限制,但是数据库只有在参数生效后才会执行限制。      

       Unlimited :分配该profile的用户对资源使用无限制,当使用密码参数时,unlimited意味着没有对参数加限制。

       Default :指定为default意味着忽略对profile中的一些资源限制,Default profile初始定义对资源不限制,可以通过alter profile命令来改变。

       Resource_parameter 部分:      

       Session_per_user :指定限制用户的并发会话的数目。

       Cpu_per_session :指定会话的CPU时间限制,单位为百分之一秒。

       Cpu_per_call :指定一次调用(解析、执行和提取)的CPU时间限制,单位为百分之一秒。

       Connect_time :指定会话的总的连接时间,以分钟为单位。

       Idle_time :指定会话允许连续不活动的总的时间,以分钟为单位,超过该时间,会话将断开。但是长时间运行查询和其他操作的不受此限制。

       Logical_reads_per_session :指定一个会话允许读的数据块的数目,包括从内存和磁盘读的所有数据块。

       Logical_read_per_call :指定一次执行SQL(解析、执行和提取)调用所允许读的数据块的最大数目。

       Private_sga :指定一个会话可以在共享池(SGA)中所允许分配的最大空间,以字节为单位。(该限制只在使用共享服务器结构时才有效,会话在SGA中的私有空间包括私有的SQL和PL/SQL,但不包括共享的SQL和PL/SQL)。

       Composite_limit :指定一个会话的总的资源消耗,以service units单位表示。Oracle数据库以有利的方式计算cpu_per_session,connect_time, logical_reads_per_session和private-sga总的service units

       Password_parameter 部分:       

       Failed_login_attempts :指定在帐户被锁定之前所允许尝试登陆的的最大次数。

       Password_life_time :指定同一密码所允许使用的天数。如果同时指定了 password_grace_time参数,如果在grace period内没有改变密码,则密码会失效,连接数据库被拒绝。如果没有设置password_grace_time参数,默认值unlimited将引发一个数据库警告,但是允许用户继续连接。

       Password_reuse_time 和password_reuse_max:这两个参数必须互相关联设置,password_reuse_time指定了密码不能重用前的天数,而password_reuse_max则指定了当前密码被重用之前密码改变的次数。两个参数都必须被设置为整数。

       1 .如果为这两个参数指定了整数,则用户不能重用密码直到密码被改变了password_reuse_max指定的次数以后在password_reuse_time指定的时间内。

       如:password_reuse_time=30,password_reuse_max=10,用户可以在30天以后重用该密码,要求密码必须被改变超过10次。

       2 .如果指定了其中的一个为整数,而另一个为unlimited,则用户永远不能重用一个密码。

       3 .如果指定了其中的一个为default,Oracle数据库使用定义在profile中的默认值,默认情况下,所有的参数在profile中都被设置为unlimited,如果没有改变profile默认值,数据库对该值总是默认为unlimited。

       4 .如果两个参数都设置为unlimited,则数据库忽略他们。

       Password_lock_time :指定登陆尝试失败次数到达后帐户的缩定时间,以天为单位。

       Password_grace_time :指定宽限天数,数据库发出警告到登陆失效前的天数。如果数据库密码在这中间没有被修改,则过期会失效。

       Password_verify_function :该字段允许将复杂的PL/SQL密码验证脚本做为参 数传递到create profile语句。Oracle数据库提供了一个默认的脚本,但是自己可以创建自己的验证规则或使用第三方软件验证。对Function名称,指定的是密码验证规则的名称,指定为Null则意味着不使用密码验证功能。如果为密码参数指定表达式,则该表达式可以是任意格式,除了数据库标量子查询。      

五、举例:

       1 .创建一个profile:

       create profile new_profile limit password_reuse_max 10 password_reuse_time 30;

       2 .设置profile资源限制:

       create profile app_user limit sessions_per_user unlimited cpu_per_session unlimited cpu_per_call 3000 connect_time 45 logical_reads_per_session default logical_reads_per_call 1000 private_sga 15k composite_limit 5000000;

       总的resource cost不超过五百万service units。计算总的resource cost的公式由alter resource cost语句来指定。      

       3 .设置密码限制profile:

       create profile app_users2 limit failed_login_attempts 5 password_life_time 60 password_reuse_time 60 password_reuse_max 5 password_verify_function verify_function password_lock_time 1/24 password_grace_time 10;             

       4 .将配置文件分配给用户:

              SQL> alter user dinya profile app_user;

用户已更改。

              SQL> alter user dinya profile default;

用户已更改。

分享到:
评论

相关推荐

    Oracle查询用户锁表

    Oracle 查询用户锁表是指在 Oracle 数据库中查询当前用户锁定的表,以便诊断和解决锁表问题。本文档将详细介绍如何查询用户锁表,并提供相关的代码。 一、查询用户锁表的必要性 在 Oracle 数据库中,锁表是指用户...

    oracle用户解锁三种方法.doc

    解决方法如下: 1. 启动DOS命令行,输入`sqlplus`,然后以`system`用户登录,密码是你安装Oracle时设置的密码。 2. 以DBA角色运行:`conn sys/sys as sysdba`。 3. 解锁`scott`用户:`alter user scott account ...

    oracle锁表及解锁

    在Oracle数据库管理中,锁是一种关键机制,用于控制多个用户对数据资源的并发访问,防止数据冲突和不一致。本文将深入探讨Oracle中检查锁表的方法以及如何对表进行解锁。 #### Oracle锁类型 Oracle中的锁主要有两...

    oracle用户密码过期问题解决方法

    解决方法如下: 1. 查看用户的profile: ``` sql&gt;SELECT username,PROFILE FROM dba_users; ``` 2. 查看"default"概要文件中`FAILED_LOGIN_ATTEMPTS`的设置: ``` sql&gt;SELECT * FROM dba_profiles s WHERE s....

    oracle解锁,死锁

    ### Oracle解锁与死锁解析 #### 一、Oracle解锁与死锁概述 在Oracle数据库管理过程中,解锁与处理死锁是...通过上述方法和技术,可以有效地管理和解决Oracle数据库中的解锁与死锁问题,从而提高系统的稳定性和效率。

    Oracle数据库的锁类型

    Oracle数据库作为企业级数据库解决方案的佼佼者,其锁机制是保障数据完整性和并发控制的关键技术之一。在Oracle数据库中,锁的使用是为了协调多个用户对同一数据资源的访问,防止数据在并发环境下出现不一致的情况。...

    解决Oracle 11g中scott用户默认被锁定的问题

    ### 解决Oracle 11g中scott用户默认被锁定的问题 ...通过上述方法,我们不仅解决了`scott`用户被锁定的问题,而且还了解了如何有效地管理和维护Oracle数据库中的用户账户。这对于日常维护和管理工作非常有帮助。

    Oracle数据库"记录被另一个用户锁住"解决方法(推荐)

    本文将深入探讨Oracle数据库中“记录被另一个用户锁住”的原因以及解决方法。 首先,理解为什么会出现记录被锁住的情况至关重要。在多用户环境下,数据库必须确保事务的隔离性,以防止并发操作导致的数据不一致。...

    oracle常见的锁查询和处理

    Oracle数据库的锁机制是保证数据并发访问安全的重要手段,它主要分为行级锁(TX锁)和表级锁(TM锁)。行级锁确保在多用户环境下,同一时间只有一个用户可以更新特定的数据行,而其他用户可以读取,但不能进行修改。...

    Oracle用户密码过期和用户被锁的解决方法

    本文将详细介绍这两种情况的产生原因以及解决方法。 一、用户密码过期 在Oracle 11g中,默认情况下,`default`概要文件设置了`PASSWORD_LIFE_TIME=180天`。这意味着用户密码的有效期是180天,一旦超过这个期限,...

    记录被另一个用户锁住解决方法

    在Oracle数据库环境中,当尝试删除数据时遇到“记录被另一个用户锁住”的错误,这通常是由于并发事务控制机制导致的。Oracle使用了一种称为多版本并发控制(MVCC)的机制来确保数据的一致性和完整性,其中包括行级...

    Oracle数据库解锁工具

    在Oracle数据库系统中,为了确保安全性,用户账户可能会因为多次尝试登录失败而被自动锁定。这种情况下,管理员通常需要通过SQL命令或者特定的管理工具来解锁这些账户。 标题中的“Oracle数据库解锁工具”指的可能...

    Oracle 锁机制问题详解

    本文将详细介绍 Oracle 中的锁机制原理及其解锁方法。 #### 二、锁机制的重要性 在任何多用户数据库应用中,最终都会出现两个或更多用户希望同时处理相同记录的情况。这种情况在逻辑上是不可能的,并且数据库必须...

    oracle数据库锁使用

    3. 行级锁(RS锁):行级锁是在特定行上进行的,通常在`UPDATE`语句执行时自动添加。它允许其他事务进行读、写操作,但不能加排它锁。其他事务可以在同一表上获取行级锁、共享行级排它锁、行级排它锁,但不能加排它...

    Oracle分区表和锁的应用

    - **死锁检测**:Oracle会自动检测并解决死锁情况,避免事务等待无限期。 - **多版本并发控制(MVCC)**:通过读一致性视图,允许多个事务并发运行,减少锁冲突。 4. **锁的应用场景**: - **并发事务**:在并发...

    Oracle的锁机制

    Oracle的锁机制是数据库管理系统中一个关键的组成部分,它的主要目标是确保在多用户环境下,数据的读一致性、完整性和并行性。Oracle提供了多种类型的锁来满足这些需求。 首先,按照是否独占,锁分为排它锁(X锁)...

    oracle解锁 oracle资料

    根据提供的文件信息,“oracle解锁 oracle资料”,我们主要探讨的是Oracle数据库中用户账户解锁的方法与相关知识点。Oracle数据库作为全球领先的关系型数据库管理系统之一,在企业级应用中占据着举足轻重的地位。...

    怎样快速查出Oracle 数据库中的锁等待

    ### 如何快速查出Oracle数据库中的锁等待 在Oracle数据库管理中,锁机制是保障数据一致性和...通过上述优化方案,不仅可以提高锁等待诊断的速度,还能更加准确地解决问题,从而有效提升数据库的整体性能和用户体验。

    快速查找oracle锁对象

    在Oracle数据库管理中,"快速查找Oracle锁对象"是一个关键任务,特别是在处理并发事务和解决性能问题时。当多个用户或进程同时访问同一资源时,可能会出现锁冲突,导致某些事务等待,影响数据库的正常运行。了解如何...

Global site tag (gtag.js) - Google Analytics