若是是客户生产环境,不容许修改任何环境类的配置,那发现sqlplus默认不是咱们熟悉的vi,能够在SQL>下临时指定,方便操做;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的编辑器,就能够方便编辑:code
--ed 文件名,就至关因而vi操做这个文件 ed asm ed alterdg --保存到文件,若是文件存在就覆盖 save asm rep save alterdg rep --获取到某个文件的内容 get asm get alterdg
好比当咱们ed编辑好后sql内容后,就能够这样反复调用:get
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等数据中更深入的感觉到这个设置带来的便利。it