一,commit

  01,commit干了啥

   commit 就是提交的意思.也就是当你把99%的东西都做好了,然后你执行最后一步的操作...再commit前的话你可能啪啪啪啪啪,敲了几百条sql DML或者DML语句. 然后你可能自己select 或许desc一下,看见了自己的成果,但是其他用户任然看不到.当你comiit执行一下后,其他用户才能看见.

  02. commit的发生了什么

    1)服务器为每个COMMIT产生一个SCN。使改变永久化;
    2)LGWR进程将日志缓冲区数据并带有SCN一起写到重做日志文件;
    3)服务器释放表级和行级锁;
    4)用户被提示COMMIT完成;
    5)服务器使事务已完成。

  03.实例

     A.B个连接进数据库服务器,数据内容都一致显示

 SQL> select * from t1;

 A       B
---------- ----------
aaaaa aaaaa
12345 67890

     A连接里面操作

SQL> insert into t1 values('qqq','qqq');
SQL> insert into t1 values('qqq','qq121'); 2 row created.

      B.连接查看会发现数据没有变化

      提交数据,commit

       ----------

       刚刚吃炸鸡(感谢霍哥的炸鸡 QaQ )

       吃的太开心数据忘记提交了, 

       ------------ 

 

  

  数据没了,这就是没有commit的后果 ,大家一定要记住

  重新来一遍

  

  commit

  提交完成后另外一个肯定可以查到了

二, rollback

  01,rollback

    回退的意思,比如你用update更新表中一条记录,这时你查询这个表时,则发现表已经更新(注意这个指示你觉得更新了,再没有commit之前);再rollback后,你再查询表时,发现表还是更新之前的样子。等同于你再写word文档的时候,哪里错了,习惯来一个CRTL+Z 撤销.但是加入你保存了文档并且退出去了,重新打开,你就不能撤销操作了

  02,rollback 处理的顺序

    1)服务器进程不做任何的改变。
    2)服务器释放表级和行级锁。
    3) 服务器使事务已完成。

  03,实例

SQL> insert into t1 values('qqq','qqq');  ---插入数据

1 row created.

SQL> select * from t1;   ----第一次查询

A       B
---------- ----------
aaaaa aaaaa
12345 67890
qqq qqq SQL> savepoint a ---保存一个回滚点
2 ; Savepoint created. SQL> insert into t1 values('qqq','qq121');---- 再次做插入 1 row created. SQL> savepoint b; ----保存第二个回滚点 Savepoint created. SQL> delete t1 where A = 'qqq'; ---- 删除 数据 2 rows deleted. SQL> select * from t1; ----查询的时候发现没有了 A B
---------- ----------
aaaaa aaaaa
12345 67890 SQL> rollback to B; ---回滚操作 Rollback complete. SQL> select * from t1; ---再次查询,回滚成功 A B
---------- ----------
aaaaa aaaaa
12345 67890
qqq qqq
qqq qq121    

三,两者之间的事宜  

   01,两者只对insert、update、delete(DML数据操纵语句)操作有效

   02,先commit再rollback,则rollback相当于不起作用。

   03,若现delete再select再rollback,,则rollback会撤回delete操作。

   04,其他用户查询你的表示看到的是最后一次commit之后的表,而你看到的是最新操作的表。

oracle 基础知识(五)--回滚(commit和rollback)的更多相关文章

  1. Oracle基础知识汇总一

    Oracle基础知识 以下内容为本人的学习笔记,如需要转载,请声明原文链接   https://www.cnblogs.com/lyh1024/p/16720759.html oracle工具: SQ ...

  2. 图说Oracle基础知识(一)

    本文主要对Oralce数据库操作的基础知识进行一下梳理,以便进行归纳总结.适用于未使用过Oracle数据库的读者,或需要学习Oracle数据库方面的基础知识.如有不足之处,还请指正. 关于SQL介绍的 ...

  3. oracle 基础知识(十五)----高水位线

    一,oracle的逻辑存储管理 ORACLE的逻辑存储管理,分4个粒度:表空间,段,区和块. ## 块 粒度最小的存储单位,现在标准的块大小是8K,ORACLE每一次I/O操作也是按块来操作的,也就是 ...

  4. Oracle 基础知识入门

    前记: 近来项目用到Oracle数据库,大学学了点,后面基本忘记得差不多了,虽然基本语法跟sql 差不多,但是oracle知识是非常多的. 这里简单说点基础知识,希望后面补上更多的关于ORacle知识 ...

  5. oracle基础知识过一遍(原创)

    用户.角色.权限.表空间 create tablespace test1_tablespace datafile ‘test1file.dbf’ size 10m; create temporary  ...

  6. oracle 基础知识(三)--SCN

    一,SCN的介绍     SCN(System Change Number),也就是通常所说的系统改变号或者系统提交号,是数据库中非常重要的一个数据结构. SCN用以标识数据库在某个确切时刻提交的版本 ...

  7. [转载]Oracle基础知识

    一.oracle安装过程略 二.sys用户和system用户 (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限 默认密码是change_onins ...

  8. oracle基础知识(六)----spfile与pfile

    一, 认识参数文件      Oracle中的参数文件是一个包含一系列参数以及参数对应值的操作系统文件.它们是在数据库实例启动时候加载的,决定了数据库的物理 结构.内存.数据库的限制及系统大量的默认值 ...

  9. oracle基础知识语法大全

    ORACLE支持五种类型的完整性约束NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值.CHECK (检查)--检查在约束中 ...

随机推荐

  1. 扫描工具——Meterpreter

    Meterpreter是Metasploit框架中的一个杀手锏,通常作为利用漏洞后的攻击载荷所使用,攻击载荷在触发漏洞后能够返回给用户一个控制通道.当使用Armitage.MSFCLI或MSFCONS ...

  2. excel文档中嵌入对象(excel、word等)

    //测试环境office2016.office365 string InsertPath= @"E:\\新建文件夹\\2.xls";//插入的文档路径 string openfil ...

  3. 在成员函数中调用虚函数(关于多态的注意事项)------新标准c++程序设计

    类的成员函数之间可以互相调用.在成员函数(静态成员函数.构造函数和析构函数除外)中调用其他虚成员函数的语句是多态的.例如: #include<iostream> using namespa ...

  4. loj #6201. 「YNOI2016」掉进兔子洞

    #6201. 「YNOI2016」掉进兔子洞 您正在打galgame,然后突然发现您今天太颓了,于是想写个数据结构题练练手: 给出一个长为 nnn 的序列 aaa. 有 mmm 个询问,每次询问三个区 ...

  5. 冒泡排序 思想 JAVA实现

    已知一个数组78.75.91.36.72.94.43.64.93.46,使用冒泡排序将此数组有序. 冒泡排序是一个运行时间为O(N²)的排序算法. 算法思想:(已从小到大为例) 78.75.91.36 ...

  6. 静态库(.a)与动态库(.so)的简明介绍

    静态库(.a)与动态库(.so)的简明介绍 gcc有很多关于静态库,动态库的选项如-l,-L,-fPIC,-shared -Wl,-soname,看着很复杂容易混淆,其实静态库和动态库都是应需而生,只 ...

  7. 品味Zookeeper之选举及数据一致性_3

    品味Zookeeper之选举及数据一致性 本文思维导图 前言 为了高可用和数据安全起见,zk集群一般都是由几个节点构成(由n/2+1,投票机制决定,肯定是奇数个节点).多节点证明它们之间肯定会有数据的 ...

  8. 二、为什么要选用pytest以及 pytest与unittest比较

    为什么要选择pytest,我看中的如下: 写case,不需要像unittest那样,创建测试类,继承unittest.TestCase pytest中的fixture(类似于setUp.tearDow ...

  9. 分布式中为什么要加入redis缓存的理解

    面我们介绍了mybatis自带的二级缓存,但是这个缓存是单服务器工作,无法实现分布式缓存.那么什么是分布式缓存呢?假设现在有两个服务器1和2,用户访问的时候访问了1服务器,查询后的缓存就会放在1服务器 ...

  10. HTML <form> target 属性

    浏览器支持 所有主流浏览器都支持 target 属性. 定义和用法 target 属性规定一个名称或一个关键词,指示在何处打开 action URL,即在何处显示提交表单后接收到的响应. target ...