易截截图软件、单文件、免安装、纯绿色、仅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语句获得操作对


相关文档:

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 创建用户


oracle10g创建用户
Oracle10g 的创建用户名
1、   linux 下 oracle 的启动
以 oracle 身份登录  
启动    lsnrctl start
登录    sqplus /nolog
连接数据库    connect  /as   sysdba
启动数据库    startup
关闭数据库    s ......

Oracle 限制索引


 
 
限制索引是一些没有经验的开发人员经常犯的错误之一。在SQL中有很多陷阱会使一些索引无法使用。下面讨论一些常见的问题: 
 
 
1 使用不等于操作符(<>、!=)
 
 下面的查询即使在cust_rating列有一个索引,查询语句仍然执行一次全表扫描。
 
   ......

ORACLE中给表、列增加注释以及读取注释

在ORACLE中给表、列增加注释以及读取注释
1、给表填加注释:SQL>comment on table 表名 is '表注释";
2、给列加注释:SQL>comment on column 表.列 is '列注释';
3、读取表注释:SQL>select * from user_tab_comments where comments is not null;
4、读取列注释:SQL>select * from user_col_commnents wh ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号