实用故障例子

来源:互联网 发布:php购物网站 编辑:程序博客网 时间:2024/06/05 23:44

一.解决锁表

当多个人同时对某个表进行操作时,很容易发生锁表现象。在oracle数据库中,必须保持数据的一致性。当某个人对表数据进行修改时

,若忘记了提交,另一个人对这个表数据修改时,需要等到前面操作该表的人对数据进行提交。该操作将会一直处于等待状态,很可能导致锁表

1.oracle数据库的SYS用户查询那些会话被锁

sql>select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2

where t1.session_id=t2.sid order by t2.logon_time;

2.根据查询的sid来查询该会话的具体sql语句

select sql_text from v$session a,v$sqltext_with_newlines b where decode(a.sql_hash_value,0,prew_hash_value,sql_hash_value)=b.hash_value and

a.sid=&sid order by piece;

3.kill该会话

alter system kill session 'sid,serial#'

二.解决最耗cpu的sql语句

在系统中查看top 相关PID查看对应数据库会话的sid,serial#

sql>select s.sid,s.serial# from v$session s,v$process p where s.paddr=p.addr and p.spid='PID';

sql>select sql_text from v$sqltext a where a.hash_value = (select sql_hash_value from v$session b where b.sid='&sid') order by piece;

sql>alter system kill session 'sid,serial#';

系统杀死相关进程 kill -9 PID

三.处理引起等待的sql语句

在操作数据库时,在数据库中更新一条数据时,等待很长时间都不会执行结束




0 0
原创粉丝点击