①.、在sql语句后面加上for update可以获得行锁.
---
以上,希望对你有所帮助.
今天访问应用的时候,发现账号被锁定,登录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; ----不用换新密码,用户名和密码也不用加引号,这个命令会解锁账号,同时取消密码过期.
原因:oracle输入密码不正确,试了10次后,会自动锁定用户.
解决方法:使用sqlplus命令行解锁.
步骤:
①.、打开sqlplus窗口,用sysdba角色登录
? ? 用户已更改.
解锁成功啦!
Oracle数据库出现死锁的时候可以按照以下处理步骤加以解决:
第一步:尝试在sqlplus中通过sql命令进行删除,如果能够删除成功,则万事大吉!但通常情况下,出现死锁时,想通过命令行或者通过Oracle的管理工具删除有死锁的session,oracle只会将该session标记为killed,但无法清除掉,往往需要通过第二步在操作系统层级进行删除!
Connected?as?quik
SQL?select?xidusn,?object_id,?session_id,?locked_mode?from?v$locked_object;?--查死锁的对象,获取其SESSION_ID
XIDUSN?OBJECT_ID?SESSION_ID?LOCKED_MODE
----------?----------?----------?-----------
USERNAME?SID?SERIAL#
------------------------------?----------?----------
SPID
------------
第二步:进入操作系统进行删除进程,本示例的操作系统是IBM aix.
login:?root?--录入用户名
root's?Password:?--录入密码
*******************************************************************************
*?*
*?Please?see?the?README?file?in?/usr/lpp/bos?for?information?pertinent?to?*
*?this?release?of?the?AIX?Operating?System.?*
For?Windows,?at?the?DOS?Prompt:?orakill?sid?spid
这种情况叫死锁,与网络质量无关.
最大的可能就是程序的原因.
如A进程修改a表的某条记录,修改完a表后,会继续修改b表的某条记录,然后提交事务.
这个时候,B进程在修改b表的那条记录,修改完后要去修改a表的那条记录,然后提交事务.
这样,当A修改完a尚未修改b,B修改完b尚未修改a的时候,就可能出现B进程等待A进程提交事务,A进程又在等待B进程提交事务,两个进程一直在等.
所以死锁就出现了.