工欲善其事,必先利其器。Oracle自身帶了一些輔助的用戶端工具,但是都不太好用,但真正的DBA都喜歡用命令列方式來操作資料庫。我們不是DBA,我們是程式員,所以我們很有必要去找一些好用的工具以提高我們的工作效率。下面推薦兩款工具:
1.PL/SQL Developer
這個工具從名字就可以看出,非常適合開發人員使用,這個工具對資料庫本身的管理功能很弱,給DBA使用的功能也很少。這個工具的版本更新較快,目前常用的是5.0和7.0,6.0的好像不太穩定。
使用這個工具,可以實現建表、建視圖等準系統,還可以運行命令檔案。在如下所指的菜單中可以找到相應的功能。
如果SQL為查詢語句,則直接在主視窗的表格中可以顯示查詢內容,如:
圖上有幾個比較重要的按鈕,第一個表示鎖定,點擊成功後,可以對錶格中的資料進行編輯;緊接著的綠色向下,表示向下翻一頁的資料,因為這個工具預設不會取出所有的資料,這樣可以提高效能;再後面的兩個三角加一個橫線的按鈕,表示可以把所有的資料全部取出放在表格中,這種方式使用的時候要注意,如果資料量很大,會造成用戶端記憶體不足;“豎向按鈕”可以把一個記錄行豎向排版,更方便顯示和編輯,如:
如果需要編輯資料,有兩種辦法:
使用update命令,如update table_name set column_name=’value’;
也可以使用表格自身的編輯功能,如:select * from table_name for update
上面雖然是個查詢語句,但是因為最後帶著for update子句,則這句話同時將資料庫這個表鎖定,並且在表格上面的“鎖”標誌可以使用,實現資料的編輯,如:
如果不喜歡for update子句,還有另外一個更簡單的辦法,在左側菜單中找到相對應的表,然後點右鍵,出現一個“Edit Data”
這個功能會自動建立一個SQL視窗,並實現對資料的編輯。
以上幾種方式作用相同,可根據實際情況來決定。
說過了如何編輯資料,下面說一下PL/SQLDeveloper一個比較好用的功能:單步調試。
在編寫預存程序的時候,都會像一般寫程式一樣調試,但是如果不借用一些工具的話,對預存程序的調試是相當困難的,不過好在我們現在有了這個好用的工具。
是一個最簡單的預存程序的例子,中間過程對一個變更進行多次賦值,最後返回,我們只來看一下中間變數值的變化過程:
首先在函數名Test上點右鍵,出現菜單,選擇Test(測試):
然後會出現專門的調試視窗,如:
如果函數有參數,在最底下還會出現輸入參數的地方。如何開始調試呢,看一下中的齒輪的地方,點擊它,即可進入調試狀態,然後後面的一系列按鈕都變為可用狀態,如:
其中綠色的三角表示運行,直到碰到斷點才結束,後面幾個按鈕和其它語言一樣,分別表示單步、把子函數作為一個語句、從子函數中跳過,最後的紅色我沒有實驗過。
上面提到了斷點,那麼如何添加斷點呢?這要回到預存程序的編輯狀態,在紅色位置單擊一下,就會自動添加一個斷點,也可以使用Ctrl+B功能鍵來處理。
有了以上斷點後,程式運行到這裡,系統會自動停下來等待處理,當然這種方式只適用於偵錯模式,對於正常F8運行模式無效。
當系統停在某個斷點的時候,把滑鼠放在某個變數上,就會自動顯示這個變數的當前值,如,當然,也可以添加監控,即時看某個變數的變化過程,在的位置來添加監控。
紅線的位置是新添加的一個監控變數,可以隨著程式的運行而不斷變化,並可以根據需要添加多個變數同時監控。
當然有時您可能會被告之當前函數無法取得調試資訊,這時就要手動添加一下,添加的方式是在package的名字上點右鍵,菜單中選擇“Add Debug Information”
說完了單步調試,再來看一下執行計畫
在大型資料庫中,都有執行計畫的概念,也就是資料庫會很公正的告訴你,它用什麼樣的方式(路徑)來執行你提交的請求,你可以自己判斷一下它的執行路線是否正確,如果不正確,你可以很明確的告訴它去修改運行路徑。
在正常的情況下,F8按鈕可以運行一個SQL語句,當你點擊F5功能鍵的時候,就是啟動執行計畫的分析了,這比命令列方式要方便很多倍,而且效果非常直觀,如:
上面一部分是SQL語句,下面就是相對應的執行計畫。與實際運行不同,在這裡查看執行計畫,不會真正的運行SQL語句,所以會很快得到計劃結果,而不論資料量到底有多大。
上面已經看到執行計畫,那看這個計劃有什麼用呢?從計劃裡,我們可以清楚的看到是否使用了索引,如,TABLE ACCESS FULL(FTS)就是沒有使用索引,如果資料量很大,而需要檢查一條記錄的時候,FTS將把所有資料進行掃描,速度是非常慢的,也就是利用這個執行計畫,可以知道如何調優,比如建立索引等。還有一些更深入的用法,屬於調優部分,不再多講。
這個工具還有很多的小功能,非常實用的亮點,大家可以在使用過程中不斷髮現。
2.TOAD
與上一個工具不同,這個工具更側重於DBA管理功能,要說寫代碼的支援,我覺得還是上面的工具更人性化。
作為開發人員,在TOAD裡,我們可以做以下幾個工作:
A.匯入匯出功能
TOAD的匯入匯出功能,實際上也是調用了Oracle自己的EXP/IMP功能,只是加上了UI介面,操作更加友好,可以實現更好的互動,因為使用命令列方式,互動很容易出錯。在TOAD的菜單“DBA”中,可以找到匯入和匯出的功能,先看一下匯出:
首先要指定匯出方式,一般來說,常規的備份是按使用者來備份,即第二個,其它各有個的功能,可以查詢一下相關的文檔。然後進行下一步:
選中需要備份的使用者後,把它們放入右側的框中,一次可以選擇多個使用者,然後再進行下一步,如果沒什麼特別需要,全按預設參數處理即可:
以此類推,一直點下一步,即可實現資料的匯出。這種匯出一般作為資料庫的邏輯備份策略,與rman備份可以互為補充。
匯入的方式與匯出基本相似,操作方式也相似,就不再多講了,總之,用TOAD的匯入匯出會比較方便。
B.表分析
從理論上講,我覺得這個功能應該是DBA來操作的,但是程式員如果有許可權,也可以自己操作,不過最好是在測試環境,對於正式環境,發現問題,需要申請DBA進行協助,因為有些不當的操作,會破壞原有的執行計畫,甚至更嚴重的後果。
說到這裡,要說一下為什麼要進行表分析。如果要回答這個問題,首先要說一下Oracle是怎麼進行SQL查詢的:查詢中有一個步驟就是對所需要的SQL進行分析,得出正確的執行計畫。在上一個工具中,我們已經提到怎麼樣檢查執行計畫,現在要做的就是當發現執行計畫不對的時候,我們做一下表分析,有可能再檢查執行計畫就對了(只是有可能),因為執行計畫需要依靠表分析的資訊。
這個功能位於Tools目錄的Analyze All Objects,如:
點擊後,出現新的視窗,對於程式員來說,我們只需要分析我們自己的表即可。
點擊後,就把目前使用者自己的所有表列出為供選擇了,如:
然後選中左側的複選框,點綠色的箭頭,就開始了表分析,一般不做任務參數調整的話,會很快完成,並且在工具列上有進度指示,大家可以自己看一下。
TOAD裡的功能實在是太多了,大家有許可權的話,自己試一下吧,記住不要在生產環境做測試噢。
未完