oracle怎么释放锁,oracle行锁会自动释放嘛

oracle怎么彻底解决锁的问题

1、生成Kill Session语句

创新互联公司专注于企业全网营销推广、网站重做改版、阜阳网站定制设计、自适应品牌网站建设、成都h5网站建设商城网站定制开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为阜阳等各大城市提供网站开发制作服务。

select 'alter system kill session ''' || SID ||',' || SERIAL# || ''';' from

(

select distinct a.sid, a.Serial#, status, machine, LOCKWAIT, logon_time

from v$session a, v$locked_object b

where (a.status = 'ACTIVE' or a.status = 'INACTIVE')

and a.sid = b.session_id

and b.ORACLE_USERNAME='XYHISTEST'--加上用户名是避免把其他系统的会话也关闭,以免伤及无辜

)

2、批量执行第一步生成的语句

alter system kill session 'sid,serial#';

--alter system kill session '6976,33967';

3、查询oracle用户名,机器名,锁表对象

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# ;

/*或者

select s.SID, s.OSUSER, p.spid as OSPID, s.MACHINE, s.TERMINAL, s.PROGRAM

from v$session s, v$process p

where s.sid = 6  --session_id

and s.paddr = p.addr;

*/

4、查询是执行何sql语句导致锁表的

select b.sql_text

from v$session a, v$sql b

where a.sid = 6 --session_id

and a.SQL_ADDRESS = b.ADDRESS(+);

/*--或者

SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#,

l.os_user_name,s.machine, s.terminal,a.sql_text, a.action

FROM v$sqlarea a,v$session s, v$locked_object l

WHERE l.session_id = s.sid

AND s.prev_sql_addr = a.address

ORDER BY sid, s.serial#;

*/

如何解除Oracle 帐号锁定

一、问题

使用system账号登录oracle,系统提示

如何解除Oracle wbr帐号锁定(the wbraccount wbris wbrlocked)

二、解决办法

1、使用oracle用户登录系统

2、执行如下步骤:

3、$ sqlplus /nolog

4、SQL connect /as sysdba

Connected.

5、SQL alter user system account unlock;User altered.

三、锁定账号方法

1、SQL alter user system account lock;

User altered.

四、修改帐号口令

1、SQL ALTER USER system IDENTIFIED BY sysPasswd;

oracle如何解锁?

一些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 表被锁住 怎么解锁

一般先查询并找到被锁定的表,解锁代码如下:

--释放SESSION SQL: 

--alter system kill session 'sid, serial#'; 

ALTER system kill session '23, 1647';

网站名称:oracle怎么释放锁,oracle行锁会自动释放嘛
文章URL:https://www.cdcxhl.com/article20/hoijjo.html

成都网站建设公司_创新互联,为您提供静态网站企业建站响应式网站建站公司网站制作品牌网站设计

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站优化排名