ORACLE账户解锁定的方法
- 格式:docx
- 大小:32.46 KB
- 文档页数:2
Oracle锁处理、解锁⽅法1、查询锁情况select sid,serial#,event,BLOCKING_SESSION from v$session where event like '%TX%';2、根据SID查询具体信息(可忽略)select sid,serial#,username,machine,blocking_session from v$session where sid=<SID>;3、杀掉会话#根据1和2中查到的SID和SERIAL# 定位会话,并杀掉ALTER SYSTEM DISCONNECT SESSION '<SID>,<SERIAL>' IMMEDIATE;或ALTER SYSTEM KILL SESSION '<SID>,<SERIAL>';附件:#查询阻塞脚本col waiting_session for a20col lock_type for a15col mode_requested for a10col mode_held for a10col lock_id1 for a10col lock_id2 for a10set linesize 120set pagesize 999with dba_locks_cust as(SELECT inst_id||'_'||sid session_id,DECODE (TYPE,'MR', 'Media Recovery','RT', 'Redo Thread','UN', 'User Name','TX', 'Transaction','TM', 'DML','UL', 'PL/SQL User Lock','DX', 'Distributed Xaction','CF', 'Control File','IS', 'Instance State','FS', 'File Set','IR', 'Instance Recovery','ST', 'Disk Space Transaction','TS', 'Temp Segment','IV', 'Library Cache Invalidation','LS', 'Log Start or Switch','RW', 'Row Wait','SQ', 'Sequence Number','TE', 'Extend Table','TT', 'Temp Table',TYPE)lock_type,DECODE (lmode,0, 'None', /* Mon Lock equivalent */1, 'Null', /* N */2, 'Row-S (SS)', /* L */3, 'Row-X (SX)', /* R */4, 'Share', /* S */5, 'S/Row-X (SSX)', /* C */6, 'Exclusive', /* X */TO_CHAR (lmode))mode_held,DECODE (request,0, 'None', /* Mon Lock equivalent */1, 'Null', /* N */2, 'Row-S (SS)', /* L */3, 'Row-X (SX)', /* R */4, 'Share', /* S */5, 'S/Row-X (SSX)', /* C */6, 'Exclusive', /* X */TO_CHAR (request))mode_requested,TO_CHAR (id1) lock_id1,TO_CHAR (id2) lock_id2,ctime last_convert,DECODE (block,0, 'Not Blocking', /* Not blocking any other processes */1, 'Blocking', /* This lock blocks other processes */2, 'Global', /* This lock is global, so we can't tell */TO_CHAR (block))blocking_othersFROM gv$lock),lock_temp as(select * from dba_locks_cust),lock_holder as(select w.session_id waiting_session,h.session_id holding_session,w.lock_type,h.mode_held,w.mode_requested,w.lock_id1,w.lock_id2from lock_temp w, lock_temp hwhere h.blocking_others in ('Blocking','Global')and h.mode_held != 'None'and h.mode_held != 'Null'and w.mode_requested != 'None'and w.lock_type = h.lock_typeand w.lock_id1 = h.lock_id1and w.lock_id2 = h.lock_id2),lock_holders as(select waiting_session,holding_session,lock_type,mode_held,mode_requested,lock_id1,lock_id2from lock_holderunion allselect holding_session, null, 'None', null, null, null, nullfrom lock_holderminusselect waiting_session, null, 'None', null, null, null, nullfrom lock_holder)select lpad(' ',3*(level-1)) || waiting_session waiting_session,lock_type,mode_requested,mode_held,lock_id1,lock_id2from lock_holdersconnect by prior waiting_session = holding_sessionstart with holding_session is null;总结以上所述是⼩编给⼤家介绍的Oracle锁处理、解锁⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
oracle加锁⽅式,oracle中加锁与解锁oracle中的数据在并发操作时,为了防⽌错误的发⽣可以进⾏记录或者数据库表的加锁操作。
当锁操作完成时可以进⾏解锁操作。
数据库中加锁有两种⽅式,独占模式和共享模式。
1.独占模式,不允许其他会话以任何⽅式共享锁定资源,当进⾏数据库数据修改时可以使⽤这种模式。
2.共享模式,允许在数据访问时,并发共同访问,但是当修改数据时上升为独占模式。
锁分为⾏级锁和表级锁,⾏级锁是锁定某些⾏记录,表级锁是锁定整张表。
1.⾏级锁。
insert update delete (隐式加⾏锁) select...for update(显⽰加⾏锁,共享模式) select * from emp where deptno=30 for update select * from A where id=2 for update skip locked update emp set ename='Joke' where empno=7499;在释放锁之前其他⽤户只能对进⾏数据查询,不能对数据进⾏insert、delete和update。
假如有其他⽤户要锁定同⼀资源:可以使⽤wait ⼦句对锁的等待时间控制如:在另⼀⽤户中:select * from emp where deptno=30 for update wait 2 (等待2秒如2秒钟还未释放资源,系统将会给出提⽰信息。
2.表级锁。
共享模式(in share mode) 共享更新模式(in share update mode) 排他锁模式锁定表的通⽤语法: lock table 表名 in ;1) 共享模式 不允许其他⽤户插⼊,更新和删除⾏,多个⽤户可以同时在同⼀表上设置共享锁,这样设置锁的多个⽤户都只能执⾏查询 lock table emp in share mode;2)共享更新模式(in share update mode) 允许多个⽤户同时锁定表的不同⾏, 允许其他⽤户进⾏DML(insert update delete select)操作 , 除了已锁定的⾏ 如: lock table emp in share update mode; select * from emp where deptno=30 for update //锁定的⾏其他⽤户不能delete ,update 部门30的雇员信息 其他⽤户可以查看锁定的⾏: select * from emp where deptno=303)排他锁模式(限制性强) 不允许其他⽤户插⼊,更新和删除⾏, 允许查看数据,但只有⼀个⽤户可以在表中放置排他锁 lock table emp in exclusive mode;解锁:(1)锁表查询的代码有以下的形式: select count(*) from v$locked_object; select * from v$locked_object;(2)查看哪个表被锁 select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id; (3)查看是哪个session引起的 select ername,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;(4)杀掉对应进程 执⾏命令:alter system kill session'1025,41'; 其中1025为sid,41为serial#.。
Oracle查询死锁并解锁的终极处理⽅法⼀些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。
现在提供⼀种⽅法解决这种问题,那就是在ORACLE中杀不掉的,在OS⼀级再杀。
1.下⾯的语句⽤来查询哪些对象被锁:复制代码代码如下:select object_name,machine,s.sid,s.serial#from v$locked_object l,dba_objects o ,v$session swhere l.object_id = o.object_id and l.session_id=s.sid;2.下⾯的语句⽤来杀死⼀个进程:复制代码代码如下:alter system kill session '24,111';(其中24,111分别是上⾯查询出的sid,serial#)【注】以上两步,可以通过Oracle的管理控制台来执⾏。
3.如果利⽤上⾯的命令杀死⼀个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os⼀级再杀死相应的进程(线程),⾸先执⾏下⾯的语句获得进程(线程)号:复制代码代码如下:select spid, osuser, s.programfrom v$session s,v$process pwhere s.paddr=p.addr and s.sid=24(24是上⾯的sid)4.在OS上杀死这个进程(线程):1)在unix上,⽤root⾝份执⾏命令:#kill -9 12345(即第3步查询出的spid)2)在windows(unix也适⽤)⽤orakill杀死线程,orakill是oracle提供的⼀个可执⾏命令,语法为:orakill sid thread其中:sid:表⽰要杀死的进程属于的实例名thread:是要杀掉的线程号,即第3步查询出的spid。
oracle解锁账户语句
Oracle数据库中,账户被锁定时,用户无法登录该账户。
这种情况下,可以通过解锁账户来恢复用户的登录权限。
解锁账户的语句如下:
ALTER USER <用户名> ACCOUNT UNLOCK;
其中,<用户名>为被锁定的账户的用户名。
执行该语句后,账户将被解锁,用户可以重新登录该账户。
需要注意的是,如果账户被锁定的原因是由于密码错误次数过多导致的,则需要先重置该账户的密码,然后再执行解锁账户的语句。
具体操作如下:
1.使用sys用户登录Oracle数据库
2.执行以下语句,将被锁定账户的密码重置为新密码:
ALTER USER <用户名> IDENTIFIED BY <新密码>;
3.执行以下语句,解锁该账户:
ALTER USER <用户名> ACCOUNT UNLOCK;
以上就是Oracle解锁账户的语句及操作步骤。
在实际使用中,需要根据实际情况进行操作。
- 1 -。
Oracle修改System密码并解锁
修改System密码:
1. 进⼊cmd命令界⾯(快捷键是win+R)。
2.
修改管理员⽤户密码(⼀):在命令界⾯输⼊sqlplus “/as sysdba”即可以管理员⾝份链接成功。
3.
修改管理员⽤户密码(⼆):在SQL命令界⾯输⼊
alter user system identified by 123456;
此命令的意思是将管理员⽤户system的密码设为123456.
4.
修改普通⽤户密码(⼀):需要以管理员⽤户先链接成功,在命令界⾯输⼊sqlplus “/as sysdba”以管理员⾝份链接成功。
5.
修改普通⽤户密码(⼆):在SQL命令界⾯输⼊
alter user username identified by 123456;
此命令的意思是将管理员⽤户username(之前创建过username这个⽤户)的密码设为123456.
1.
此时便可以通过管理员⽤户和普通⽤户链接数据库了。
重新打开cmd命令,在命令界⾯输⼊sqlplus,提⽰输⼊⽤户名,然后再输⼊修改好的⼝令密码即可。
解锁
1. 我们在做Oracle监听程序测试时,发现帐户已经被锁定。
2. 在数据库安装电脑上,运⾏窗⼝中输⼊cmd,调出命令提⽰
3. 在命令提⽰符下⾯,⽤管理员⾝份登⼊到数据库
sqlplus / as sysdba
4. 输⼊解锁命令后回车
alter user Scott account unlock;
5. 看见⽤户已更改的字样,表⽰我们的命令已成功执⾏。
oracle解锁数据的方法
在Oracle数据库中,解锁数据的方法取决于锁定的类型和锁定的来源。
下面是一些常见的解锁数据的方法:
1. 手动提交或回滚事务:如果数据被锁定是因为当前事务没有完成,则可以手动提交或回滚事务,以释放锁定的数据。
可以使用以下命令提交事务:
```
COMMIT;
```
或者使用以下命令回滚事务:
```
ROLLBACK;
```
2. 等待其他事务完成:如果数据被其他事务锁定,则可以等待其他事务完成并释放锁定的数据。
3. 杀死会话进程:如果无法等待其他事务完成或无法识别锁定的来源,可以使用以下命令杀死锁定会话进程:
```
ALTER SYSTEM KILL SESSION 'sid, serial#';
```
其中'sid'和'serial#'是锁定会话的标识符,在V$SESSION视图中可以找到。
4. 重启数据库实例:如果数据长时间被锁定或无法解锁,可以考虑重启整个数据库实例来释放锁定的数据。
但是,这种解锁方法应该在其他方法失败后才使用,并且需要小心处理,避免数据丢失或影响其他正在进行的操作。
需要注意的是,解锁数据可能会引起数据一致性问题,必须谨慎使用。
在进行任何解锁操作之前,建议先备份数据以防止意外情况发生。
ORA-28000: the account is locked-的解决办法ORA-28000: the account is locked第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba; 第二步:选择myjob,查看users;第三步:选择system,右击点击“编辑”;第四步:修改密码,把“帐户被锁住”的勾去掉;第五步:点击“应用”再点击“关闭”;第六步:重新登录就可以通过验证了;第二种ALTER USER username ACCOUNT UNLOCK;第三种在plsql developer中要是以scott/tiger登录时提示ora-28000 the account is locked。
解决办法:新装完Oracle10g后,用scott/tiger测试,会出现以下错误提示:oracle10g the account is lockedoracle10g the password has expired原因:默认Oracle10g的scott不能登陆。
解决:(1)conn sys/sys as sysdba; //以DBA的身份登录(2)alter user scott account unlock;// 然后解锁(3)conn scott/tiger //弹出一个修改密码的对话框,修改一下密码就可以了在运行里面输入cmd在DOS模式下输入sqlplus,以system用户名登录,密码是刚装oracle时自己填写的密码orcl,登录进去以后。
SQL> conn sys/sys as sysdba; (分号是必须的但是我是以system登录的所在这不应该写connsys/sys as sysdba应该写conn system/orcl as sysdba;)Connected.SQL> alter user scott account unlock;User altered.SQL> commit;Commit complete.SQL> conn scott/tiger//请输入新密码,并确认后OKPassword changedConnected.这时再到plsql developer里面以scott/tiger登录就可以了。
标题:Oracle 解除账户锁定规则一、背景介绍Oracle数据库作为一种重要的关系型数据库管理系统,广泛应用于各行各业的信息管理和数据存储中。
在使用Oracle数据库的过程中,经常会碰到账户被锁定的情况,这给数据库管理人员带来了一定的困扰。
为了解决这一问题,Oracle提供了一定的解除账户锁定规则。
二、账户锁定的原因1. 输入错误超过一定次数2. 管理员手动锁定账户3. 其他未知原因导致的账户锁定三、账户锁定的解除规则1. 通过重置密码解除锁定当账户因为密码输入错误次数过多被锁定时,可以通过重置密码解除锁定。
具体操作步骤如下:(1)使用管理员账户登入Oracle数据库;(2)执行ALTER USER username ACCOUNT UNLOCK语句,将被锁定的账户解锁;(3)执行ALTER USER username IDENTIFIED BY new_password语句,重置该账户的密码。
2. 等待一定时间自动解锁当账户被锁定时,可以选择等待一定时间让系统自动解锁账户。
Oracle默认的自动解锁时间为30分钟,当超过这个时间后,系统会自动解锁账户。
3. 通过SYS用户解锁在特殊情况下,可以使用SYS用户来解锁被锁定的账户。
操作步骤如下:(1)使用SYS用户登入Oracle数据库;(2)执行ALTER USER username ACCOUNT UNLOCK语句,将被锁定的账户解锁。
四、账户锁定规则的设置和管理1. 设置账户锁定策略为了保障数据库的安全性,可以设置账户锁定策略,限制密码错误次数并设置账户锁定时间。
可以通过以下SQL语句设置账户锁定策略:ALTER PROFILE profile_name LIMIT F本人LED_LOGIN_ATTEMPTS n;ALTER PROFILE profile_name LIMIT PASSWORD_LOCK_TIME t;2. 监控账户锁定情况数据库管理员应当定期查看和监控数据库中账户的锁定情况,及时发现并处理异常情况,保障数据库的正常运行。
oracle锁表查询和解锁方法Oracle数据库提供了多种锁表查询和解锁方法,主要包括以下几种:1.查询锁表的方法:-查询数据库中的锁表信息:可以使用`V$LOCKED_OBJECT`视图来查询数据库中当前被锁定的对象和会话信息。
-查看表的锁信息:可以使用`DBA_LOCK`视图来查看指定表被锁定的信息,包括锁定的用户、锁定的模式、锁定的操作等。
-查看表上的锁信息:可以使用`DBA_OBJECTS`视图来查询指定表上的锁信息,包括锁定的用户、锁定的模式、锁定的操作等。
2.解锁表的方法:- 杀死会话:使用`ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;`语句可以立即终止指定会话。
其中,`sid`和`serial#`是要终止会话的标识符。
- 释放表锁:使用`ALTER TABLE table_name ENABLE TABLE LOCK`语句可以释放指定表的锁。
其中,`table_name`是要释放锁的表名。
- 修改会话状态:使用`UPDATE V$SESSION SET STATUS = 'KILLED' WHERE SID = sid AND SERIAL# = serial#;`语句可以将指定会话的状态修改为`KILLED`,从而间接释放表锁。
其中,`sid`和`serial#`是要释放锁的会话的标识符。
3.避免锁表的方法:-尽量使用短事务:短事务可以减少对资源的占用时间,从而降低锁表的风险。
-尽量使用较小的粒度锁:使用较小的粒度锁可以减少锁表的范围,提高并发性能。
-合理调整事务隔离级别:使用合适的事务隔离级别可以在保证数据一致性的前提下减少锁表的发生。
-分表、分区表:将大表进行分表或分区,可以减少锁表的范围,提高并发性能。
4.监控锁表情况:- 监控锁表的工具:可以使用Oracle提供的监控工具,如AWR Report、ASH Report、Enterprise Manager等,来实时监控锁表情况。
ORACLE账户锁定解决办法如果数据库中某个账户登录时,提示被锁定
则如果想使用此账户登录时,解决办法参考下文。
●操作系统版本为:
Microsoft Windows[版本5.2.3790]
(C) 版权所有1985-2003 Microsoft Corp.
●解决方法:
C:\Documents and Settings\Administrator>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三6月24 10:43:39 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> alter user system account unlock;
用户已更改。
SQL> exit
从OracleDatabase 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
C:\Documents and Settings\Administrator>sqlplus
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三6月24 10:45:26 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
请输入用户名: system
输入口令:
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL>
至此账户解锁成功。
另外一种方法:
同理,如果想锁定此用户的话:
在系统账户下,及sys账户下,
Sqlplus / as sysdba
SQL>ALTER USER scott ACCOUNT LOCK;
用户已更改。