背景
《Oracle-Java JDBC 连接超时之后的认知纠正》这篇文章之后,结合官方文档,本文关于SQL*Plus 退出Commit or Rollback设置的参数进行测试。弥补一下自己的知识盲区。
SET AUTO[COMMIT]{ON | OFF | IMM[EDIATE] | n}
官方文档介绍
译
- 控制Oracle数据库在执行SQL或PL/SQL命令后何时向数据库提交挂起的更改。
ON
:在Oracle数据库执行每个成功的INSERT、UPDATE、DELETE或PL/SQL块后,向数据库提交处理的更改。OFF
:禁止自动提交,因此您必须手动提交更改(例如,使用SQL命令commit)。IMM[EDIATE] | n
:在Oracle数据库执行n个成功的SQL INSERT、UPDATE或DELETE命令或PL/SQL块后,IMMEDIATE函数以与ON.n相同的方式向数据库提交挂起的更改。n不能小于零或大于200000000。在成功完成n个INSERT、UPDATE或DELETE命令或PL/SQL块、提交、回滚或SET AUTOCOMMIT命令后,语句计数器重置为零。- 当SQL*Plus退出时,SET AUTOCOMMIT不会改变提交行为。默认情况下,任何未提交的数据都会被提交。
测试-1:默认情况下(SET AUTOCOMMIT OFF),任何未提交的数据都会被提交
TWO@phytest1:74> show auto
autocommit OFF
TWO@phytest1:74> select * From t1;
no rows selected
TWO@phytest1:74> insert into t1 values(1,userenv('sid'),'xx');
1 row created.
TWO@phytest1:74> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@db ~]$ sqlplus two/two
SQL*Plus: Release 11.2.0.3.0 Production on Thu Dec 26 17:09:56 2024
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
TWO@phytest1:74> select * from t1;
ID SID NAME
---------- -------------------- --------------------------------------------------
1 74 xx
复制
测试-2:SET AUTOCOMMIT ON/IMM (自动提交开)
TWO@phytest1:74> SET AUTOCOMMIT ON
TWO@phytest1:74> select * from t1;
no rows selected
TWO@phytest1:74> insert into t1 values(1,userenv('sid'),'xx');
1 row created.
Commit complete.
TWO@phytest1:74> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@db ~]$ sqlplus two/two
SQL*Plus: Release 11.2.0.3.0 Production on Thu Dec 26 17:11:25 2024
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
TWO@phytest1:74> select * From t1;
ID SID NAME
---------- -------------------- --------------------------------------------------
1 74 xx
复制
测试-3:SET AUTOCOMMIT N
- N : DML语句的个数
SET EXITC[OMMIT] {ON | OFF}
官方文档介绍
译
- 指定默认EXIT行为是COMMIT还是ROLLBACK。
- 默认设置为ON,这意味着在退出时提交工作,无论您是否期望提交。将EXITCOMMIT设置为OFF,以便在退出时回滚工作。
显示了与SET命令(AUTOCOMMIT和EXITCOMMIT)和exit命令组合相关的退出操作
测试:
- AUTOCOMMIT= OFF (默认)
- EXITCOMMIT= ON (默认)
- EXIT = ROLLBACK
TWO@phytest1:74> show auto
autocommit OFF
TWO@phytest1:74> show exitc
exitcommit ON
TWO@phytest1:74> select * from t1;
no rows selected
TWO@phytest1:74> insert into t1 values(1,userenv('sid'),'xx');
1 row created.
TWO@phytest1:74> rollback;
Rollback complete.
TWO@phytest1:74> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@db ~]$ sqlplus two/two
SQL*Plus: Release 11.2.0.3.0 Production on Thu Dec 26 17:50:19 2024
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
TWO@phytest1:74> select * from t1;
no rows selected
复制
小结
在数据库运维中,Session的有效退出是保障系统稳定与安全的核心环节。无论是用户主动断开、超时释放还是异常中断,Session退出过程直接影响资源回收效率与潜在风险防控。若管理不当,残留会话可能导致连接池耗尽、资源泄漏甚至安全漏洞。
欢迎赞赏支持或留言指正
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
2025年3月中国数据库排行榜:PolarDB夺魁傲群雄,GoldenDB晋位入三强
墨天轮编辑部
2025次阅读
2025-03-11 17:13:58
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1332次阅读
2025-03-13 11:40:53
11 【HarmonyOS NEXT】 仿uv-ui组件开发之Avatar组件深度剖析(二)
若城
1062次阅读
2025-03-07 21:35:16
10 【HarmonyOS NEXT】 仿uv-ui组件开发之Avatar头像组件开发教程(一)
若城
1061次阅读
2025-03-07 21:10:59
12 【HarmonyOS NEXT】 仿uv-ui组件开发之Avatar组件设计精髓(三)
若城
1052次阅读
2025-03-07 21:49:38
13 【HarmonyOS NEXT】 仿uv-ui组件开发之Avatar组件进阶指南(四)
若城
1047次阅读
2025-03-07 22:07:57
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
805次阅读
2025-03-17 11:33:53
Oracle 统计信息锁定解决办法
JiekeXu
557次阅读
2025-03-11 14:26:05
MySQL8.0统计信息总结
闫建(Rock Yan)
502次阅读
2025-03-17 16:04:03
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
472次阅读
2025-03-13 14:38:19