您的位置:首页 > 数据库 > Oracle

ORACLE 之 事务(ONE)

2013-04-02 21:08 134 查看

 

  oracle 之 事务(one)

      一)事务处理过程
  1、首先客户端要连接到服务器,服务器会分配相关进程来回应用户请求操作。
  2、服务器开始接收用户的sql操作,那么首先检查share pool,查看是否有包含该sql语句的共享sql区,如果有,那么会检查用户对所要操作的对象是否有相关权限,如果有那么sql共享区会处理该sql语句。如果没有sql共享区,那么会分配一个新的sql共享区,以便分析和处理sql语句。如果用户对所要操作的对象没有权限,则会提示报错出现无权限提示。
  3、锁定该sql语句所要操作的对象
  4、服务器进程处理sga中的数据,如果数据没有在sga中,那么将从数据文件中读取到sga的buffer cache中进行处理。
  5、在适当的时刻,lgwr进程会把redo  log  buffer 中的重做日志条目写入到联机日志中,同样,dbwr后台写入进程也会把相应的buffer  cache 中的数据写入到数据文件中。
  6、为该事物分配一个scn,该scn可以保证数据的一致性,用于并发控制和数据库的恢复。该scn会被记录到控制文件、数据文件头部、数据块头部以及重做日志中。
  7、lgwr后台进程会把所有的剩余的、已经缓冲的重做日志和scn写入到联机日志中去(改过程可以理解为commit和rollback),一旦写入成功,那么这个事务就被记录完成了,这次事务的操作结果都被永久的记录下来了,如果后续突然发生故障,那么也可以应用该日志进行事务的操作变更恢复数据。
  8、事务处理完成后,那么服务器会释放sql语句所占用的资源,并解除对操作对象的锁定操作。
  9、当事务是(提交事务或是回滚事务)成功就会提示相关成功操作内容。否则提示错误
  10、在适当的时刻,dbwr进程会把缓冲区中剩余的脏块全部写入到数据文件中。
  二)事务控制语句及功能
    1)  事务控制语句有:
               commit; 提交事务
               rollback;回滚事务
               savepoint 设置部分事务的保存点
               rollback savepoint ;回退到事务的保存点(事务还是没有完成)
               set  transaction;设置事务的属性
               set constraints ;设置可以延迟约束的检查机制
    2)事务的开始与结束
     事务没有明确的开始,连接到了数据库并执行一条sql语句那么就开始了事务。
      在发生如下情况的时候事务就结束了;
         执行commit或rollback语句完后,那么事务就结束了,但rollback savepoint是回到一部分事务时刻这个时候事务还是没有结束的。
         在执行dml语句失败的时候,事务就自动结束了。
         在设置了一条会自动提交的语句的时候,事务就结束了
     在一下情况事务会自动提交
       在进行ddl操作的时候,事务会自动提交
       设置 set autocommit on之后每次执行完dml语句,数据库都会自己提交事务。
       当disconnect数据库后,事务会自动回滚rollback,事务也就结束了。
   3)提交事务情况和回退全部事务情况
   4)设置事务保存点,回退部分事务
     测试如下:
 
SCOTT@orcl#select * from emp;

EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7369 SMITH                CLERK                    7902 17-12月-80            800                    20
7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30
7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         30
7566 JONES                MANAGER                  7839 02-4月 -81           2975                    20
7654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         30
7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30
7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10
7788 SCOTT                ANALYST                  7566 19-4月 -87           4000                    20
7839 KING                 PRESIDENT                     17-11月-81           5000                    10
7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         30
7876 ADAMS                CLERK                    7788 23-5月 -87           1100                    20

EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7900 JAMES                CLERK                    7698 03-12月-81            950                    30
7902 FORD                 ANALYST                  7566 03-12月-81           3000                    20
7000 MILLER               CLERK                    9000 23-1月 -82           2000                    10

已选择14行。

SCOTT@orcl#update emp set mgr=2000 where empno=7000;

已更新 1 行。

SCOTT@orcl#select * from emp;

EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7369 SMITH                CLERK                    7902 17-12月-80            800                    20
7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30
7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         30
7566 JONES                MANAGER                  7839 02-4月 -81           2975                    20
7654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         30
7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30
7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10
7788 SCOTT                ANALYST                  7566 19-4月 -87           4000                    20
7839 KING                 PRESIDENT                     17-11月-81           5000                    10
7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         30
7876 ADAMS                CLERK                    7788 23-5月 -87           1100                    20

EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7900 JAMES                CLERK                    7698 03-12月-81            950                    30
7902 FORD                 ANALYST                  7566 03-12月-81           3000                    20
7000 MILLER               CLERK                    2000 23-1月 -82           2000                    10

已选择14行。

SCOTT@orcl#savepoint sp1
2  ;
SCOTT@orcl#rollback to sp1;

回退已完成。

SCOTT@orcl#select * from emp;

EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7369 SMITH                CLERK                    7902 17-12月-80            800                    20
7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         30
7521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         30
7566 JONES                MANAGER                  7839 02-4月 -81           2975                    20
7654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         30
7698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30
7782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10
7788 SCOTT                ANALYST                  7566 19-4月 -87           4000                    20
7839 KING                 PRESIDENT                     17-11月-81           5000                    10
7844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         30
7876 ADAMS                CLERK                    7788 23-5月 -87           1100                    20

EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------
7900 JAMES                CLERK                    7698 03-12月-81            950                    30
7902 FORD                 ANALYST                  7566 03-12月-81           3000                    20
7000 MILLER               CLERK                    2000 23-1月 -82           2000                    10

已选择14行。

SCOTT@orcl#exit
从 Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开
oracle@oracle:~/test> sqlplus "/as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on 星期二 4月 2 22:51:52 2013

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

连接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SYS@orcl#conn scott/root
已连接。
SCOTT@orcl#select * from emp;

EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
SAL       COMM     DEPTNO
---------- ---------- ----------
7369 SMITH                CLERK                    7902 17-12月-80
800                    20

7499 ALLEN                SALESMAN                 7698 20-2月 -81
1600        300         30

7521 WARD                 SALESMAN                 7698 22-2月 -81
1250        500         30

EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
SAL       COMM     DEPTNO
---------- ---------- ----------
7566 JONES                MANAGER                  7839 02-4月 -81
2975                    20

7654 MARTIN               SALESMAN                 7698 28-9月 -81
1250       1400         30

7698 BLAKE                MANAGER                  7839 01-5月 -81
2850                    30

EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
SAL       COMM     DEPTNO
---------- ---------- ----------
7782 CLARK                MANAGER                  7839 09-6月 -81
2450                    10

7788 SCOTT                ANALYST                  7566 19-4月 -87
4000                    20

7839 KING                 PRESIDENT                     17-11月-81
5000                    10

EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
SAL       COMM     DEPTNO
---------- ---------- ----------
7844 TURNER               SALESMAN                 7698 08-9月 -81
1500          0         30

7876 ADAMS                CLERK                    7788 23-5月 -87
1100                    20

7900 JAMES                CLERK                    7698 03-12月-81
950                    30

EMPNO ENAME                JOB                       MGR HIREDATE
---------- -------------------- ------------------ ---------- --------------
SAL       COMM     DEPTNO
---------- ---------- ----------
7902 FORD                 ANALYST                  7566 03-12月-81
3000                    20

7000 MILLER               CLERK                    2000 23-1月 -82
2000                    10

已选择14行。

SCOTT@orcl#show autocommit;
autocommit OFF
SCOTT@orcl#


 注意:rollback to savepoint 不会结束本次事务。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: