Toad快速入門
??????????www.InnovateDigital.com 整理
??一、 Toad功能綜述
?????在Oracle 應(yīng)用程序的開(kāi)發(fā)過(guò)程中,訪問(wèn)數(shù)據(jù)庫(kù)對(duì)象和編寫(xiě)SQL程序是一件乏味且耗費(fèi)時(shí)間的工作,對(duì)數(shù)據(jù)庫(kù)進(jìn)行日常管理也是需要很多SQL腳本才能完成的。Quest Software為此提供了高效的Oracle應(yīng)用開(kāi)發(fā)工具-Toad(Tools of Oracle Application Developers)。在Toad的新版本中,還加入了DBA模塊,可以幫助DBA完成許多日常管理工作。它最大的特點(diǎn)就是簡(jiǎn)單易用,訪問(wèn)速度快。使用 Toad,我們可以通過(guò)一個(gè)圖形化的用戶界面快速訪問(wèn)數(shù)據(jù)庫(kù),完成復(fù)雜的SQL和PL/SQL代碼編輯和測(cè)試工作。Toad由Oracle開(kāi)發(fā)專家專門為開(kāi)發(fā)人員而設(shè)計(jì),是一個(gè)功能強(qiáng)大、結(jié)構(gòu)緊湊的專業(yè)化PL/SQL開(kāi)發(fā)環(huán)境。
?????Toad 主要具有如下特點(diǎn):
??模式瀏覽:
?????模式瀏覽功能可以讓我們快速訪問(wèn)數(shù)據(jù)字典,瀏覽數(shù)據(jù)庫(kù)中的表、索引、存儲(chǔ)過(guò)程。Toad 提供對(duì)數(shù)據(jù)庫(kù)的快速訪問(wèn),使用極為方便,用戶界面簡(jiǎn)潔,結(jié)構(gòu)安排合理。當(dāng)我們點(diǎn)擊一個(gè)單獨(dú)的數(shù)據(jù)庫(kù)對(duì)象,Toad立即顯示此對(duì)象的詳細(xì)信息。例如,當(dāng)我們點(diǎn)一個(gè)數(shù)據(jù)庫(kù)的表,所有和此表相關(guān)的索引、約束、存儲(chǔ)過(guò)程、SQL語(yǔ)句以及和其他表的相互引用關(guān)系都在同一界面顯示出來(lái)。為了簡(jiǎn)化操作,用戶可以在瀏覽窗口操作數(shù)據(jù)庫(kù)對(duì)象。
??SQL 編輯器:
?????SQL 編輯器的主要功能是編輯、運(yùn)行和調(diào)整SQL語(yǔ)句。TOAD 的高級(jí)編輯窗口包括眾多的特性來(lái)提高開(kāi)發(fā)人員編寫(xiě)SQL語(yǔ)句的產(chǎn)品化程度。例如,簡(jiǎn)單地生成代碼模板,在編寫(xiě)SQL前自動(dòng)發(fā)現(xiàn)包的內(nèi)容和列的名字等等。
?????SQL 編輯器包括一個(gè)編輯窗口和運(yùn)行結(jié)果窗口,允許開(kāi)發(fā)人員在編輯的過(guò)程中測(cè)試運(yùn)行結(jié)果。SQL編輯器中不僅包括標(biāo)準(zhǔn)的編輯命令,也包括一些增強(qiáng)的功能,如快速查詢表中的字段、將SQL語(yǔ)句的內(nèi)容格式化等等。這個(gè)窗口可以處理大到4GB 的內(nèi)容,對(duì)大的開(kāi)發(fā)項(xiàng)目來(lái)說(shuō)非常有用。便捷的書(shū)簽可以讓開(kāi)發(fā)人員非常容易地找到相關(guān)位置。在運(yùn)行結(jié)果窗口可提供用戶定義的配置功能,支持LONG 和LONG RAW列,可以將數(shù)據(jù)卸出到磁盤、打印數(shù)據(jù)、編輯數(shù)據(jù)等等。
??存儲(chǔ)過(guò)程編輯器:
?????存儲(chǔ)過(guò)程編輯器的主要功能是編輯、編譯、測(cè)試、調(diào)試存儲(chǔ)過(guò)程和觸發(fā)器。TOAD提供語(yǔ)法標(biāo)識(shí)、錯(cuò)誤標(biāo)識(shí)和其他很多易于使用的功能,如在彈出窗口顯示表名、列名和Oracle函數(shù)。和其他的 PL/SQL 編輯工具不同,TOAD 允許在一個(gè)文件中操作多個(gè)數(shù)據(jù)庫(kù)對(duì)象,可以編譯一個(gè)對(duì)象、編譯多個(gè)對(duì)象、編譯到當(dāng)前光標(biāo)、從光標(biāo)開(kāi)始編譯。在運(yùn)行出現(xiàn)錯(cuò)誤時(shí),存儲(chǔ)過(guò)程停止到有問(wèn)題的語(yǔ)句。用戶可以使用快捷方式或模板來(lái)快速編寫(xiě)PL/SQL,也可以根據(jù)需要生成自己的模板。使用Toad可以非常方便地進(jìn)行編輯工作,可如設(shè)置書(shū)簽、取消注釋、格式化SQL語(yǔ)句等等。
??PL/SQL Debugger選項(xiàng):
?????Toad 提供簡(jiǎn)單易用的PL/SQL 調(diào)試功能,可以節(jié)省開(kāi)發(fā)人員在大型項(xiàng)目中用于開(kāi)發(fā)和測(cè)試的寶貴時(shí)間,提高應(yīng)用開(kāi)發(fā)的質(zhì)量。在存儲(chǔ)過(guò)程開(kāi)發(fā)的過(guò)程中,Toad可以逐行編輯、調(diào)試和運(yùn)行代碼。運(yùn)行時(shí)可以根據(jù)需要輸入?yún)?shù),觀察相關(guān)參數(shù)的變化來(lái)檢查存儲(chǔ)過(guò)程的正確性。在調(diào)式過(guò)程中,Toad 可以通過(guò)窗口顯示所有的斷點(diǎn)、參數(shù), 調(diào)用堆棧和輸出參數(shù)。使用Toad,非常容易檢測(cè)到存儲(chǔ)過(guò)程的錯(cuò)誤,開(kāi)發(fā)人員可以一步一步運(yùn)行PL/SQL語(yǔ)句來(lái)識(shí)別問(wèn)題。調(diào)試會(huì)話可以和其他程序會(huì)話同時(shí)進(jìn)行。
??SQLab Xpert Option:
?????幫助開(kāi)發(fā)人員優(yōu)化SQL,為他們提供各種優(yōu)化模式下SQL執(zhí)行計(jì)劃,并且能夠給出優(yōu)化的建議,能夠比較各種模式下實(shí)際的SQL運(yùn)行結(jié)果,幫助開(kāi)發(fā)人員真正高速地開(kāi)發(fā)高效地代碼。
?????Toad 還可以外掛一些別的產(chǎn)品,比如PL/Formatter, RevealNet Knowledge Base , SQL Impact等,這些都能夠和Toad緊密集成,共同提供了一個(gè)完美的集成開(kāi)發(fā)環(huán)境。新版本還新增加了DBA模塊,更加拓廣了Toad這個(gè)產(chǎn)品的適用范圍。
??二、系統(tǒng)要求:
?????客戶端:
?????服務(wù)器端:
??三.安裝:
?????1. 三種安裝方式的選擇:
?????a) TOAD and Personal Configuration Files to PC 默認(rèn)安裝選擇,完成一個(gè)完整的Client端的安裝,把所有需要的文件拷貝到本地Toad目錄。絕大多數(shù)用戶應(yīng)該選擇使用這個(gè)安裝方式。
?????b) Personal Config Files to PC, read TOAD from Network Server 從網(wǎng)絡(luò)服務(wù)器讀取Toad程序,在本地計(jì)算機(jī)安裝一些自定義的文件,并且創(chuàng)建到服務(wù)器文件的快捷方式,一般不推薦使用這個(gè)方式,而且要求網(wǎng)絡(luò)服務(wù)器已經(jīng)配置。
?????c) TOAD to Network Server
?????把Toad安裝到網(wǎng)絡(luò)服務(wù)器上,以便這樣別的用戶能夠進(jìn)行Personal Config Files to PC, read TOAD from Network Server這種方式的安裝。
?????2. 根據(jù)需要使用到的特性,需要運(yùn)行一些腳本(都在Toad\temps目錄下)
??四、Toad使用快速入門
??1. Schema Browser:
?????Schema browser是Toad的極為有特色的模塊。在schema browser的幫助下,可以方便的瀏覽數(shù)據(jù)庫(kù)內(nèi)部的各類數(shù)據(jù)庫(kù)對(duì)象,比如表,索引,序列,存儲(chǔ)過(guò)程等,而且可以方便的倒出DDL語(yǔ)句和進(jìn)行各種修改,重建工作。定位到某一類對(duì)象上,這列對(duì)象允許的操作都會(huì)自動(dòng)列出來(lái)。
?????特色:
??2. SQL Editor:
??3. Stored Procedure Editor
?????調(diào)試步驟具體舉例:
?????1. 點(diǎn)擊菜單欄的第三個(gè)按鈕: 打開(kāi)Procedure Editor
?????2. 點(diǎn)擊Procedure Editor的菜單欄的 按鈕,調(diào)出需要調(diào)試的存儲(chǔ)過(guò)程
?????3. 單擊工具欄上的按鈕 ,輸入需要傳入的參數(shù),如果不需要傳入?yún)?shù),可以直接單擊工具欄上的按鈕: ,直接開(kāi)始調(diào)試,如下圖輸入傳入?yún)?shù):
?????4. 單擊菜單欄的按鈕: ,可以單步跟蹤,也可以定義一個(gè)斷點(diǎn),直接運(yùn)行到斷點(diǎn)在單步執(zhí)行,在存儲(chǔ)過(guò)程運(yùn)行的過(guò)程中,當(dāng)前語(yǔ)句會(huì)高亮度顯示,并且把鼠標(biāo)指針定位到變量上,Toad自動(dòng)顯示該變量的當(dāng)前值。
?????5. 可以隨時(shí)中止程序的執(zhí)行,只要點(diǎn)Debug ->Halt Execution,或者菜單欄上的按鈕 ,就可以中止程序的執(zhí)行
?????6. 當(dāng)碰到一個(gè)存儲(chǔ)過(guò)程調(diào)用另外一個(gè)存儲(chǔ)過(guò)程的時(shí)候,可以選擇跳過(guò)(Step Over) ,這樣就直接運(yùn)行那個(gè)被調(diào)用的存儲(chǔ)過(guò)程,返回調(diào)用結(jié)果,繼續(xù)這個(gè)存儲(chǔ)過(guò)程的調(diào)試,也可以選擇Trace Into ,這樣就打開(kāi)被調(diào)用的存儲(chǔ)過(guò)程,進(jìn)一步深入調(diào)試那個(gè)被調(diào)用的子存儲(chǔ)過(guò)程。如果需要保持Debug信息,在編譯的時(shí)候應(yīng)該選擇Compile Dependencies with Debug Information,就是Procedure Editor工具欄最右邊的那個(gè)按鈕 。
?????7. 支持對(duì)變量實(shí)時(shí)追蹤:使用Watch:可以在運(yùn)行前,或者運(yùn)行過(guò)程中對(duì)某個(gè)變量進(jìn)行實(shí)時(shí)跟蹤:Add Watch,把鼠標(biāo)定位到該變量上,然后點(diǎn)擊Debug ->Add Watch At Cursor,該變量就會(huì)出現(xiàn)在Debug狀態(tài)窗口上,而且實(shí)時(shí)反應(yīng)該變量的當(dāng)前值。如上圖中的變量v_empname。可以運(yùn)行時(shí)刻修改
?????8. 斷點(diǎn)支持:?jiǎn)螕舸鎯?chǔ)過(guò)程需要加斷點(diǎn)的地方的行號(hào),該行顏色變紅,輸入?yún)?shù),單擊執(zhí)行按鈕 ,可以直接運(yùn)行到斷點(diǎn)處,可以不必逐行追蹤,更加高效率的進(jìn)行調(diào)試。
?????Debug Option還支持條件斷點(diǎn),只有當(dāng)滿足條件的時(shí)候才會(huì)在那個(gè)地方停止,否則就好像不存在這個(gè)斷點(diǎn)一樣繼續(xù)運(yùn)行。
?????注意DBMS_OUTPUT.PUT_LINE的結(jié)果只有當(dāng)程序執(zhí)行完成以后才會(huì)出現(xiàn),在程序執(zhí)行過(guò)程中是沒(méi)有結(jié)果的。
??4. SQLab Xpert
?????我們知道,Oralce數(shù)據(jù)庫(kù)的優(yōu)化,最主要的步驟就在于SQL的優(yōu)化。而在沒(méi)有專門的工具(如Toad)的幫助下,進(jìn)行SQL優(yōu)化是一件非常困難和乏味的事情,并且需要對(duì)Oracle的深入理解和高超的Oracle調(diào)優(yōu)技巧。使用Toad的SQLab Xpert Tuning模塊,可以使我們普通開(kāi)發(fā)人員也能夠非常快速,精確的對(duì)SQL進(jìn)行專家級(jí)的分析
?????在SQL Editor和Procedure Editor里面,選中需要調(diào)試的SQL語(yǔ)句(SQLab Xpert只能調(diào)試Select,Insert, Update,Delete語(yǔ)句),復(fù)制到SQL Editor里面,然后點(diǎn)擊工具欄上的調(diào)優(yōu)按鈕 ,Toad會(huì)自動(dòng)打開(kāi)SQLab xpert 窗口,捕獲當(dāng)前的SQL語(yǔ)句,并且把它轉(zhuǎn)化為符合explain plan格式的語(yǔ)句。
?????第一次打開(kāi)Xpert的時(shí)候,Toad會(huì)提示你,需要安裝一些Server端的表、視圖和包等對(duì)象,可以把表存儲(chǔ)到某個(gè)指定的表空間(如Tools)里面。可以簡(jiǎn)單的按照提示一步一步做就可以了。如果系統(tǒng)設(shè)定不允許Job的話(Job_queue_process=0),Toad提示有些部件不會(huì)現(xiàn)在安裝,可以忽略。安裝完成以后,可以選擇讓某些非DBA用戶也可以使用Toad的SQLab Xpert調(diào)優(yōu)功能。
?????安裝完成以后,Toad會(huì)提示你一些關(guān)于優(yōu)化目標(biāo)方面的問(wèn)題,你可以選擇每次優(yōu)化都可以重新設(shè)定,或者一次設(shè)定,以后一直使用這個(gè)設(shè)定。當(dāng)然如果需要,還是可以更改的,在SQLab Option xpert的窗口的Administration和Preference下面重新設(shè)定。
?????例子:
?????下面這個(gè)SQL語(yǔ)句涉及到多表之間的關(guān)聯(lián),有一定的復(fù)雜性,我們可以借助Toad的SQLab Xpert Option來(lái)幫助分析:
?????select a.name. b.name, c.emp_name from dep a, manager b,emp c where a.dep_no=c.DEP_NO and b.manag_id=c.manag_id and c.emp_no=3
?????我們把這個(gè)SQL復(fù)制到SQL Editor里面,單擊上面的調(diào)優(yōu)按鈕,Toad打開(kāi)SQLab Xpert Option窗口。
?????從上面的圖中我們可以方面的看到:在各種優(yōu)化模式下,該SQL語(yǔ)句的執(zhí)行計(jì)劃分別是什么樣的,Toad給出了每一種執(zhí)行計(jì)劃的具體每一個(gè)步驟,每個(gè)步驟的成本,該表涉及的相關(guān)的數(shù)據(jù)等,如果SQL存取的表還沒(méi)有經(jīng)過(guò)分析,Toad會(huì)以紅色警告顯示,并且很方便的幫助你對(duì)該表進(jìn)行分析,收集統(tǒng)計(jì)數(shù)據(jù),重建索引等,以有助于優(yōu)化器作出最好的選擇。可以把當(dāng)前的分析結(jié)果保存到它的資料庫(kù)里邊,以備以后再次調(diào)用之需。
?????我們還可以求助與SQLab 的自動(dòng)優(yōu)化功能:點(diǎn)擊Original SQL下面的auto tune按鈕,Toad會(huì)對(duì)執(zhí)行結(jié)果按照tkprof進(jìn)行分析(當(dāng)然,這需要你在initsid.ora里面設(shè)置好utl_file_dir,如果服務(wù)器是在Unix機(jī)器上的話,還需要通過(guò)FTP方式得到Trace文件,有一些小小的設(shè)置)。
?????自動(dòng)優(yōu)化非常高效的對(duì)所有執(zhí)行計(jì)劃進(jìn)行實(shí)際運(yùn)行比較,并且給出實(shí)際執(zhí)行的時(shí)間的對(duì)比,如下圖:
????? 我們還可以讓Toad給出實(shí)際的優(yōu)化建議:點(diǎn)擊Original SQL,單擊下面的Advice按鈕,Toad根據(jù)對(duì)SQL的分析和執(zhí)行結(jié)果給出合理的建議:
?????1. 把表和索引分別放到兩個(gè)不同的表空間,因?yàn)槲覀冊(cè)趧?chuàng)建表,加上約束的時(shí)候沒(méi)有指定USING INDEX子句,所以表和索引都建立在了用戶的默認(rèn)表空間上了。
?????2. 對(duì)表EMP,DEP和MANAGER進(jìn)行分析,收集最新的統(tǒng)計(jì)數(shù)據(jù),有利于CBO得到最優(yōu)的執(zhí)行計(jì)劃
?????3. 在合適的列上創(chuàng)建索引:EMP的manag_id和dep_no。當(dāng)表中存在大量的數(shù)據(jù)的時(shí)候,這樣可以大大減少由于全表掃描帶來(lái)的成本。
??5. SQL Modeler:
?????SQL Modeler可以幫助開(kāi)發(fā)人員很容易的寫(xiě)出各種復(fù)雜的SQL語(yǔ)句,只需通過(guò)簡(jiǎn)單的拖動(dòng)鼠標(biāo),就能夠?qū)懗鰪?fù)雜的SQL語(yǔ)句來(lái)。
?????打開(kāi)SQL Modeler的幾個(gè)途徑:
?????窗口由三個(gè)主要部分組成: ?????在SQL Modeler里面,還支持對(duì)生成的SQL進(jìn)行Explain Plan,調(diào)試SQL的性能,運(yùn)行SQL,看是否得到了希望的結(jié)果,保存生成的語(yǔ)句,或者把語(yǔ)句粘貼到SQL Editor里面。 ?????有了SQL Modeler的幫助,即使是初級(jí)的程序員也能編寫(xiě)出復(fù)雜而又高效的SQL查詢來(lái)。比如下面的例子 ?????生成步驟: ?????1. 選出表emp, dep, manager ?????2. 用鼠標(biāo)拖住emp的emp_name和emp_no, dep的name,manager的name ?????3. 雙擊criteria窗口的emp_no condition列,彈出窗口,輸入查詢條件,比如emp_no=3 ?????4. 由于結(jié)果里面不希望emp_no出現(xiàn),雙擊emp_no列的visible,設(shè)置為false ?????5. 這樣就出來(lái)了需要的查詢,現(xiàn)在可以運(yùn)行查詢得到結(jié)果,對(duì)查詢SQL進(jìn)行分析,或者在SQL Editor里面打開(kāi)這個(gè)SQL,或者保存為SQL Model文件,或者再進(jìn)一步處理,比如加排序, 匯總等。 ?????DBA方面的功能: ?????Toad在DBA日常管理方面的能力是非常強(qiáng)大的,可以幫助DBA安全快速地完成許多日常工作,還有Toad特有的一些小工具能完成一些普通方法很難做到的功能。下面大概講述了各個(gè)常用模塊的主要功能: ?????a) Database Monitor ?????提供直觀的Oracle數(shù)據(jù)庫(kù)運(yùn)行狀況,包括下面這些詳細(xì)信息:可以看到邏輯IO,物理IO,各個(gè)狀態(tài)的session數(shù)目,SGA的利用率,共享池的使用狀況,各類事件的等待狀況,以及各類事件隨著時(shí)間的變化情況 ?????b) Instance Monitor ?????c) Unix Monitor: ?????d) Trace/Kill session ?????e) Oracle Parameter ?????f) NLS_PARAMETER: ?????g) Extents ?????h) Tablespace ?????i) Tablespace Map: ?????j) Server Statistics: ?????k) Pinned Code: ?????l) Control Files: ?????可以查看當(dāng)前系統(tǒng)有哪幾個(gè)控制文件,以及控制文件內(nèi)部記錄的詳細(xì)信息。(實(shí)際上就是V$CONTROLFILE, V$CONTROLFILE_RECORD_SECTION) ?????m) Redo Log Manager: ?????n) Repair chained rows: ?????o) Identify Space Deficits ?????如果系統(tǒng)出現(xiàn)1659,1653錯(cuò)誤,就是一個(gè)不合格的DBA。但是要即時(shí)預(yù)見(jiàn)這些錯(cuò)誤,還是有一定的難度的。有了Toad的這個(gè)小工具之后,一點(diǎn)某個(gè)表空間,就知道這個(gè)表空間里面的剩余自由空間是否允許任何表能夠擴(kuò)展到下一個(gè)extent。并能夠在發(fā)現(xiàn)問(wèn)題之后,直接改正問(wèn)題。 ?????p) Estimate Table/Index Size ?????1. 自己可以定義將來(lái)表中需要存儲(chǔ)的數(shù)據(jù)的數(shù)目 ?????2. 多種估計(jì)方式: ?????q) Analyze All Tables ?????r) Rebuild Table ?????s) Relocate Index ?????t) Generate Schema Scripts: ?????u) Compare Schema:


文章來(lái)源:http://21958978.spaces.live.com/Blog/cns!A7DF246804AD47BB!210.entry