oracle如何查询锁表
如何检测被锁住的Oracle存储过程及处理办法?
如何检测被锁住的Oracle存储过程及处理办法?
1.查看是哪一个存储过程被锁住
查V$DB_OBJECT_CACHE视图
select * from V$DB_OBJECT_CACHE where owner过程的所属用户 AND LOCKS!0
2.查看是哪一个sid,通过sid可以知道是哪一个session
查v$access视图
select * from v$access where owner过程的所属用户 and name刚才查到的过程名
3.查出sid和serial#
查v$session视图
select sid,serial#,paddr from v$session where sid刚才查到的sid;
查v$process视图
select spid from v$process where addr刚才查到的paddr;
4.杀进程
oracleupdate全表会锁表吗?
简单地说,锁是为了保证数据的一致性,锁不止存在于oracle,其他数据库一样有,只不过机制上可能大相径庭。
至于什么样的操作会锁表,其实锁的种类很多,你所说的锁表大概说的是行级锁——也就是事务锁吧。比如一个update语句,被update的行上会有锁——能阻塞其他事务对这些行进行修改的锁,虽然这时候这张表上也有表级锁,但这个表级锁并不影响其他事务对表中的其他行进行修改,只是会阻碍对这张表的DDL操作。
Oracle数据库中查出来的数据可以在表上直接修改吗?
1、如果你是想修改数据库里的字段并保存的话,可以使用:select t.*, from tablename t where。。。点击查询结果 上面的 有个小锁头的 按钮,变成开的就可以 ,编辑结果了,编辑后,点击 红钩的 按钮,以及页面上面的 确认保存更改数据的按钮(就是 有个绿色的小箭头,下面有个小圆柱--对应的红色的小箭头 是回滚按钮,不保存你的修改到数据库)。确认后,数据修改成功,并保存到数据库。 适合修改少量数据,且此操作不锁表,既操作同时不影响其他对表的查询修改等。
2、update语句update tablename set 字段1值,字段2值 where 。。 合适批量修改,锁表。
3、也可将表中的数据用SQL的语句整理好,插入新建的临时表,truncate原来的表的数据,再将临时表的数据插回原表。