本课程的内容属于oracle高级课程的范畴。内容偏重于理论,但它与数据库程序的开发和管理密切相关。此外,本课的部分内容已在前几章中讨论过。请注意理论与practice.affair整合





事务(事务)是用户定义的数据库操作序列,它是操作的一个组成部分,事务控制语句称为Tcl,它一般包括提交和回滚。

事务不是程序,事务和程序属于两个概念。在RDBMS中,事务可以有SQL语句、一组SQL语句或整个程序;应用程序通常包含多个事务。

事务是恢复和并发控制的基本单位。



显式事务和隐式事务



开始

插入classes_2(bjbh,bjmc,与同类产品比较描述,BZR,ssxb,bjrs,BZ)

值('888 ','测试类,测试类','萧峰斌','003 ',号',');

提交/回滚;

结束;



插入classes_2(bjbh,bjmc,与同类产品比较描述,BZR,ssxb,bjrs,BZ)

值('888 ','测试类,测试类','萧峰斌','003 ',号',');

提交/回滚;



交易的酸特性和终止模式





交易的酸特性和终止模式



破坏交易的酸特性的因素包括:

交叉经营不同交易时超过1。事务并行运行

2。操作期间强制终止事务。

事务的结束包括以下内容:



并行性和一致性

并行性和一致性是针对多用户和多事务的,而不是单用户和单事务数据库环境。其含义是在多用户和多事务环境下同时更新同一数据库表中的数据(包括更新、插入、删除)。

并行性意味着多个用户可以同时访问数据;

一致性意味着每个用户看到的数据是一致的。

为了保证数据的一致性,通常使用事务隔离机制(事务隔离模型),也称为事务序列化,以确保事务尽可能地串行化。



三例被阻止执行并行事务:

1。脏读:事务读取未提交的其他数据(脏数据)。

2。非重复读:交易重读以前读数据,发现另一个事务修改的数据提交。

三.空读:事务被重新执行并返回到条件行集数据。发现另一个事务已插入到满足要求的其他行中。

隔离层的读模式不可能提交读模式、重复读取模式、序列化模式、脏读。没有重复的阅读是不可能的。这不可能是不可能的。可能不可能看幽灵。



并行性的应用

前提是我们必须在多CPU服务器上执行。此时,可以显示并行性的好处。单CPU服务器的并行性会降低性能。







处理大型表的大数据查询(至少有100万行记录)

处理非常大的表查询

处理大型指标的建立、大容量数据的加载、汇总计算

在Oracle对象之间处理大量数据副本

在SMP(对称多处理机)或MPP(大规模并行处理)组和聚合(多台机器同时访问同一组磁盘和主数据库)的机器上处理查询。

处理存储在不同磁盘上的多个数据文件中的数据查询

处理需要大量辅助内存的查询,如按组、按顺序等

语句级读一致性和事务读一致性































Oracle的锁




什么是数据库锁





锁是一种机制,防止有害的相互作用之间的交易(如用户对象,系统对象,内存,数据库数据字典,常见的数据库表对象)。

不同类型的锁表示当前用户是否允许或阻止其他用户同时访问相同的资源,以确保系统数据的完整性、一致性和并行性不会被破坏。

锁是实现数据库并发控制的一项重要技术,当一个事务在一个数据对象上运行时,它向系统发送一个请求并锁定它,锁定后,事务控制数据对象。在事务释放锁之前,其他事务不能更新数据对象。



两种锁紧机构



共享锁(s锁)是通过数据访问的高度并行性实现的。具有共享锁的数据库对象可以由其他事务读取,但不能由其他事务进行修改。

互斥锁:X锁,也称为独占锁,用于防止同一锁同时共享同一资源。不能使用其他事务读取和修改具有独占锁的数据库对象。



锁保留在事务保留期间,用于防止交互行为,包括脏读、更新丢失和破坏性DLL。对事务中SQL语句的修改只能在提交或回滚事务后由其他公司使用。

在执行提交或回滚后,公司使用的锁被释放。



死锁





类型的锁



1。数据锁定(锁定)。

它是用来保证并行存取数据的完整性,防止DDL和DML操作同步冲突的破坏性作用。它是在Oracle主锁,包括表级锁(TM锁)和行级锁(TX锁,也被称为事务的锁)。

(1)TM锁











1。数据锁定(锁定)。

(2)工作机制of.tx锁DML锁

TX锁是一个事务独占锁行级行锁,在带有TX锁的记录之后,其他用户不能修改和删除记录。



当Oracle执行DML语句时,系统自动将桌上的,是被操作的一个TM型锁。当TM锁了,系统会自动将TX型锁,和loclocks实际上锁定的数据线锁标志。这样,当检查TX锁相能力交易前锁定,你不需要再检查锁标志。只检查TM锁模式的兼容性大大提高了system.tm锁SX,效率包括SS、S、X等车型,以0-6在数据库中,不同类型的TM锁是由不同的SQL操作。



1。数据锁定(锁定)

(2)工作机制of.tx锁DML锁

在数据线,只有X锁(互斥锁),在Oracle数据库中,TX锁时获得的交易发起首次DML语句,这是保持到事务被提交或回滚。当两个或多个会话执行DML语句表的记录,第一次会议上,会议记录,其余的都在等待状态。当第一次提交时,TX锁被释放,其他会话可以锁定。

当Oracle数据库发生TX锁等待,如果不及时处理,它会使Oracle数据库挂起或导致死锁的发生,导致ora-60错误。这些现象会有很大的危害的实际应用,如长时间unresponse和大量的交易失败。

2。字典锁(锁定)

当DDL命令发出后,Oracle会自动添加DDL锁被处理的对象,从而防止对象被其他用户修改。当DDL命令结束,DDL锁released.ddl锁定不能明确要求,只有当对象结构修饰或引用,DDL锁加的对象。例如,创建或编译存储过程时,DDL锁添加到引用的对象。当视图被创建,DDL锁添加到参考表,等等。

执行DDL命令之前,Oracle会自动添加一个隐式的提交命令,然后执行具体的DDL命令,并自动添加一个隐式的提交命令的DDL命令后执行。事实上,甲骨文将它转换成一个数据字典表的DML操作时执行DDL命令。例如,当我们发送一个DDL命令创建一个表,Oracle将



2。字典锁(锁定)

插入的表名为数据字典表选项卡美元,而插入的列名称和柱型到山口table.therefore美元,隐式提交命令需要被添加到DDL命令提交DML操作的数据字典表。即使DDL命令失败,它将发送一个提交命令。DDL锁分为三种类型:





他的DDL锁(DDL锁)
大多数DDL操作将DDL锁在被操纵的对象,这样的对象可以修改其他用户在执行DDL命令。当DDL锁添加到对象,没有其他的DDL锁可以被添加到对象的DDL命令。如果是在桌子上,其他的过程不能修改里面的数据。

2。字典锁(锁定)

共享DDL锁(共享DDL锁)
此对象用于保护DDL不是由其他用户进程更新,但其它过程允许添加共享DDL锁的对象。如果DDL命令在桌子上,其他进程可以修改数据在桌子里面在同一时间。例如,当我们发出一个创建视图命令创建一个视图,一个共享的DDL命令添加到表,视图中引用(表也被称为基本表)。换句话说,创建视图时,其他用户不能修改基表的结构,但可以更新kibiuri数据。

三.内部锁

内部锁保护内部数据库结构,如对用户不可见的数据文件。

2。字典锁(锁定)

破碎的分辨率锁定(解析锁定)

SQL PL / SQL游标或程序代码缓存在共享池会解析引用对象锁定。如果我们问题的DDL命令修改一个对象的结构、对象相关的解析锁在共享池坏了,结果在SQL PL / SQL程序指针或引用对象无效。下一次相同的SQL语句执行一次,它需要被重新解析,这就是所谓的SQL语句重新加载。破碎的分辨率锁定并不妨碍其他DDL锁,并解析锁也将被打破如果DDL锁冲突解析锁。



死锁的解决方案

1。查找锁







3、杀死操作系统进程

orakill实例名称的操作系统进程ID

orakill oralearn 2444

Oralearn是数据库的SID,244是找到该第二步



数据的完整性

数据完整性约束的常用规则包括:

1.not空

2。独特的关键

三.主要关键词

4。外键

5。检查项目检查

由于此部分已插入前一节,因此该部分不再是多余的。



要点与练习

练习

1。什么是事务,请解释显式和隐式事务是什么。

2个四个特征是什么。交易并行事务的主要用途是什么,请给出四个实例。

三.事务性阅读一致性包括三种类型,并列出它们之间的相似点和不同点。

4。什么是数据库锁,包括两个大类型包括哪些类型的TM锁

5。结合表级和行级锁来说明数据锁的工作机制。

6。什么是僵局死锁解决的步骤是什么

7。为什么数据库设计不建议大量使用外键来确保数据的完整性