若是是客戶生產環境,不容許修改任何環境類的配置,那發現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