网站建设资讯

NEWS

网站建设资讯

oracle的锁如何杀掉 oracle杀锁语句

oracle怎么彻底解决锁的问题

1、生成Kill Session语句

创新互联于2013年成立,是专业互联网技术服务公司,拥有项目网站设计制作、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元襄汾做网站,已为上家服务,为襄汾各地企业和个人服务,联系电话:028-86922220

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如何解锁?

一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。\x0d\x0a1.下面的语句用来查询哪些对象被锁:\x0d\x0aselectobject_name,machine,s.sid,s.serial#\x0d\x0afromv$locked_objectl,dba_objectso,v$sessions\x0d\x0awherel.object_id=o.object_idandl.session_id=s.sid;\x0d\x0a2.下面的语句用来杀死一个进程:\x0d\x0aaltersystemkillsession'24,111';(其中24,111分别是上面查询出的sid,serial#)\x0d\x0a【注】以上两步,可以通过Oracle的管理控制台来执行。\x0d\x0a3.如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:\x0d\x0aselectspid,osuser,s.program\x0d\x0afromv$sessions,v$processp\x0d\x0awheres.paddr=p.addrands.sid=24(24是上面的sid)\x0d\x0a4.在OS上杀死这个进程(线程):\x0d\x0a1)在unix上,用root身份执行命令:\x0d\x0a#kill-912345(即第3步查询出的spid)\x0d\x0a2)在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:\x0d\x0aorakillsidthread\x0d\x0a其中:\x0d\x0asid:表示要杀死的进程属于的实例名\x0d\x0athread:是要杀掉的线程号,即第3步查询出的spid。\x0d\x0a例:c:orakillorcl12345

如何杀掉ORACLE里面长期没有释放的锁?

如果一个数据库insert update delete操作很长时间没有反应,就可能出现了没有正常释放的锁。

可以用以下SQL语句杀掉没有正常释放的锁:

如何杀死oracle死锁进程?

1.查哪个过程被锁

查V$DB_OBJECT_CACHE视图:SELECT*FROMV$DB_OBJECT_CACHEWHEREOWNER='过程的所属用户'ANDLOCKS!='0';

2. 查是哪一个SID,通过SID可知道是哪个SESSION.

查V$ACCESS视图:SELECT*FROMV$ACCESSWHEREOWNER='过程的所属用户'ANDNAME='刚才查到的过程名';

3. 查出SID和SERIAL#

查V$SESSION视图:SELECTSID,SERIAL#,PADDRFROMV$SESSIONWHERESID='刚才查到的SID'查V$PROCESS视图:SELECTSPIDFROMV$PROCESSWHEREADDR='刚才查到的PADDR';

4. 杀进程(1).先杀ORACLE进程:ALTERSYSTEMKILLSESSION'查出的SID,查出的SERIAL#';(2).再杀操作系统进程:KILL-9刚才查出的SPID或ORAKILL刚才查出的SID刚才查出的SPID方法二:经常在oracle的使用过程中碰到这个问题,所以也总结了一点解决方法:)1)查找死锁的进程:sqlplus"/assysdba"SELECT

s.username,l.

OBJECT_ID

,l.SESSION_ID,s.SERIAL#,l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESSFROMV$LOCKED_OBJECTl,V$SESSIONSWHERE

l.SESSION_ID=

S.SID;2)kill掉这个死锁的进程:altersystemkillsession‘sid,serial#’;(其中sid=

l.session_id)3)如果还不能解决,

selectpro.spidfromv$sessionses,v$processprowhereses.sid=XXandses.paddr=pro.addr;其中sid用死锁的sid替换。

如何杀死oracle死锁进程

首先,oracle死锁进程是后台自动发现自动杀掉的。

其次,如果想要杀掉oracle的进程,可以杀程序的前台进程,也可以杀数据库的用户连接进程,也可以在数据库中执行alter system kill session 'sid,serial'去杀

orcal数据库表被锁了怎么解锁??

1、在做Oracle监听程序测试时,发现帐户已经被锁定。

2、在数据库安装电脑上,点击开始打开运行窗口。

3、在运行窗口输入CMD,调出命令提示符界面。

3、在命令提示符下面,用管理员身份登入到数据库sqlplus / as sysdba。

4、输入解锁命令alter user Scott account unlock后回车。

5、看见用户已更改的字样,表示命令已成功执行。

6、再切换到监听程序验证,原来的ora-28000帐户被锁定的提示已经不存在了。用户解锁成功。


文章名称:oracle的锁如何杀掉 oracle杀锁语句
文章链接:http://cdweb.net/article/hiioeh.html