- 浏览: 332099 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (212)
- JAVA (38)
- Ant (18)
- Hibernate (9)
- javascript (4)
- Struts1.x (1)
- Spring (2)
- CSS (1)
- Struts2.x (0)
- Unix (24)
- JMX (0)
- Webservice (0)
- Jboss (2)
- 设计模式 (7)
- xml (2)
- jsp (5)
- mysql (1)
- HTML (3)
- servlet (6)
- ajax (4)
- 数据库管理 (12)
- 数据结构 (1)
- JAVA多线程设计模式 (15)
- Oracle (30)
- shell视频 (1)
- quartz 集群 (0)
- redis (0)
- JVM (1)
最新评论
-
gaowei52306:
...
Ant常见属性解析--if-else -
myworkfirst:
${input.deploy.property.paths}& ...
Ant常见属性解析--foreach -
liuzl121:
顶一个 学习了
Cookie和Session专题 -
virtuallife:
正需要这个功能,试试~
Ant脚本中使用try-catch -
shutaodream:
,不错,学习
Oracle中to_char函数的用法
锁的概念 锁出现在数据共享的场合,用来保证数据的一致性。当多个会话同时修改一个表时,需要对数据进行相应的锁定。 锁有“只读锁”、“排它锁”,“共享排它锁”等多种类型,而且每种类型又有“行级锁”(一次锁住一条记录),“页级锁”(一次锁住一页,即数据库中存储记录的最小可分配单元),“表级锁”(锁住整个表)。 排它锁和共享锁 排它锁又称为写锁((Exclusive lock,简记为X锁)),若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。它防止任何其它事务获取资源上的锁,直到在事务的末尾将资源上的原始锁释放为止。在更新操作(INSERT、UPDATE 或 DELETE)过程中始终应用排它锁。 共享锁又称为读锁(Share lock,简记为S锁),若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。 共享锁:由非更新(读取)操作创建的锁。其他用户可以并发读取数据,但任何事务都不能获取数据上的排它锁,直到已释放所有共享锁。 若为“行级排它锁”,则除被锁住的行外,该表中其他行均可被其他的用户进行修改(Update)或删除(delete)。若为“表级排它锁”,则所有其他用户只能对该表进行查询(select)操作,而无法对其中的任何记录进行修改或删除。当程序对所做的修改进行提交(commit)或回滚(rollback)后,锁住的资源便会得到释放,从而允许其他用户进行操作。 有时,由于程序的原因,锁住资源后长时间未对其工作进行提交;或是由于用户的原因,调出需要修改的数据后,未及时修改并提交,而是放置于一旁;或是由于客户服务器方式中客户端出现“死机”,而服务器端却并未检测到,从而造成锁定的资源未被及时释放,影响到其他用户的操作。 如果两个事务,分别锁定一部分数据,而都在等待对方释放锁才能完成事务操作,这种情况下就会发生死锁。 隐式锁和显式锁 在Oracle数据库中,修改数据操作时需要一个隐式的独占锁,以锁定修改的行,直到修改被提交或撤销为止。如果一个会话锁定了数据,那么第二个会话要想对数据进行修改,只能等到第一个会话对修改使用COMMIT命令进行提交或使用ROLLBACK命令进行回滚撤销后,才开始执行。因此应养成一个良好的习惯:执行修改操作后,要尽早地提交或撤销,以免影响其他会话对数据的修改。 【训练1】 对emp表的SCOTT雇员记录进行修改,测试隐式锁。 步骤1:启动第一个SQL*Plus,以SCOTT账户登录数据库(第一个会话),修改SCOTT记录,隐式加锁。 UPDATE emp SET sal=3500 where empno=7788; 执行结果: 已更新 1 行。 步骤2:启动第二个SQL*Plus,以SCOTT账户登录数据库(第二个会话),进行记录修改操作。 UPDATE emp SET sal=4000 where empno=7788; 执行结果,没有任何输出(处于等待解锁状态)。 步骤3:对第一个会话进行解锁操作: COMMIT; 步骤4:查看第二个会话,此时有输出结果: 已更新 1 行。 步骤5:提交第二个会话,防止长时间锁定。 说明:两个会话对同一表的同一条记录进行修改。步骤1修改SCOTT工资为3500,没有提交或回滚之前,SCOTT记录处于加锁状态。步骤2的第二个会话对SCOTT进行修改处于等待状态。 步骤3解锁之后(即第一个会话对SCOTT的修改已经完成),第二个会话挂起的修改此时可以执行。最后结果为第二个会话的修改结果,即SCOTT的工资修改为4000。读者可以使用查询语句检查。 以上是隐式加锁,用户也可以使用如下两种方式主动锁定行或表,防止其他会话对数据的修改。表3-3是对行或表进行锁定的语句。 表的显式锁定操作语句 select fror update 锁定表行,防止其他会话对行的修改 lock table 锁定表,防止其它会话话对表的修改 锁定行 【训练1】 对emp表的部门10的雇员记录加显式锁,并测试。 步骤1:对部门10加显式锁: SELECT empno,ename,job,sal FROM emp WHERE deptno=10 FOR UPDATE; 结果为: EMPNO ENAME JOB SAL ------------------ -------------- ------------------ ------------------ 7782 CLARK MANAGER 2450 7839 KING PRESIDENT 5000 7934 MILLER CLERK 1300 步骤2:启动第二个SQL*Plus(第二个会话),以SCOTT账户登录数据库,对部门10的雇员CLARK进行修改操作。 UPDATE emp SET sal=sal+100 where empno=7782; 执行结果: 没有任何输出(处于等待解锁状态)。 步骤3:在第一个会话进行解锁操作: COMMIT; 步骤4:查看第二个会话,有输出结果: 已更新 1 行。 说明:步骤1对选定的部门10的雇员加锁,之后其他会话不能对部门10的雇员数据进行修改或删除。如果此时要进行修改或删除,则会处于等待状态。使用COMMIT语句进行解锁之后,如果有挂起的修改或删除操作,则等待的操作此时可以执行。 锁定表 LOCK语句用于对整张表进行锁定。语法如下: LOCK TABLE 表名 IN {SHARE|EXCLUSIVE} MODE 对表的锁定可以是共享(SHARE)或独占(EXCLUSIVE)模式。共享模式下,其他会话可以加共享锁,但不能加独占锁。在独占模式下,其他会话不能加共享或独占锁。 【训练1】 对emp表添加独占锁。 步骤1:对emp表加独占锁: LOCK TABLE emp IN EXCLUSIVE MODE; 结果为: 表已锁定。 步骤2:对表进行解锁操作: COMMIT; 说明:当使用LOCK语句显式锁定一张表时,死锁的概率就会增加。同样地,使用COMMIT或ROLLBACK命令可以释放锁。 注意:必须没有其他会话对该表的任何记录加锁,此操作才能成功
发表评论
-
索引与执行计划
2016-09-19 17:24 309引用 http://www.cnblogs.com/jiang ... -
SQL表连接查询(inner join、full join、left join、right join)
2016-06-16 16:59 0http://www.cnblogs.com/still-wi ... -
查看Oracle连接数
2012-06-02 14:47 1456OracleSQLJDBC.做数据库开发的时候,有时候会遇到连 ... -
Oracle 游标
2010-01-04 17:25 1680游标是SQL的一个内存工作区,由系统或用户以变量的形式定 ... -
ORACLE备份与恢复
2009-12-31 10:04 7961)ORACLE:使用sysdb ... -
ORACLE下面几个有用的存储过程
2009-12-30 16:51 642删除视图 create or replace proce ... -
查询Oracle当前用户使用的SID
2009-12-09 14:54 1348select instance_name,host_n ... -
Oracle中强行断开用户连接的方法
2009-12-09 14:50 3015首先查找目标用户的当前进程,注意是serial#而不是se ... -
char和varchar2的区别
2009-12-02 10:24 953区别: 1.CHAR的长度是固定的,而VARCHAR2 ... -
rowid解析
2009-12-02 10:09 883先对 rowid 有个感官认识: select ROWID ... -
sqlldr的用法
2009-11-23 16:41 3119sql loader可以把一些以文本格式存放的数据顺利的导入到 ... -
Oracle中时间的函数
2009-11-12 23:21 1072一、 常用日期数据格式 1.Y或YY或YYY 年的最后一位 ... -
Oracle中to_char函数的用法
2009-11-12 23:06 2738数字 to_char(1210.73, '9999.9') ... -
Oracle常用函数
2009-11-12 22:18 879*在一个字符串中搜索指定的字符,返回发现指定的字符的位置 ... -
Informix onstat 命令详解
2009-10-30 22:39 7125几个常用的onstat选项实例解释 · O ... -
Oralce表解锁
2009-10-29 20:53 1184ORACLE里锁有以下几种模式: 0:none 1:n ... -
快速删除ORACLE重复记录
2009-10-25 19:47 702*通过创建临时表来实现 create table temp ... -
Oracle中锁定用户以及解锁
2009-10-25 19:43 873操作用户必须有DBA权限 alter user test ... -
Oracle 操作表总结
2009-10-25 19:31 779/*============创建Customer表==== ... -
从一个表中读取的数据插入到另外一张表中的sql语句
2009-10-24 16:56 2892insert into 新表 select 字段1,字 ...
相关推荐
网页中单表格支持横纵表头锁定,网页中单表格支持横纵表头锁定
在JavaScript(JS)开发中,有时我们需要创建动态的、可操作的数据展示表格,尤其是在处理大量数据时,表头和特定列的锁定功能显得尤为重要。"JS锁定表头锁定列1.4"是一个针对这种情况的解决方案,它允许用户在滚动...
birt报表合并以及表头锁定功能的实现。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
在数据库管理中,表锁定和解锁是至关重要的概念,特别是在多用户环境中,它们确保了数据的一致性和完整性。本文将详细讲解如何在VC++(Visual C++)环境下,利用VS(Visual Studio)开发工具和DAO(Data Access ...
SQL Server数据库表锁定原理以及如何解除表的锁定是数据库管理中的关键话题,特别是对于保证数据一致性、并发控制和性能优化至关重要。在SQL Server中,锁定机制用于管理多个用户或进程同时访问同一数据时的冲突,...
网上虽然有很多表头锁定的代码, 但是运用起来确实不是很理想, 要么就是 不美观,要么就是兼容性太差。 此包里面的代码, 经过调试后兼容 IE8 以 上版本和 Google chromium 版本的浏览器,代码已调试过, 可直接...
为了解决这个问题,"表头锁定"技术应运而生,它使得表格在滚动时保持表头可见。本项目提供的是一种基于jQuery实现的"表头锁定js",通过简单地引入js文件,就能轻松实现这个功能。 jQuery是一款广泛使用的JavaScript...
Cognos 列表和交叉表锁定表头功能 Cognos 列表和交叉表锁定表头功能是指在报表页面中使用 HTML 控件添加 DIV 层,并设置 DIV 的宽度和高度,通过 JavaScript 获取页面中的列表或交叉表对象,列表和交叉表均为 table...
在网页设计中,"html行列表头锁定"是一种常见的需求,尤其在处理大数据表格时,为了保持用户在滚动查看表格内容时能始终看到列标题,就需要实现表头的固定锁定。这种技术通常应用于数据可视化、报表展示或者数据分析...
在Excel中,工作表锁定是为了保护数据不被未经授权的用户修改。然而,有时忘记保护密码或需要编辑受保护的工作表可能会带来困扰。本篇将详细解释如何解除Excel工作表的锁定,以及涉及到的相关知识点。 首先,我们...
在Excel中,工作表锁定是一种安全措施,允许用户保护数据免受未经授权的修改。当您忘记了设置的工作表保护密码或需要编辑受保护的文件时,可能会遇到无法访问的问题。本篇将详细介绍一种方法来解除Excel工作表的锁定...
解除EXCEL工作表锁定优质资料.doc
类似excel表头锁定效果的tabe表格 ,可以固定行、列。
很不错的GirdView表头锁定代码,简洁,有效、 当时也是找了很多,最后把自己实现了的,用文本方式 复制粘贴下来了。
如何解除excel工作表锁定.doc
通过css锁定table的表头和列。ie绝对有用,经本人测试!
它是HTML中的一个基本元素,用于组织数据,通常包括表头(`<thead>`)、主体(`<tbody>`)和可能的表脚(`<tfoot>`)。表头一般包含表格的列名,用于标识每一列的数据类型或含义。 在实现表头及列锁定时,主要涉及...