在DBA的日常工作中,经常遇到为Oracle用户解锁的操作;这篇文章给出在命令行下进行Oracle用户解锁的操作方法,通过几条简单的解锁语句就能完成此项工作。下面是具体的过程:
创新互联是一家专业提供银川企业网站建设,专注与做网站、网站设计、成都h5网站建设、小程序制作等业务。10年已为银川众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
默认的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:
ORA-28000: the account is locked
Oracle用户解锁的方法:
SQL conn /as sysdba
SQL alter user test account unlock;
用户已更改。这样就完成了Oracle的用户解锁操作。
原因:默认Oracle10g的scott不能登陆。
解决:
(1)conn
sys/sys
as
sysdba;//以DBA的身份登录
(2)alter
user
scott
account
unlock;//
然后解锁
(3)conn
scott/tiger
//弹出一个修改密码的对话框,修改一下密码就可以了
具体操作步骤如下:
C:
sqlplus
请输入用户名:sys
输入口令:sys
as
sysdba
//注意:在口令这里输入的密码后面必须要跟上
as
sysdba
才可以。
SQL
alter
user
scott
account
unlock;
用户已更改.
SQL
commit;
提交完成.
SQL
conn
scott/tiger
更改scott口令
新口令:tiger
重新键入新口令:tiger
口令已更改
已连接。
另一种方法:你打开命令提示符,不要登录直接输入下面:
sqlplus
sys/tiger
as
sysdba
以dba方式进入sys帐户;
alter
user
scott
account
unlock;
给scott用户解锁;
第一种情况下,以system账户+自己安装时设置的密码,登录SQL Plus,
然后使用命令“alter user scott account unlock;”来解锁。
解完以后,使用下面的命令来查看:"select username,account_status from dba_users;",
可以看到scott账户已经解锁,但是状态还是“expired”(密码过期)的意思。
没关系,再输入这样的命令“alter user scott identified by tiger;”,就给其赋了一个新的口令。
退出,以scott/tiger登录即可。
在第二种情况下,使用Windows的控制台(程序|运行,输入cmd打开)。在命令行下,输入sqlplus/nolog,回车,出现SQL命令提示符,然后按下面的顺序输入命令:
SQLconn/as sysdba
SQLalter user scott account unlock;
SQLdisconnect
SQLconn scott/tiger@oral;
这时会提示密码已经过期,请输入新的口令。然后输入两次新定义的口令分别回车确认即为scott账户赋予了新的口令。打开SQL Plus,再以scott账户就可以登录了。
1、找到并进入运行窗口:(可以用windows+r快捷键哦)输入sqlplus命令:如图
2、进入新窗口后使用scott/tiger用户和密码进行登录会发现登录不成功:如图
3、这时我们可以使用system用户进行登录,应为此用户的权限排第二,并且密码我们已经在安装时输入了了,所以是可以登录进入的:如图
4、system登录成功之后就可以使用命令给用户进行解锁了:如图
5、最后再用scott/tiger用户时,你可以神奇的发现此时能连接成功了:如图
一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。
1.下面的语句用来查询哪些对象被锁:
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;
2.下面的语句用来杀死一个进程:
alter system kill session '24,111'; (其中24,111分别是上面查询出的sid,serial#)
【注】以上两步,可以通过Oracle的管理控制台来执行。
3.如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:
select spid, osuser, s.program
from v$session s,v$process p
where 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。
例:c:orakill orcl 12345
今天访问应用的时候,发现账号被锁定,登录oracle后,发现很多用户都被锁定了。看下提示信息,原来是密码过期了导致账号被锁定。这里记录下这几个操作的常用命令,以方便以后自己的使用。
1.查看用户的proifle是哪个,一般是default
SELECT username,PROFILE FROM dba_users;
2.查看对应的概要文件(如default)的密码有效期设置
SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
3.将概要文件(如default)的密码有效期由默认的180天修改成“无限制”(修改之后不需要重启动数据库,会立即生效)
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
4.对已经锁定和过期的账号进行解锁
(1)alter user 用户名 identified by 原来的密码 account unlock; ----不用换新密码,用户名和密码也不用加引号,这个命令会解锁账号,同时取消密码过期。
(2)alter user 用户名 account unlock; ----这个只会解锁账号,而不会取消密码过期,所以建议使用上面的口令