问题:
plsql中执行一个DML操作(insert),此时查看该表已加锁,然后又执行一次DML操作(update/insert),发现还是能正常执行,没有理解锁表对DML的限制是在何种情况出现
测试:
1、create table test(name varchar2(100));
2、insert into test values('database1');
3、
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;
4、再次执行update,可以执行
update test set name = 'after'where name = 'database1';
5、此时若执行DDL语句,也可以执行
truncate table test;
疑惑:
1、何种情况下的锁表,会限制DML和DDL语句的执行?
2、在存在锁表的情况下,是否一定会限制DML操作(除select),还是有其他说法,比如数据量小的时候,不会限制?
3、执行一个DML语句(除select),不进行commit操作,这种锁表的影响怎么体现呢(或者有什么建议的测试方法,我自己验证下更好^_^)