你造嗎,Oracle SQLplus 也有History命令了
很多時候我們只能通過SQLPlus來操作資料庫,而當一個SQL執行結果太多時,我們要回翻之前的SQL語句就會很麻煩,甚至可能由於ssh客戶端或SQLPlus客戶端的buffer限制,更早以前的語句被刷出了視窗,你就不得不重新敲一遍SQL,這樣會帶來很多麻煩。
在12c裡,針對此Oracle推出了 History命令,這很像Shell中的history,語法為:
HIST[ORY] [n RUN | EDIT | DEL[ETE]] | [CLEAR | LIST]
該特性使使用者能夠從當前會話的歷史列表中執行、編輯或刪除以前使用的SQL * Plus,SQL或PL / SQL命令。 可以使用SET HISTORY命令在當前SQL * Plus會話中啟用或禁用HISTORY命令。
預設是關閉的,並在每次會話斷開連線後會自動關閉,當hist關閉後,hist 列表會被清空。如下示例:
HISTORY命令能夠:
列出命令歷史列表中的所有條目。 在命令歷史列表中執行條目。 在命令歷史列表中編輯一個條目。 從命令歷史列表中刪除一個條目。 清除命令歷史記錄列表中的所有條目。
Hist命令選項
- His(tory):列出命令歷史列表中的所有條目。
- n:表示命令歷史記錄列表中的條目。 星號(*)表示命令歷史列表中最後使用的命令。
說明
官方文件在這裡說hist命令列出來的最後一條會加*號,但在我測試的過程中,一直都沒有出現*號。雖然只是個小細節並不影響什麼,大家也可以自己測一下。
- run:從命令歷史列表中執行條目n。
- edit:可以使用預設的文字編輯器在命令歷史列表中編輯條目n。 在命令歷史列表中編輯條目n並儲存更改後,將在列表末尾建立一個新條目。 當命令歷史列表中的條目數量達到最大限制時,列表中最早的條目將被清除以容納新條目。
- del(ete):能夠從命令歷史記錄列表中刪除條目n。 從歷史記錄列表中刪除條目後,列表將重新排序,以反映最近的更改。
- clear:能夠清除歷史記錄列表中的所有條目。 一旦清除,歷史列表就無法恢復。
- list:列出歷史列表中的所有條目。 這與使用HIST [ORY]命令本身是一樣的。
拓展用法
可以使用SQL * Plus DEFINE命令來定義變數_EDITOR,以儲存首選文字編輯器的名稱。 例如,要將EDIT使用的編輯器定義為vi,請輸入以下命令:DEFINE _EDITOR = vi
舉例如下
以下示例執行歷史列表中的第五個條目:
HIST[ORY] 5 RUN
以下示例允許編輯歷史列表中的第三個條目:
HIST[ORY] 3 EDIT
此時會進入vi編輯狀態,對選擇的歷史條目可以做修改:
以下示例允許從歷史記錄列表中刪除第二個條目:
HIST[ORY] 2 DEL[ETE]
此時第二條歷史記錄被刪除。
以下示例允許從歷史記錄列表中刪除所有條目:
HIST[ORY] CLEAR
以下示例列出歷史列表中的所有條目。 這與使用HIST [ORY]命令本身是一樣的。
HIST LIST
以下示例說明如何啟用或禁用命令歷史記錄,以及如何檢查命令歷史記錄狀態:
在示例中hist 後面加數字表示hist列表的長度。預設值為100.
有了hist特性,的確會給我們的操作帶來很多方便。
The End.
12.2體系架構圖領取
綠色通道
Oracle 12.2 體系架構圖在DTCC現場首發,受到廣大技術朋友的喜歡。最近很多朋友們找我們申請,因此開放綠色通道,可以線上申請免費領取。