网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.ORACLE在HP-UX下的系列问题处理(.
.Oracle listener静态注册和动态注.
.Oracle技巧:用v$session_longop.
.从oracle 数据库读取日期时间,并.
.关于数据库调优Node1.
.搞垮他的数据库--谈Oracle安全.
.在T-SQL中实现Oracle的MINUS集合.
.Oracle新的Linux应用环境测试标准.
.RedHat Linux7.2 上 Oracle 8i R.
.详细讲解Oracle数据库10g RMAN的.
.Oracle在Linux下的安装.
.oracle热物理备份步骤.
.用OMF来简化数据库管理.
.Oracle中实现大量数据快速转移数.
.某个数据文件损坏,如何打开数据.
.Oracle数据操作和控制语言问题详.
.ORACLE学习笔记--性能优化三.
.什么是邮件转发(mail relay).
.Oracle数据库中如何直接运行OS命.
.安装文档ORACLE9i for sun solar.

Oracle锁简单介绍

发表日期:2008-2-9



  Oracle数据库是现今数据库领域应用最广泛的,同时它也是一个庞大的系统,全面了解它、玩转它不但需要一定的理论知识,更需要开发经验与工程经验。本人是ORACLE一爱好者,以下是本人对ORACLE锁的一些经验,希望能与大家共同分享。

预备知识:DDL(DATABASE DEFINITION LANGUAGE):数据库定义语言,如create table、drop table..... DML(DATABASE MODIFICATION LANGUAGE):数据库修改语言,如insert、delete、update...... 参考资料:Oracle8 Administrator"s Guide, Release 8.0 Oracle8 Tuning, Release 8.0 ORACLE锁具体分为以下几类:

1.按用户与系统划分,可以分为自动锁与显示锁

自动锁:当进行一项数据库操作时,缺省情况下,系统自动为此数据库操作获得所有有必要的锁。

显示锁:某些情况下,需要用户显示的锁定数据库操作要用到的数据,才能使数据库操作执行得更好,显示锁是用户为数据库对象设定的。

2.按锁级别划分,可分为共享锁与排它锁

共享锁:共享锁使一个事务对特定数据库资源进行共享访问——另一事务也可对此资源进行访问或获得相同共享锁。共享锁为事务提供高并发性,但如拙劣的事务设计+共享锁轻易造成死锁或数据更新丢失。

排它锁:事务设置排它锁后,该事务单独获得此资源,另一事务不能在此事务提交之前获得相同对象的共享锁或排它锁。

3.按操作划分,可分为DML锁、DDL锁

+DML锁又可以分为,行锁、表锁、死锁

-行锁:当事务执行数据库插入、更新、删除操作时,该事务自动获得操作表中操作行的排它锁。

-表级锁:当事务获得行锁后,此事务也将自动获得该行的表锁(共享锁),以防止其它事务进行DDL语句影响记录行的更新。事务也可以在进行过程中获得共享锁或排它锁,只有当事务显示使用LOCK TABLE语句显示的定义一个排它锁时,事务才会获得表上的排它锁,也可使用LOCK TABLE显示的定义一个表级的共享锁(LOCK TABLE具体用法请参考相关文档)。

-死锁:当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就出现死锁。

如事务1在表A行记录#3中有一排它锁,并等待事务2在表A中记录#4中排它锁的释放,而事务2在表A记录行#4中有一排它锁,并等待事务1在表A中记录#3中排它锁的释放,事务1与事务2彼此等待,因此就造成了死锁。死锁一般是因拙劣的事务设计而产生。

死锁只能使用SQL下:alter system kill session "sid,serial#";或者使用相关操作系统kill进程的命令,如UNIX下kill -9 sid,或者使用其它工具杀掉死锁进程。

+DDL锁又可以分为:排它DDL锁、共享DDL锁、分析锁

-排它DDL锁:创建、修改、删除一个数据库对象的DDL语句获得操作对象的 排它锁。如使用alter table语句时,为了维护数据的完成性、一致性、合法性,该事务获得一排它DDL锁。

-共享DDL锁:需在数据库对象之间建立相互依靠关系的DDL语句通常需共享获得DDL锁。

如创建一个包,该包中的过程与函数引用了不同的数据库表,当编译此包时,该事务就获得了引用表的共享DDL锁。

-分析锁:ORACLE使用共享池存储分析与优化过的SQL语句及PL/SQL程序,使运行相同语句的应用速度更快。一个在共享池中缓存的对象获得它所引用数据库对象的分析锁。分析锁是一种独特的DDL锁类型,ORACLE使用它追踪共享池对象及它所引用数据库对象之间的依靠关系。当一个事务修改或删除了共享池持有分析锁的数据库对象时,ORACLE使共享池中的对象作废,下次在引用这条SQL/PLSQL语句时,ORACLE重新分析编译此语句。

4.内部闩锁

内部闩锁:这是ORACLE中的一种非凡锁,用于顺序访问内部系统结构。当事务需向缓冲区写入信息时,为了使用此块内存区域,ORACLE首先必须取得这块内存区域的闩锁,才能向此块内存写入信息。
上一篇:Oracle的分区管理 人气:665
下一篇:Oracle索引原理 人气:1983
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐