Oracle sqlplus参数autocommit(自动提交)的设置

0    451    2

Tags:

👉 本文共约3391个字,系统预计阅读时间或需13分钟。

目录

    在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在Oracle数据库中,在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。因为Oracle数据库的默认事务隔离级别是提交读(Read Committed)。提交数据有三种类型:显式提交、隐式提交及自动提交。下面分别说明这三种类型。

    (1) 显式提交

    用COMMIT命令直接完成的提交为显式提交。其格式为:

    SQL>COMMIT;

    (2) 隐式提交

    用SQL命令间接完成的提交为隐式提交。这些命令是:

    ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。

    (3) 自动提交

    若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,系统将自动进行提交,这就是自动提交。其格式为:

    SQL>SET AUTOCOMMIT ON;

    官网:

    https://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve040.htm#SQPUG060

    http://blog.itpub.net/26736162/viewspace-2121072/

    需要注意的是,无论AUTOCOMMIT**设置为何值,当退出SQL*Plus时,当前会话所有的DML操作所改变的数据都会被提交。**

    SYS@PROD1> set auto

    SP2-0281: autocommit missing set option

    Usage: SET AUTO[COMMIT] { OFF | ON | IMM[EDIATE] | n }

    SYS@PROD1> show auto

    autocommit OFF

    SCOTT@PROD1> set autocommit on

    SCOTT@PROD1> show autocommit

    autocommit IMMEDIATE

    OFF为默认值,表示关闭自动提交;ON和IMM都表示打开自动提交,二者没有区别;n表示成功执行n条DML操作后再自动提交。n不能小于0,也不能大于20亿(2,000,000,000)。注意,这里不是一个DML语句所影响的行数,而是DML语句的个数。

    实验过程如下:

    1、数据库版本

    SQL> select * from v$version where rownum=1;

    BANNER

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

    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

    2、查看sqlplus的控制是否自动提交的参数autocommit。无论AUTOCOMMIT设置为何值,当退出SQL*Plus时,当前会话所有的DML操作所改变的数据都会被提交。

    SQL> show user

    USER is "SCOTT"

    Usage: SET AUTO[COMMIT] { OFF | ON | IMM[EDIATE] | n }

    SQL>

    SQL> show autocommit

    autocommit OFF

    3、产生DML不提交

    SQL> create table t_commit_lhr(a number);

    SQL> insert into t_commit_lhr values(1);

    1 row created.

    退出当前会话

    Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    4,若中途退出未提交DML的SQLPLUS会话,则自动提交DML事务

    [oracle@seconary ~]$ sqlplus scott/system

    SQL*Plus: Release 11.2.0.1.0 Production on Sat Oct 17 21:45:13 2015

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

    Connected to:

    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    SQL> select * from t_commit_lhr;

    ​ A

    ----------

    ​ 1

    5,调整自动提交为提交,可见autocommit为on,即不用显式再发起命令commit

    SQL> show autocommit

    autocommit OFF

    SQL> set autocommit on

    SQL> show autocommit

    autocommit IMMEDIATE

    SQL> select * from t_commit_lhr;

    no rows selected

    本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
    AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
    验证码:
    获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

    标签:

    Avatar photo

    小麦苗

    学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

    您可能还喜欢...

    发表回复