1. 程式人生 > 其它 >你造嗎,Oracle SQLplus 也有History命令了

你造嗎,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現場首發,受到廣大技術朋友的喜歡。最近很多朋友們找我們申請,因此開放綠色通道,可以線上申請免費領取。