绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
【SQL*Plus】在SQL*Plus中谨慎使用Ctrl+S快捷键
2020-01-11 16:03:01
在UNIX/Linux平台中的SQL*Plus命令行提示符下如果误使用了“Ctrl+S”组合键将会Suspends the screen display(锁定屏幕显示),随后的操作都暂时不会在屏幕上显示,就像屏幕被冻结了一样。这个现象是由于SQL*Plus继承了UNIX/Linux命令行下特殊组合键的操作行为,因此该现象在UNIX/Linux命令行提示符下同样存在。

这个组合键很容易误键入,因为Ctrl+S是各种文本编辑器中常用的“保存”快捷键,对正在编辑的文档有随时使用快捷键保存习惯的朋友需要尤为注意。

既然知道了这个问题现象,那么如何解除这种屏幕锁定呢?不清楚的朋友可以参考UNIX/Linux操作手册。答案是:使用Ctrl+Q组合键可以解除这种屏幕锁定。

对该现象进行一下模拟,同时简单探索一番。

1.使用“Ctrl+S”组合键完成对屏幕的锁定
sys@ora10g>

此时我们输入几下回车键。因为此时处于锁屏状态,屏幕上将不会有任何反应。

2.使用“Ctrl+Q”组合键解除屏幕锁定
在解除锁定的那一瞬间,之前的回车键效果得以体现。
sys@ora10g> sys@ora10g> sys@ora10g> sys@ora10g> sys@ora10g> sys@ora10g> sys@ora10g> sys@ora10g>

3.在锁屏阶段尝试SQL语句的输入
使用Ctrl+S锁屏,然后在锁屏的过程中盲打“select * from v$version;”并回车。当使用Ctrl+Q键解除屏幕锁定之后,SQL语句返回了SQL查询结果。注意,此时屏幕上并没有显示我们盲打的SQL语句内容,只有与之对应的返回结果。
sys@ora10g>
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production

4.进一步思考和验证尝试
既然在锁屏阶段同样接收键盘输入,如果是一个DML类型(甚至于DDL类型)的SQL操作,锁屏阶段键入的信息是否会对数据产生影响呢?答案是:不会,只有在解除屏幕锁定之后命令才会被真正的执行,也就是说锁屏阶段键入的信息被暂时地缓存了起来。

验证这个结论。

1)在SQL*Plus的Ctrl+S锁屏阶段盲打如下内容,注意不要敲错。
insert into t values (1);
commit;

2)在另外开启的会话中查看t表数据
sec@ora10g> select * from t;

no rows selected

可见,锁屏阶段键入的SQL并没有生效。

2)使用Ctrl+Q解除锁屏
sec@ora10g>
1 row created.

sec@ora10g>
Commit complete.

在解除锁屏的一刹那,可以看到盲打的两条SQL语句有依次执行成功的提示。

3)后的确认
再次查看第二个会话中t表的数据。
sec@ora10g> select * from t;

         X
----------
         1

结论显然,在锁屏锁定解除之后SQL语句才真正有效的被执行。
有兴趣的朋友可以再进一步做一个尝试:在锁屏阶段盲打的内容如果在被Ctrl+Q解除锁定之前就被人为的关掉操作窗口退出,盲打的内容将被取消,不会生效。这是显然的。

5.小结
本文给出了一个在UNIX/Linux环境下使用SQL*Plus时常见的一个问题现象及解决方法。由此又引申出了几个比较有趣的尝试。有兴趣的朋友可以继续探索一下。

Good luck.

secooler
11.01.10

-- The End --

分享好友

分享这个小栈给你的朋友们,一起进步吧。

OCM联盟
创建时间:2019-12-27 14:04:54
OCM联盟(OCMU – Oracle Certified Master Union)是一群有着共同理想,共同志向的DBA的家。 ⚠️该小栈仅限ocm成员入驻!审核制! Oracle Certified Master (OCM) -Oracle认证大师,是Oracle认证的别,是对数据库从业人员的技术、知识和操作技能的别的认可。Oracle OCM是解决困难的技术难题和复杂的系统故障的佳Oracle专家人选,也是IT行业衡量IT专家和经理人的高专业程度及经验的基准。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • 侯圣文@secooler
    栈主

小栈成员

查看更多
  • gaokeke123
  • ?
  • 山中老狐狸
  • 飘絮絮絮丶
戳我,来吐槽~