- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
---- 在大型数据库系统中,为了保证数据的一致性,在对数据库中的数据进行操作时,系统会进行对数据相应的锁定。 ---- 这些锁定中有只读锁、排它锁,共享排它锁等多种类型,而且每种类型又有行级锁(一次锁住一条记录),页级锁(一次锁住一页,即数据库中存储记录的最小可分配单元),表级锁(锁住整个表)。 ---- 若为行级排它锁,则除被锁住的该行外,该表中其它行均可被其它的用户进行修改(Update)或删除(delete)操作,若为表级排它锁,则所有其它用户只能对该表进行查询(select)操作,而无法对其中的任何记录进行修改或删除。当程序对所做的修改进行提交(commit)或回滚后(rollback)后,锁住的资源便会得到释放,从而允许其它用户进行操作。 ---- 但是,有时,由于程序中的原因,锁住资源后长时间未对其工作进行提交;或是由于用户的原因,如调出需要修改的数据后,未及时修改并提交,而是放置于一旁;或是由于客户服务器方式中客户端出现死机,而服务器端却并未检测到,从而造成锁定的资源未被及时释放,影响到其它用户的操作。 ---- 因而,如何迅速地诊断出锁住资源的用户以及解决其锁定便是数据库管理员的一个挑战。 ---- 由于数据库应用系统越来越复杂, 一旦出现由于锁资源未及时释放的情况,便会引起对一相同表进行操作的大量用户无法进行操作,从而影响到系统的使用。此时,DBA应尽量快地解决问题。但是,由于在Oracle 8.0.x 中执行获取正在等待锁资源的用户名的查询语句 select a.username, a.sid, a.serial#, b.id1 from v$session a, v$lock b where a.lockwait = b.kaddr ---- 十分缓慢,(在 Oracle 7.3.4中执行很快),而且,执行查找阻塞其它用户的用户进程的查询语句 select a.username, a.sid, a.serial#, b.id1 from v$session a, v$lock b where b.id1 in (select distinct e.id1 from v$session d, v$lock e where d.lockwait = e.kaddr) and a.sid = b.sid and b.request = 0 ---- 执行得也十分缓慢。因而,往往只好通过将 v$session 中状态为inactive(不活动)并且最后一次进行操作时间至当前已超过 20 分钟以上(last_call_et20*60 秒)的用户进程清除,然后才使得问题得到解决。 ---- 但是,这种方法实际上是把婴儿与脏水一起泼掉。因为,有些用户的进程尽管也为inactive,并且也已有较长时间未活动,但是,那是由于他们处于锁等待状态。 ---- 因而,我想出了一个解决办法。即通过将问题发生时的 v$lock,v$session视图中的相关记录保存于自己建立的表中,再对该表进行查询,则速度大大提高,可以迅速发现问题。经实际使用,效果非常好。在接到用户反映后,几秒钟即可查出由于锁住资源而影响其它用户的进程,并进行相应的处理。 ---- 首先,以 dba 身份(不一定为system)登录入数据库中,创建三个基本表:my_session,my_lock, my_sqltext,并在将会进行查询的列上建立相应的索引。语句如下: rem 从 v$session 视图中取出关心的字段,创建 my_session 表,并在查询要用到的字段上创建索引,以加快查询速度 drop table my_session; create table my_session as select a.username, a.sid, a.serial#, a.lockwait, a.machine,a.status, a.last_call_et,a.sql_hash_value,a.program from v$session a where 1=2 ; create unique index my_session_u1 on my_session(sid); create index my_session_n2 on my_session(lockwait); create index my_session_n3 on my_session(sql_hash_value); ---- rem 从 v$lock 视图中取出字段,创建 my_lock 表,并在查询要用到的字段上创建索引,以加快查询速度 drop table my_lock; creat
您可能关注的文档
- oracle的安装.doc
- Oracle数据库绑定变量特性及应用.doc
- oracle数据库笔记.doc
- oracle数据库的性能调整.doc
- Oracle数据库简介.doc
- Oracle数据库学习总结.doc
- Oracle数据库中分区表的操作方法简介.doc
- Part8-运行时环境.ppt
- SIM卡-GSM加密算法A3_A5_A8.doc
- SQL server总结(无存储过程).doc
- 初中生亲子阅读与阅读策略训练研究论文.docx
- 高中数学课堂如何提升学生空间想象力的教学策略研究论文.docx
- 初中英语课堂互动模式下的教学策略与教学评价改革与实践研究论文.docx
- 小学美术教育中创新思维培养路径研究论文.docx
- 绿色化学实验在初中化学教学中的应用与优化策略论文.docx
- 小学生早餐饮食习惯对视力保护作用的研究与饮食习惯教育论文.docx
- 初中生艺术社团活动对学生社会责任感培养的实证研究论文.docx
- 小学数学课堂学生数学学习心理辅导策略创新研究论文.docx
- 劳动教育在学生劳动教育理论研究中的地位论文.docx
- 小学英语单元整体教学目标与多元智能理论的结合实践论文.docx
文档评论(0)