代码改变世界

小知识:设置sqlplus默认vi编辑器的好处

2019-11-11 17:04  AlfredZhao  阅读(...)  评论(... 编辑 收藏

如果是客户生产环境,不允许修改任何环境类的配置,那发现sqlplus默认不是我们熟悉的vi,可以在SQL>下临时指定,方便操作;

SQL> define_editor=vi
SQL> ed file_name

如果是自己运维的环境,可以修改配置,建议修改glogin.sql,添加指定vi为默认编辑器:

cd $ORACLE_HOME/sqlplus/admin/
vi glogin.sql 加入配置:

define_editor=vi

以一个最简单的例子说明其便利性,比如我们要修改所有ASM磁盘组的compatible.rdbms属性,肯定要反复用到如下SQL:

--查询ASM磁盘组的相关信息:
select NAME , TOTAL_MB, FREE_MB , COMPATIBILITY, DATABASE_COMPATIBILITY from v$asm_diskgroup;

--修改ASM磁盘组的DATABASE_COMPATIBILITY属性
ALTER DISKGROUP &dgname SET ATTRIBUTE 'compatible.rdbms' = '11.2';

那么,如果我们设置了熟悉的vi为默认sqlplus的编辑器,就可以方便编辑:

--ed 文件名,就相当于是vi操作这个文件
ed asm
ed alterdg

--保存到文件,如果文件存在就覆盖
save asm rep
save alterdg rep

--获取到某个文件的内容
get asm
get alterdg

比如当我们ed编辑好后sql内容后,就可以这样反复调用:

SQL> 
SQL> get alterdg
  1* ALTER DISKGROUP &dgname SET ATTRIBUTE 'compatible.rdbms' = '11.2'
SQL> get asm
  1  set lines 180
  2  col name for a30
  3  col COMPATIBILITY for a30
  4  col DATABASE_COMPATIBILITY for a30
  5* select NAME , TOTAL_MB, FREE_MB , COMPATIBILITY, DATABASE_COMPATIBILITY from v$asm_diskgroup
SQL> @asm

NAME                             TOTAL_MB    FREE_MB COMPATIBILITY                  DATABASE_COMPATIBILITY
------------------------------ ---------- ---------- ------------------------------ ------------------------------
CRS                                  3060       2088 19.0.0.0.0                     10.1.0.0.0
DATA                                24568       7104 19.0.0.0.0                     10.1.0.0.0
FRA                                 12284      12152 19.0.0.0.0                     10.1.0.0.0

SQL> @alterdg
Enter value for dgname: <输入要修改的磁盘组名称>

SQL> @alterdg
Enter value for dgname: <输入要修改的磁盘组名称>

SQL> @alterdg
Enter value for dgname: <输入要修改的磁盘组名称>

SQL> @asm

NAME                             TOTAL_MB    FREE_MB COMPATIBILITY                  DATABASE_COMPATIBILITY
------------------------------ ---------- ---------- ------------------------------ ------------------------------
CRS                                  3060       2088 19.0.0.0.0                     11.2.0.0.0
DATA                                24568       7104 19.0.0.0.0                     11.2.0.0.0
FRA                                 12284      12152 19.0.0.0.0                     11.2.0.0.0

可以看到,这样就可以方便反复调用@asm验证修改结果,调用@alterdg修改要修改的磁盘组名称,避免重复输入的同时,还有效减少了误操作,大幅提升DBA在sqlplus下的工作效率。如果你日常经常使用sqlplus进行SQL调优等工作,将会在反复查看执行计划和分析ASH等数据中更深刻的感受到这个设置带来的便利。