1,Oracle的锁有几种模式

ORACLE里锁有以下几种模式:0:none1:null 空2:Row-S 行共享(RS):共享表锁3:Row-X 行专用(RX):用于行的修改4:Share 共享锁(S):阻止其他DML操作5:S/Row-X 共享行专用(SRX):阻止其他事务操作6:exclusive 专用(X):独立访问使用

Oracle的锁有几种模式

2,Oracle数据库锁的常用类型有哪些

记录锁表锁
connectoracle con = new connectoracle(); connection connect = con.getconnection(); // 设置手动提交事务 connect.setautocommit(false); statement stmt = connect.createstatement(); // 锁表 stmt.addbatch("lock table t_symbol_code_fee in exclusive mode"); // 此处打上断点后,执行另一个类,你会发现,执行成功后并没有更改记录,因为表已经被锁定。只有提交事务后,testoracle中执行的修改才能生效。 stmt.executebatch(); // 提交后自动解锁,回滚时也会自动解锁 connect.commit(); stmt.close(); connect.close();

Oracle数据库锁的常用类型有哪些

3,查询oracle 数据库里有哪些表锁死

用如下语句查询锁死的表:select p.spid, a.serial#, c.object_name, b.session_id, b.oracle_username, b.os_user_name from v$process p, v$session a, v$locked_object b, all_objects c where p.addr = a.paddr and a.process = b.process and c.object_id = b.object_id;其中object_name就是被锁的表名,如图:
一般看日志去查找线索windows 一般在【ORACLE_BASE】\admin\【SID】\bdump 路径下死锁发生后,oracle会杀死其中一个process 进行解锁
死锁指的是a,b两个事务对同一对象进行dml或ddl操作(即修改表结构或者增删改数据),出现了相互等待被锁定的对象的情况,即类似于红绿灯十字路口红灯方向堵住路口,绿灯方向却红灯车辆挡在路口不能过去,这样无论红绿灯如何变化都无法通行。一般像oracle这样的dbms是有死锁检测的,然后把锁定对象抛出来按照预定规则处理或者让程序处理。 锁等待指的是a事务锁定了操作对象,而b事务也要对其进行dml或ddl操作(即修改表结构或者增删改数据)时,需要等待a事务完成。这个和死锁不同,只要a事务完成后,b事务就可以正常进行了。类似于正常的红绿灯十字路口通行状态:红灯方向就是等待锁释放的b事务,绿灯方向就是锁定路口的a事务。待红绿灯互换,则a事务执行完毕,b事务也就可以正常执行啦。

查询oracle 数据库里有哪些表锁死

4,Oracle中什么锁用于锁定表仅允许其他用户查询表中的行行不

ORACLE里锁有以下几种模式:0:1:null 空2:Row-S 行共享(RS):共享表锁,sub share 3:Row-X 行独占(RX):用于行的修改,sub exclusive 4:Share 共享锁(S):阻止其他DML操作,share5:S/Row-X 共享行独占(SRX):阻止其他事务操作,share/sub exclusive 6:exclusive 独占(X):独立访问使用,exclusive一般是自动实现的,譬如你用DDL语句,那个表肯定就是表锁定了,DML不能使这个表不能插入,只能用手工锁定这个表来实现。lock table table_name in exclusive mode NOWAIT
共享(SHARE, S):共享锁将锁定表,仅允许其他用户查询表中的行,但不允许插入、更新或删除行。多个用户可以同时在同一个表中放置共享锁,即允许资源共享,因此得名 “共享锁”。
select * from table for update
ALTER TABLE TABLE_ONE READ ONLY;想修改回来:ALTER TABLE TABLE_ONE READ WRITE;
java1102 是不是?
你好!ORACLE里锁有以下几种模式:0:none1:null 空2:Row-S 行共享(RS):共享表锁,sub share 3:Row-X 行独占(RX):用于行的修改,sub exclusive 4:Share 共享锁(S):阻止其他DML操作,share5:S/Row-X 共享行独占(SRX):阻止其他事务操作,share/sub exclusive 6:exclusive 独占(X):独立访问使用,exclusive一般是自动实现的,譬如你用DDL语句,那个表肯定就是表锁定了,DML不能使这个表不能插入,只能用手工锁定这个表来实现。lock table table_name in exclusive mode NOWAIT我的回答你还满意吗~~

5,SQL 各种锁

SQL Server数据库发生死锁时不会象ORACLE那样自动生成一个跟踪文件. 有时可以在[管理]->[当前活动] 里看到阻塞信息(有时SQL Server企业管理器会因为锁太多而没有响应). 设定跟踪1204: USE MASTER DBCC TRACEON (1204,-1) 显示当前启用的所有跟踪标记的状态: DBCC TRACESTATUS(-1) 取消跟踪1204: DBCC TRACEOFF (1204,-1) 在设定跟踪1204后,会在数据库的日志文件里显示SQL Server数据库死锁时一些信息, 但那些信息很难看懂,需要对照SQL Server联机丛书仔细来看. 根据PAG锁要找到相关数据库表的方法: DBCC TRACEON (3604) DBCC PAGE (db_id,file_id,page_no) DBCC TRACEOFF (3604) 请参考sqlservercentral.com上更详细的讲解. 从CSDN学到了一个找到死锁原因的方法. 我稍加修改, 去掉了游标操作并增加了一些提示信息,写了一个系统存储过程sp_who_lock.sql. 需要的时候直接调用: sp_who_lock 就可以查出引起死锁的进程和SQL语句. SQL Server自带的系统存储过程sp_who和sp_lock也可以用来查找阻塞和死锁, 但没有这里介绍的方法好用. 如果想知道其它tracenum参数的含义,请看www.sqlservercentral.com文章我们还可以设置锁的超时时间(单位是毫秒), 来缩短死锁可能影响的时间范围: 例如: use master seelct @@lock_timeout set lock_timeout 900000 -- 15分钟 seelct @@lock_timeout
◆锁的类别有两种分法: 1. 从数据库系统的角度来看:分为独占锁(即排它锁),共享锁和更新锁 ms-sql server 使用以下资源锁模式。 锁模式 描述 共享 (s) 用于不更改或不更新数据的操作(只读操作),如 select 语句。 更新 (u) 用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。 排它 (x) 用于数据修改操作,例如 insert、update 或 delete。确保不会同时同一资源进行多重更新。 意向锁 用于建立锁的层次结构。意向锁的类型为:意向共享 (is)、意向排它 (ix) 以及与意向排它共享 (six)。 架构锁 在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改 (sch-m) 和架构稳定性 (sch-s)。 大容量更新 (bu) 向表中大容量复制数据并指定了 tablock 提示时使用。 ◆共享锁 共享 (s) 锁允许并发事务读取 (select) 一个资源。资源上存在共享 (s) 锁时,任何其它事务都不能修改数据。一旦已经读取数据,便立即释放资源上的共享 (s) 锁,除非将事务隔离级别设置为可重复读或更高级别,或者在事务生存周期内用锁定提示保留共享 (s) 锁。 ◆更新锁 更新 (u) 锁可以防止通常形式的死锁。一般更新模式由一个事务组成,此事务读取记录,获取资源(页或行)的共享 (s) 锁,然后修改行,此操作要求锁转换为排它 (x) 锁。如果两个事务获得了资源上的共享模式锁,然后试图同时更新数据,则一个事务尝试将锁转换为排它 (x) 锁。共享模式到排它锁的转换必须等待一段时间,因为一个事务的排它锁与其它事务的共享模式锁不兼容;发生锁等待。第二个事务试图获取排它 (x) 锁以进行更新。由于两个事务都要转换为排它 (x) 锁,并且每个事务都等待另一个事务释放共享模式锁,因此发生死锁。 若要避免这种潜在的死锁问题,请使用更新 (u) 锁。一次只有一个事务可以获得资源的更新 (u) 锁。如果事务修改资源,则更新 (u) 锁转换为排它 (x) 锁。否则,锁转换为共享锁。 ◆排它锁 排它 (x) 锁可以防止并发事务对资源进行访问。其它事务不能读取或修改排它 (x) 锁锁定的数据。

文章TAG:数据库有哪些表锁  Oracle的锁有几种模式  
下一篇