一.解决锁表
当多个人同时对某个表进行操作时,很容易发生锁表现象。在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语句
在操作数据库时,在数据库中更新一条数据时,等待很长时间都不会执行结束
2530

被折叠的 条评论
为什么被折叠?



