Oracle 11g 学习笔记-13(事务、锁)

本文深入解析了事务管理的核心概念,包括事务的四大特性:原子性、一致性、隔离性和持久性。详细介绍了事务提交的三种方式:显式提交、自动提交和隐式提交,并解释了事务回滚的命令及其作用。此外,还探讨了回滚点的设置和应用,以及数据库中的锁机制,包括共享锁和独占锁,以及DML、DDL和内部锁的类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事务

1-事务的四个特性是什么?分别解释…
(1)原子性(Atomic)
(2)一致性(ConDemoltent)
(3)隔离性(Isolated)
(4)持久性(Durability)

2-事务的提交有那三种方式?分别说明…
提交事务是指把对数据库进行的全部操作持久性地保存到数据库中,这种操作通常使用COMMIT语句来完成。
事务的提交方式包括如下3种:

显式提交:使用commit命令使当前事务生效。

自动提交:在SQL *Plus里执行“set autocommit on;”命令。

隐式提交:除了显式提交之外的提交,如发出DDL命令、程序中止和关闭数据库等。

3-事务回滚命令是什么?有什么作用?
回退事务是指撤销对数据库进行的全部操作,Oracle利用回退段来存储修改前的数据,通过重做日志来记录对数据所做的修改。如果要回退整个事务,Oracle系统内部将会执行如下操作过程。

(1)首先使用回退段中的数据撤销对数据库所做的修改。

(2)然后Oracle后台服务进程释放掉事务所使用的系统资源。

(3)最后显示通知,告诉用户事务回退成功。

4-回滚点的作用?请用完整的sql场景来解释…设置2个回滚点…
回退点又称为保存点,即指在含有较多SQL语句的事务中间设定的回滚标记,其作用类似于调试程序的中断点。利用保存点可以将事务划分成若干小部分,这样就不必回滚整个事务,可以回滚到指定的保存点,有更大的灵活性。

回滚到指定保存点将完成如下主要工作。

回滚保存点之后的部分事务。

删除在该保存点之后建立的全部保存点,该保存点保留,以便多次回避。

解除保存点之后表的封锁或行的封锁。

SQL> select * from dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
SQL> savepoint sp1;

保存点已创建。
SQL> insert into dept values(50'宣传部','上海');

已创建 1 行。
SQL> savepoint sp2;

保存点已创建。
SQL> delete from dept where deptno=40;

已删除 1 行。
SQL> select * from dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        50 宣传部         上海
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
SQL> rollback to sp2;

回退已完成。
SQL> select * from dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        50 宣传部         上海
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
SQL> rollback to sp1;

回退已完成。
SQL> select * from dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

5-哪两种锁机制?分别解释…
在Oracle中,提供了两种锁机制。
(1)共享锁(share lock)。共享锁通过数据存取的高并行性来实现。如果获得了一个共享锁,那么用户就可以共享相同的资源。许多事务可以获得相同资源上的共享锁。例如,多个用户可以在相同的时间读取相同的数据。

(2)独占锁(exclusive lock)。独占锁防止共同改变相同的资源。假如一个事务获得了某一资源上的一个专用锁,那么直到该锁被解锁,其它的事务才能修改该资源,但允许对资源进行共享。例如,假如一个表被锁定在独占模式下,它并组织其它用户从同一个表得到数据。

所有的锁在事务期间被保持,事务中的SQL语句所做的修改只有在事务提交时才能对其他事务可用。Oracle在事务提交和回滚事务时,释放事务所使用的锁。

6-哪三种锁的类型?分别解释…
DML锁:为了保证并行访问数据的完整性。是执行DML时保护数据的锁。Row Lock(TX)保护特定行,Table Lock(TM)保护整个表。比如像一个表中添加数据时要保证该表不会被删除。

DDL锁:保护方案对象的定义,当执行DDL语句时,运用DDL锁会隐式的提交事务,自动获取过程所定义的方案的DDL锁。是在DDL操作中会自动为对象加DDL锁,从而保护这些对象不会被其他会话锁修改。例如,如果我执行了一个DDL操作 alter table t,表T上就会加一个排他DDL锁,这个排他DDL锁会防止其他会话得到这个表上的DDL锁和TM锁。

内部锁:包含内部数据库、内部结构,对于用户不可访问。

这节课之后,对于数据库的理解要再深入点了,往往数据库卡死会用到这里的知识点来分析和处理.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值