oracle行锁和表锁

行锁,是锁住具体某一个行或者几行,其他的数据是可以访问的
如果添加where条件,只会锁行,这个和索引没有关系,都是锁行(oracle测试是这样)
update ESTATE_DJ_AJXX t set ywh='3' where  id='1'

更新,这是表锁,这个表都不能访问,很危险,没有条件就会锁整表
update  ESTATE_DJ_AJXX t set ywh='3' 

删除,这是表锁,添加where就锁行
delete from ESTATE_DJ_AJXX 

查询,这是表锁,添加where就锁行
select * from ESTATE_DJ_AJXX  for update

新增不添加锁,不会锁行和锁表,但是在一主键是,可以能会锁行
insert  into ELASTIC_DATA_TRAN_LOG  (id,DATASOURCE_ID,TRAN_FLAG) values('1','22','1')

大家在测试用oracle来试,工具用pl/sql,他是手动提交事务的
查找锁,并释放
查找锁
select t2.username,
       t2.sid,
       t2.serial#,
       t3.object_name,
       t2.OSUSER,
       t2.MACHINE,
       t2.PROGRAM,
       t2.LOGON_TIME,
       t2.COMMAND,
       t2.LOCKWAIT,
       t2.SADDR,
       t2.PADDR,
       t2.TADDR,
       t2.SQL_ADDRESS,
       t1.LOCKED_MODE
  from v$locked_object t1, v$session t2, dba_objects t3
 where t1.session_id = t2.sid
   and t1.object_id = t3.object_id
 order by t2.logon_time;

杀掉进程
alter system kill session 'sid,seial#';

select * from user_tab_comments; -- 查询本用户的表,视图等。
select * from user_col_comments; -- 查询本用户的表的列名和注释。

查看表占用多大内存
Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name order by Sum(bytes) desc

上一篇:线程安全问题


下一篇:1022内容