select from table none insert into table RX
update table RX
delete from table RX
select from table for update of RS
lock table in row share mode RS
lock table in row exclusive mode RX
lock tablein share mode S
lock table in share row exclusive mode SRX
lock table in exclusive mode X
另外,这里还有所谓的锁兼容性的问题,比如一个RX类型的表级别锁上面,允许其他事务修改、删除其他行的数据,所以允许其他事务在该表上获得
RX类型的表级别锁,但是不允许X类型的表级锁,关于锁兼容性的问题具体可以查看Oracle相关文档,不再赘述。
DDL locks,DDL lock 用来保护schema下对象的定义,比如在编译一个procedure的过程中,在该过程中引用导的对象会自动获得DDL锁保护,以防止在创建或
编译过程中引用的对象被修改或删除。Oracle DDL锁分为exclusive DDL locks,share DDL locks和breakable parse locks.
Exclusive DDL locks:大多数的DDL操作都会获得exclusive DDL locks来保护对象,比如不允许会话一在alter table的过程中会话二drop table等等。
Share DDL locks:一些DDL操作获得share DDL lock用来防止DDL冲突,但是允许多个会话并发的的进行该类型的DDL操作。比如一个会话在Create procedure的过程中,
在该过程中应用到的所偶对象上会获得share DDL lock,其他会话也可以通过create procedure来访问会话一引用到的对象,但是不允许任何一个事务修改引用到的对象。
在下列语句中,会获得share DDL lock:AUDIT, NOAUDIT, COMMENT, CREATE [OR REPLACE] VIEW/
PROCEDURE/PACKAGE/PACKAGE BODY/FUNCTION/ TRIGGER, CREATE SYNONYM,
and CREATE TABLE (when the CLUSTER parameter is not included).
Breakable Parse Locks:SQL 语句在shared pool中在parse阶段对相应对象加breakable parse locks,以防止在parse阶段相应的对象被修改或删除,但是由于在parse阶段
你依然可以修改或删除相关的对象,所以叫做breakable parse locks.A parse lock is acquired during the parse phase of SQL statement execution and held
as long as the shared SQL area for that statement remains in the shared pool.