在DBA的日常工作中,经常遇到为Oracle用户解锁的操作;这篇文章给出在命令行下进行Oracle用户解锁的操作方法,通过几条简单的解锁语句就能完成此项工作.下面是具体的过程:
默认的scott用户是被锁定的,先解锁就能登陆上了. 使用下面的语句解锁scott:
alter user scott account unlock;
解锁之后可能会要求你该密码:
alter user scott identified by tiger;
再登陆:
sqlplus scott/tiger
就能登陆了
Oracle锁定和解锁用户的命令
SQL conn /as sysdba
已连接.
//scott 用户在没有设定tieger默认密码时,登陆不上
锁定用户的方法:
SQL alter user test account lock;
用户已更改.
-------test用户登陆数据库,失败了.
C:\sqlplus test/test
ERROR:
Oracle用户解锁的方法:
SQL alter user test account unlock;
用户已更改.这样就完成了Oracle的用户解锁操作.
一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库.现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀.
①下面的语句用来查询哪些对象被锁:
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;
【注】以上两步,可以通过Oracle的管理控制台来执行.
select spid, osuser, s.program
from v$session s,v$process p
①.)在unix上,用root身份执行命令:
orakill sid thread
其中:
sid:表示要杀死的进程属于的实例名
①.、首先以DBA的身份登录Oracle10g.
①.、找到并进入运行窗口:(可以用windows+r快捷键哦)输入sqlplus命令:如图
查询锁表:SELECT l.session_id sid,
? ? s.serial#,
? ? l.locked_mode,
? ? l.oracle_username,
? ? l.os_user_name,
? ? s.machine,
? ? s.terminal,
? ? o.object_name,
? ? s.logon_time FROM? v$locked_object l,
? ? all_objects? ? ? o,
? ? v$session? ? ? ? s WHERE l.object_id = o.object_id ANd l.session_id = s.sid ORDER BY sid,
? ? s.serial#;
解锁:ALTER system KILL session 'sid,serial#';
查询锁住原因:SELECT b.sid oracleID,b.username 登录Oracle用户名,b.serial#,spid 操作系统ID,paddr,?
sql_text 正在执行的SQL,b.machine 计算机名 FROM v$process a, v$session b, v$sqlarea c?
今天访问应用的时候,发现账号被锁定,登录oracle后,发现很多用户都被锁定了.看下提示信息,原来是密码过期了导致账号被锁定.这里记录下这几个操作的常用命令,以方便以后自己的使用.
①查看用户的proifle是哪个,一般是default
SELECT username,PROFILE FROM dba_users;
SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
(1)alter user 用户名 identified by 原来的密码 account unlock; ----不用换新密码,用户名和密码也不用加引号,这个命令会解锁账号,同时取消密码过期.