易截截图软件、单文件、免安装、纯绿色、仅160KB

ORACLE 锁的概念和模式

看了网上一些资料,发现对Oracle中的锁有多种分类方法,从各个不同的角度对锁进行分析。
预备知识:
DDL(DATABASE
DEFINITION LANGUAGE):数据库定义语言,如create table、drop table.....
DML(DATABASE
MODIFICATION LANGUAGE):数据库修改语言,如insert、delete、update......
ORACLE锁具体分为以下几类:
1. 按用户与系统划分,可以分为自动锁与显示锁
a)
自动锁:
当进行一项数据库操作时,缺省情况下,系统自动为此数据库操作获得所有有必要的锁。
b)
显示锁:
某些情况下,需要用户显示的锁定数据库操作要用到的数据,才能使数据库操作执行得更好,显示锁是用户为数据库对象设定的。
2.
按锁级别划分,可分为共享锁与排它锁
a)
共享锁:
共享锁使一个事务对特定数据库资源进行共享访问——另一事务也可对此资源进行访问或获得相同共享锁。共享锁为事务提供高并发性,但如拙劣的事务设计+共享锁容易造成死锁或数据更新丢失。
b)
排它锁:
事务设置排它锁后,该事务单独获得此资源,另一事务不能在此事务提交之前获得相同对象的共享锁或排它锁。
3.
按操作划分,可分为DML锁、DDL锁
a) DML锁又可以分为,行锁、表锁、死锁
i.
行锁:
当事务执行数据库插入、更新、删除操作时,该事务自动获得操作 表中操作行的排它锁。
ii.
表级锁:
当事务获得行锁后,此事务也将自动获得该行的表锁(共享锁),以防止其它事务进行DDL语句影响记录行的更新。事务也可以在进行过程中获得共享锁或排它锁,只有当事务显示使用LOCK
TABLE语 句显示的定义一个排它锁时,事务才会获得表上的排它锁,也可使用LOCK TABLE显示的定义一个表级的共享锁(LOCK
TABLE具体用法请参考相关文档)。
iii.
死锁:
当两个事务需要一组有冲突的锁,而不能将事务继续下去的话,就出现死锁。
如事务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,或者
使用其它工具杀掉死锁进程。
b) DDL锁又可以分为:排它DDL锁、共享DDL锁、分析锁
i.
排它DDL锁:
创建、修改、删除一个数据库对象的DDL语句获得操作对


相关文档:

sqlserver移植为Oracle笔记

Oracle笔记
l         关于TRUNC函数
   SELECT
   RELATED_ID ,
      DOC_ID ,
      CAT_ID ,
      CAT_CODE ,
      RELEASE_DATE ,
&n ......

Oracle 10g Statistic数据统计


Oracle 10g statistic数据统计,Oracle会根据这些统计信息来决定是走RBO(Rule-BasedOptimization),还是走CBO(Cost-BasedOptimization),会去选择哪种执行计划更划算,影响是否走相关的索引等.如果是CBO的话,它依靠准确的(或者说比较准确的)统计信息来产生优化的执行路径,如果没有做过统计,CBO也就没有做cost评估的依据 ......

Oracle中NVL2 和NULLIF的用法

NULL指的是空值,或者非法值。
NVL (expr1, expr2)->expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致
NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型
NULLIF (expr1, expr2) ->相等返回NULL,不等返回ex ......

Oracle 分页语句,存储过程

select * from (select t.*,rownum rn from (select * from emp) t where rownum<=10) where rn>=6;
创建分页结果集的游标
create or replace package fenyepackage as
type testcursor is ref cursor;
end fenyepackage;
创建分页存储过程
create or replace procedure fenye3(
tableName varchar2, --表名 ......

Oracle 语句级触发器

先构造一个表:
create table emp2(
id number(2),
name varchar(10),
currdate date,
action varchar2(1)
)
创建触发器:
create or replace trigger d_i_u_emp2
after insert or update or delete on mysort
begin
if inserting then
insert into emp2 values (12,'dog',sysdate,'i');
elsif deleting then ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号