toad 還可以外掛一些別的產品,比如pl/formatter, revealnet knowledge base , sql impact等,這些都能夠和toad緊密集成,共同提供了一個完美的集成開發環境。新版本還新增加了dba模塊,更加拓廣了toad這個產品的適用范圍。
二、系統要求: 客戶端: ü windows 95 / 98 / nt/2000中英文均可 ü 完整安裝的sql*net 2.0或者net8 ü 磁盤:一般安裝需要20m左右的空間,根據所選擇模塊的不同和安裝方式的不同,最少也要5m的磁盤空間(從網絡服務器讀取) ü 內存:windows 9x/me:16m 內存;windows nt/2000: min 32m] ü tuning模塊需要額外的25m空間
服務器端: ü oracle 7.3 或者更高,在任何硬件平臺上。 ü 需要一個dba用戶帳號
三.安裝: 1. 三種安裝方式的選擇: a) toad and personal configuration files to pc 默認安裝選擇,完成一個完整的client端的安裝,把所有需要的文件拷貝到本地toad目錄。 絕大多數用戶應該選擇使用這個安裝方式。 b) personal config files to pc, read toad from network server 從網絡服務器讀取toad程序,在本地計算機安裝一些自定義的文件,并且創建到服務器文件的快捷方式,一般不推薦使用這個方式,而且要求網絡服務器已經配置。 c) toad to network server 把toad安裝到網絡服務器上,以便這樣別的用戶能夠進行personal config files to pc, read toad from network server這種方式的安裝。 2. 根據需要使用到的特性,需要運行一些腳本(都在toad/temps目錄下) ü 如果需要用toad來查看執行計劃,必須運行腳本preptoad.sql或者notoad.sql n 如果希望專門建立一個toad 用戶來存放toad需要使用的對象的話,就運行preptoad.sql。 n 如果希望在當前連接用戶模式下建立toad需要使用的對象的話,就運行notoad.sql。 n 注意,如果是選擇了專門建立toad這個用戶的話,需要先修改一下腳本,指定用戶的默認表空間和臨時表空間。 ü 需要使用oracle8i 的profile analyzer,必須運行toadprofiler.sql ü 需要加強toad的安全性,必須運行toadsecurity.sql
四、toad使用快速入門 1. schema browser: schema browser是toad的極為有特色的模塊。在schema browser的幫助下,可以方便的瀏覽數據庫內部的各類數據庫對象,比如表,索引,序列,存儲過程等,而且可以方便的倒出ddl語句和進行各種修改,重建工作。定位到某一類對象上,這列對象允許的操作都會自動列出來。 特色: l 支持oracle數據庫里面所有對象的新建、查看、修改,集成了幾乎對所有數據庫對象的管理所需要的功能。 l 按照 模式->對象類別 ->對象->對象可操作屬性 -> 對象本身的詳細信息和對象相關的信息 來組織,非常有條理,容易定位對象,也能夠看到所有你需要的對象的相關信息。 l 對于表: i. 完備的建表向導,不用輸入冗長的語法,更加全面地替你考慮。 ii. 可以修改表的各種邏輯和物理屬性,修改列的屬性,增加列,刪除列(在oracle8i里面),修改表的物理存儲屬性,truncate,drop等。 iii. 可以生成建表的完整的ddl語句,包括存儲信息,權限信息,約束,索引和觸發器等,而這些手工很難做到。 iv. 可以方便的對表進行分析,查看表地所有信息,可以有條件的倒出表里面的數據,并且保存為sql語句。 v. 可以方便的對表進行重組,可以完成exp/imp作不到的事情,而且更少地人工參與,更加安全。
l 對于視圖,存儲過程: i. 可以保存建立視圖、存儲過程的語句為文本, ii. 重新編譯失效的視圖,存儲過程,修改視圖的定義語句等。方便的查看存儲過程的代碼,相互依賴關系,權限信息等保存為文本等。 l 回滾段, i. 簡潔明了的online,offline狀態,方便地online/offline操作 ii. 詳細的回滾段物理信息和當前狀態。 iii. 可以方便的修改物理存儲屬性
l 表空間: i. tablespace map;直觀的顯示數據物理的在表空間上的分布 ii. 直觀的查看各個表空間的利用率、剩余空間、破碎情況等信息 iii. 可以進行各種alter操作:online, offline, 增加數據文件,改變數據文件大小,改變物理存儲屬性等 l 對其他數據庫對象也有完備的操作支持。
2. sql editor: a) 激活sql editor的三種方式: i. 連接到數據庫之后,toad自動打開sql editor這個窗口。 ii. 點擊總工具欄上最左邊的那個按鈕 iii. 從菜單欄:database -> sql editor b) 特點: l 允許同時打開多個編輯窗口,同時編輯多個sql語句 l 支持同時連接到多個數據庫,同時對多個數據庫進行操作 l 允許編輯sql,plsql,java,html和文本 l 使用書簽功能,可以在大量sql語句里,快速定位某個語句所在位置 l sql editor本身具有強大的編輯功能,非常方便編輯sql語句。 l 強大的快捷鍵支持和工具欄快速按鈕的支持,更加高效編寫(很多快捷鍵可以自己定義,在view ->options ->sql editor里面) l 能夠根據前面的條件,智能推測需要輸入的代碼,可以做到某種程度的代碼智能填充 l 把鼠標定位到表/視圖/存儲過程名稱之上,按f4,可以打開對象描述窗口,方便的查看表和視圖的定義,存儲過程的源代碼, l 非常容易對sql語句的分析其執行計劃:單擊工具欄上的 按鈕就可以看到explain plan的結果 l 支持部分sql*plus命令,可以方便的執行大量的為sql*plus編寫的數據庫腳本 l 可以通過sqlab xpert來對當前sql語句進行全面的分析,給出各種合理的調優意見,只需要單擊工具欄上的tuning按鈕: l 可以方便的保存,打開和運行sql腳本 l 支持對查詢結果進行修改, l 可以把查詢結果以多種格式保存起來,可以保存為html,純文本,xls等多種格式 l 很容易的得到sql函數的列表和用法描述(show sql help window 按鈕) l 可以查看sql語句的執行情況:通過下方的autotrace窗口 ,看到sql語句的實際執行結果和執行效率。 l 支持歷史sql(f8) :可以方便的查詢以前執行過的sql,不用反復重新輸入。 l 可以執行匿名塊,存儲過程,從下方的窗口看到dbms_output的結果,如:
3. stored procedure editor a) 打開存儲過程編寫器的幾個途徑: l 單擊總菜單欄上的第三個按鈕: l 點擊database - > procedure editor , l 可以通過schema browser來調用 b) 一些特點和優點: 1. 強大的自定義設置:從保留字的顯示方式,到自動替換,到各種快捷鍵的定義等等,用得越熟越順手。 2. 3. 自動用不同顏色顯示sql和pl/sql關鍵字,語法清晰明了,可根據自己的習慣來具體定制各類關鍵字的具體顯示方式。可以自定義存儲過程得模板,在新建存儲過程的時候,自動生成程序的框架可以方便的調用schema browser,把鼠標定位于某個對象上,f4,schema browser打開該對象的詳細描述,幫助順利快速開發程序。支持代碼自動更正,如輸入ndf,自動替換成no_data_found,輸入the自動替換成the,類似的自動替換還可以自己修改和添加。 7. 方便的左邊行號顯示,單擊左邊行號就可以實現調試斷點的增加/刪除 8. 對各種快捷鍵的支持,不但包括常見的編輯操作,還可以有自己定義的plsql塊的支持(自己定義快捷方式)。如可以定義ctrl+shift+d:彈出所有plsql block的類型,可以自己選擇。 9. 可以在一個集成開發環境里面,一邊編碼,一邊調試,不用多處切換 10. 方便的同時打開多個存儲過程,通過頁面快速切換 11. 快速編譯存儲過程,快速定位錯誤所在,自己選擇是否同時編譯依賴的存儲過程 12. 內置對pl/formatter,可以用pl/formatter對存儲過程進行格式化,并且可以提供存儲過程的概要分析和修改建議 pl/formatter可以對現有的存儲過程進行高速的格式化,使所有的存儲過程都符合同樣的編寫標準,這樣既有利于提高程序的可讀性,避免不同人寫的模塊的風格上的很差異。 pl/formatter 還有助于提高程序的模塊化,增強程序的結構清晰度,增強sql的共用性。 pl/formatter 還可以幫助完成pl/sql和oracle版本之間的管理。
13. 內置revealnet knowledge base,單擊鼠標右鍵就可以打開,快速得到技術上的支持,解決技術難題 npl/sql: n包含整個開發過程中可能遇到問題的答案 ncode library:大量的嚴謹的pl/sql代碼例子和現成過程,完全源代碼提供 n各種錯誤處理模塊可供參考,各類字符日期函數 n包含1400多個主題 nadmin: n解答dba日常工作中80%的常見問題,覆蓋2400多個主題 n從網絡到性能優化,從備份恢復到error message,一應俱全 例子:遇到失效的存儲過程怎么辦? 4. 如何對存儲過程進行debug? u 需要toad單獨的debug option(standard version 沒有這個選項) u 要用toad對存儲過程進行debug,必須安裝oracle的系統包:dbms_debug,而且必須安裝oracle probe api v2.0 或者更高的版本。 u 集成在stored precedure editor里面,可以一邊編寫一邊調試,大大提高開發效率 u 打開procedure editor后,debug菜單激活,可以開始進行debug工作。 u 允許對存儲過程進行逐行調試、斷點調試,也支持對觸發器進行調試。 u 可以有斷點支持,支持watch變量,允許運行時改變變量的值 u 允許對多層調用的debug支持 調試步驟具體舉例: 1. 點擊菜單欄的第三個按鈕: ,打開procedure editor 2. 點擊procedure editor的菜單欄的 按鈕,調出需要調試的存儲過程 3. 單擊工具欄上的按鈕 ,輸入需要傳入的參數,如果不需要傳入參數,可以直接單擊工具欄上的按鈕: ,直接開始調試,如下圖輸入傳入參數:
5. sql modeler: sql modeler可以幫助開發人員很容易的寫出各種復雜的sql語句,只需通過簡單的拖動鼠標,就能夠寫出復雜的sql語句來。 打開sql modeler的幾個途徑: i. 菜單欄 database -> sql modeler ,打開窗口 ii. 單擊工具欄第四個按鈕 ,打開sql modeler窗口 窗口由三個主要部分組成: n 表選擇區域:最右邊的那個部分,用來選擇from子句中用到的表。拖動到左邊的區域或者雙擊就選擇了該表。 n 表模型區域:用來圖形化的顯示選擇的表和表之間的關聯關系。 n 生成sql區域:這里顯示用圖形化方式創建的查詢對應的sql語句,
dba方面的功能: toad在dba日常管理方面的能力是非常強大的,可以幫助dba安全快速地完成許多日常工作,還有toad特有的一些小工具能完成一些普通方法很難做到的功能。下面大概講述了各個常用模塊的主要功能: a) database monitor 提供直觀的oracle數據庫運行狀況,包括下面這些詳細信息: 可以看到邏輯io,物理io,各個狀態的session數目,sga的利用率,共享池的使用狀況,各類事件的等待狀況,以及各類事件隨著時間的變化情況 b) instance monitor i. 可以用來檢查本地tnsnames.ora文件里面定義的所有節點、listener和數據庫的運行狀態和版本等相關信息。 ii. 可以遠程啟動、關閉數據庫(如果設置了password驗證方式) c) unix monitor: i. 可以監控unix機器的運行狀況比如詳細的機器啟動時間,cpu利用率,主要的進程以及這些進程占用的資源,主要的磁盤io等。 d) trace/kill session i. 方便的查看所有的連接用戶相關信息:比如終端,程序,連接時間等 ii. 對某個用戶進行跟蹤,查看用戶執行的sql語句,查看語句的執行計劃, iii. 方便的查閱系統的lock對象,有沒有什么等待別的事務釋放鎖的情況,并能夠輕易查出等待什么用戶的什么事件結束,那個用戶執行的是什么sql。 iv. 查看回滾段的使用狀態,什么用戶,什么語句,使用的什么回滾段,多少讀寫量等 e) oracle parameter i. 可以方便的查看oracle系統的參數:是否默認值,參數作用的簡要描述,是否可以用alter session/alter system來動態改變,對于那些可以動態改變的參數,可以雙擊鼠標來進行修改
f) nls_parameter: i. 方便的查看session,instance,database一級的nls參數值, ii. 可以動態修改session的nls參數值
g) extents i. 可以查看某個用戶下的表和索引的詳細的存儲情況, ii. 發現那些占用大量空間的表和索引,可以考慮使用相應的對策,比如分區 iii. 發現那些即將達到max_extents的表和索引并可以及時糾正 iv. 發現那些索引和表處于同一個表空間的情況,并可以及時糾正。
h) tablespace i. 直觀的查看每個表空間的利用率,總空間,已使用空間,剩余可是用空間以及默認存儲參數,和表空間是否需要整理等信息 ii. 查看每個表空間的狀態,組成的數據文件, 以及每個數據文件的詳細信息 iii. 查看每個表空間里面存在的對象和這些對象的詳細存儲特性 i) tablespace map: i. 圖形化的顯示表空間里面各個表/索引所占用的空間,各個segment的大小,segment是否連續等信息,非常直觀 ii. j) server statistics: i. 可以非常直觀的看到系統總體運行情況,迅速定位系統瓶頸所在 ii. 可以查看系統范圍內各類等待事件的狀況,查看每個連接會話的狀況, k) pinned code: i. 我們知道,頻繁執行的大的存儲過程最好pin起來,這樣可以避免被oracle在內存不足的情況下換出內存,避免動態加載,也避免flush shared pool的時候被清出內存。 ii. 根據每個模塊的大小,執行次數,決定是否要把某個存儲過程pin起來。一個按鈕就搞定了。 l) control files: 可以查看當前系統有哪幾個控制文件,以及控制文件內部記錄的詳細信息。 (實際上就是v$controlfile, v$controlfile_record_section) m) redo log manager: i. 可以方便的查看log的組,當前日志,每個組里面的成員名字,大小,方便的增加、刪除log組,切換當前日志,對日志歸檔進行具體的控制。 ii. 可以在這個界面里完成幾乎所有的對redo log的操作。 n) repair chained rows: i. chained rows影響系統性能,處于系統性能的考慮,需要把chained rows修復成普通的表的行。使用repaie chained rows,就可以比較容易的做到這一點。選擇需要分析的表,然后分析一下,看有沒有chained rows,如果有,點擊repair,toad就幫你把那些chained rows給修復了。 o) identify space deficits 如果系統出現1659,1653錯誤,就是一個不合格的dba。但是要即時預見這些錯誤,還是有一定的難度的。有了toad的這個小工具之后,一點某個表空間,就知道這個表空間里面的剩余自由空間是否允許任何表能夠擴展到下一個extent。并能夠在發現問題之后,直接改正問題。
p) estimate table/index size i. 數據庫的物理規劃中,表/索引的存儲子句的定義是非常重要的,影響系統。但是沒有什么工具的話,要為表定義合理的存儲子句也不容易。 ii. 在toad里面,專門有工具幫助你合理定義表/索引的存儲情況: 1. 自己可以定義將來表中需要存儲的數據的數目 2. 多種估計方式: a) 根據對已有的數據的分析來定義表的大小(最精確,但是比較慢) b) 根據表定義數據類型來定義表的大小 c) 根據數據字典中以前分析過的數據來估計大小(需要近期分析過該表)
q) analyze all tables i. 基于cbo的sql需要cbo提供最優化的執行路徑來提高程序的執行效率,但是假如對表進行大量的dml操作之后,不及時更新表的統計數據,這時候cbo就不能選擇最為有效的執行路徑,導致程序執行效率低。 ii. 手工分析表比較麻煩,一個一個做。 iii. 用toad的analyze alltables這個工具,可以一次分析整個模式下面的所有表,有豐富的控制選項,包括是采用估計還是完全,是否同時分析索引,估計的話,采用多大的百分比等。 r) rebuild table i. 當表中的數據被反復大量的dml之后,而且pctfree和pctused定義的不合理的情況下,表可能會變得非常破碎,占用大量的extent,索引也會相當破碎,導致效率相當低下。 ii. 傳統的方式是通過exp/imp來解決這個問題,但是步驟實在比較麻煩,手工操作也有一定的危險性。 iii. 使用rebuild table工具,輕松搞定,而且可以手工修改一些通過exp/imp無法修改的參數,比如freelists ,freelists group, tablespace,initial等,還能夠更改列的名字。 s) relocate index i. 我們知道,表和索引一般都需要分開存放到不同的表空間,這樣比較便于管理,性能上也會有一定的提高,因為可以對表和索引同時存取。 ii. 但是實際上很多時候,由于這樣那樣的原因,常常忽略了索引單獨存放這個基本概念,比如建立主鍵約束的時候沒有加using index子句,后來disable/enable了主鍵約束/唯一性約束等,都會導致把索引直接存放到和表同一個表空間里面。 iii. 手工發現這些索引,再逐個移動非常麻煩,容易出錯,在toad里面,就很容易根據用戶/表空間來發現那些不恰當存放的索引,可以批量移動這些索引,并且允許重新定義索引的存儲子句。 t) generate schema scripts: i. 可以用來生成整個用戶下所有/部分對象的ddl語句。可以把結果保存為sql語句或者保存為toad的自定義格式。 ii. 可以用來復制表結構,(exp/imp有非常嚴重的缺陷,就是從一個大的數據庫倒出的表結構,無法導入到一個小的數據庫里面,因為里面包含了原來表的存儲信息,即使選擇rows=n,也要在導入數據庫里面占用相當大的空間) u) compare schema: i. 在開發的時候,有時候同時在幾個開發庫上開發,但是最后兩個庫的結構不完全一樣,很難比較 ii. 用toad的這個功能,可以對兩個數據庫的模式(用戶)下面的所有對象(包括存儲過程)進行比較,可以選擇具體的比較內容。 iii. 可以通過直接打開兩個到各自數據庫的連接,或者根據toad generate schame scripts生成的文件進行對比。 iv. 可以直接生成同步兩個數據庫的sql腳本,給出匯總的區別簡要和詳細報告等。 --------------------------------------------------------------------------------