如果是客户生产环境,不允许修改任何环境类的配置,那发现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等数据中更深刻的感受到这个设置带来的便利。