安裝一個oracle sql developer(免費的),設(shè)置數(shù)據(jù)庫連接后,tools-Monitor Sessions,會提示你選一個連接,然后就可以監(jiān)控了,可以設(shè)置刷新的頻率。
10余年的葉縣網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整葉縣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“葉縣網(wǎng)站設(shè)計”,“葉縣網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
這是該軟件首頁,有下載連接:
簡單點判斷的話,你top或topas觀察下,cpu和磁盤讀的負載情況。
然后生成一份業(yè)務(wù)高峰時段的AWR報告,看看top 5等待事件主要是哪些,是不是跟磁盤讀相關(guān)的等待事件(比如全表掃描)
降低IO最有效的方法就是優(yōu)化sql語句,避免大表全表掃描,根據(jù)awr報告中sga各個內(nèi)存組件的使用情況,適當(dāng)調(diào)整buffer cache的值,來減少磁盤IO
通過配置本地數(shù)據(jù)庫的tns配置文件實現(xiàn):
去oracle安裝目錄下oracle\product\10.2.0\db_2\NETWORK\ADMIN\ 找到tnsnames.ora,用記事本打開,里邊有遠程數(shù)據(jù)庫的tns連接配置串如下
ORCL23 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.23)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ORCL)
)
)
添加好ip、端口和目標數(shù)據(jù)庫的實例名(SID),然后確保tns名稱(ORCL23)在整個文檔中唯一,保存后打開數(shù)據(jù)庫連接工具,輸入遠程數(shù)據(jù)庫上的用戶名密碼,選擇數(shù)據(jù)庫對象為你配置的連接名就可以了
Oracle中的IO問題及其解決思路
對于負載偏重點不同,我們可以簡單的將數(shù)據(jù)庫系統(tǒng)分為CPU負載系統(tǒng)(CPU
Bound
System)和IO負載系統(tǒng)(IO
Bound
System)。顧名思義,CPU負載系統(tǒng)的資源瓶頸在于CPU,而IO負載系統(tǒng)的瓶頸在于磁盤IO。
我們可以通過操作系統(tǒng)的一些命令來確認一個系統(tǒng)是否是存在IO負載。在UNIX下,可以使用"iostat"或者"sar
-d"來看系統(tǒng)的IO情況;在windows下,可以通過系統(tǒng)的性能監(jiān)視器查看,但由于性能監(jiān)控器中看到的IO是靜態(tài)的IO總量信息,并不直觀,因此也可以用本站的TopShow工具來查看實時的IO信息。
在UNIX系統(tǒng)下,發(fā)現(xiàn)CPU
IDEL很低并不一定代表這是一個CPU負載系統(tǒng)。一個IO負載系統(tǒng)在表面上看CPU的IDEL值也可能很低:
監(jiān)控Oracle 數(shù)據(jù)庫中長時間運行進程的兩種方式,通過這些方 法,我們可以監(jiān)控單條語句的 長時間操作,監(jiān)控存儲過程的運行進度,甚至自己'生成'進度信息. 關(guān)鍵詞:監(jiān)控進度V$SESSION_LONGOPS 當(dāng)Oracle 存儲過程運行時間較長時,我們希望客 戶端能了解到它在后臺執(zhí)行的狀況或者進度信息(類 似WINDOWS 安裝軟件時的進度條信息),這樣可以知 道運行在后臺的應(yīng)用進程是否終止或者休眠,更近一 步要求,最好能知道進行到哪一步驟,還有多少時間才 能完成. 簡單到一條SQL 語句的情況,如果執(zhí)行時間較長, 我們?nèi)绾蔚玫剿倪\行狀況?是否后臺還在運行?雖 然可以查看SQL 的執(zhí)行計劃了解它的執(zhí)行步驟,但如 何知道它運行到哪一個步驟了呢?如何才能估計出它 的合理的較為精確的執(zhí)行時間呢? Oracle 數(shù)據(jù)庫前端發(fā)出執(zhí)行命令后,進程在后臺 執(zhí)行,普通開發(fā)人員一般無法了解到后臺在做什么,一 般采用的方法是用DBMSOUTPUT.PUT_LINE 來打印出 來,但DBMS—OUTPUT.PUT—LINE 打印的信息受緩沖區(qū) 大小限制,如果信息較多就容易溢出,而且如果存儲過 程執(zhí)行時間較長,只有在其執(zhí)行完后,這些信息才會打 印出來,這就增加了調(diào)試周期,影響了調(diào)試效果.有的 開發(fā)人員在存儲過程中通過寫日志表的形式來記錄進 度,但需要COMMIT 后其他進程才能看到這些日志信 息,而在某些控制結(jié)構(gòu)中(如游標CURSOR 循環(huán))COM— MIT,則很容易引起ORA 一01555 錯誤,造成程序出錯. 下面介紹兩種監(jiān)控方法. 如何監(jiān)控單條長語句從ORACLE8 開始,出現(xiàn)一個新的動態(tài)視圖:V $SESSION_LONGOPS,從這個視圖可以獲知一些操作 (如全表掃描,并行查詢,RMAN,排序等)的執(zhí)行進度, 我們先來了解一下V$SESSION—LONGOPS 視圖的一些 重要字段: 列說明 sID 會話標識 5ERIAL#會話序列號 OPfE 操作的簡短描述 TARG 盯操作的對象,如xx TAR~_DESC目標描述 SOFAR 目前已執(zhí)行單位數(shù)目 ToTAIWORK 總單位數(shù)目 UNlTS 單位 START_TIME 開始執(zhí)行時間 LAST_ UPDATE_TIME 統(tǒng)計數(shù)據(jù)最后更新時間 TIME_ REMAINING 估計剩余時間c ELAPSED_SECONDS 已執(zhí)行時間(秒) MEsSAGE 統(tǒng)計數(shù)據(jù)匯總信息 USERA^^E 用戶名 ~L_ADDRES5 語句的地址,,用于和V$sql_text 等關(guān)聯(lián) 語句的hash 地址,用于和V$sql_texlSQLHASH VALUE等關(guān)聯(lián) 這個動態(tài)視圖顯示各個運行時間超過6 程.這些進程包含許多備份和恢復(fù)功能,統(tǒng)計數(shù)據(jù)收集,查詢等. 執(zhí)行以下語句就可以得到數(shù)據(jù)庫中各個長時間操 作的進程信息: select'Icfromv$sesslon_ longopswheretime_ re- malnlng0 我們也可以用圖形化工具查看,如TOAD,OEM中 均可查看長操作進程進度信息. Oracle 自帶的管理工具OracleEnterpriseManager (OEM)提供了圖形化查看長操作的功能,如: 計算機系統(tǒng)應(yīng)用2007 Quest公司的數(shù)據(jù)庫管理工具TOAD 也可以看到 長操作信息,如: 表的統(tǒng)計信息. 長時問運行的SQL 語句可以用V$SESSION—LON? 為了能監(jiān)控到查詢進程執(zhí)行的進度,必需使用 CBO 優(yōu)化器并且: 設(shè)置TlMED—STATISTICS或者SQL—TRACE 用ANALYZE語句或者DBMS—STAT 包收集相關(guān) 108 實踐經(jīng)驗P 帕cficalExpen GOPS來監(jiān)控.實際上,長時間運行的存儲過程也可以 監(jiān)控.那是否任何操作都可以通過這個視圖來監(jiān)控進 度呢?很遺憾,V$SESSION—LONGOPS 只會報告它認為 耗時長的操作.對于NEsTEDLOOP/UNIQUEINDEX READS/INDEXRANGEScANS 等執(zhí)行速度很快的操作, 2007 期計算機系統(tǒng)應(yīng)用由于它們執(zhí)行一般不超過6 秒,因此將不會出現(xiàn)在V $SESSION—LONGOPS 如何監(jiān)控自定義存儲過程單條長語句可以用上面的方法監(jiān)控,Oracle 動生成V$SE.SSION— LONGOPS 記錄.那么存儲過程中 有許多小操作,如何監(jiān)控進度呢?其實,我們也可以手 工生成V$SESSION—LONGOPS 記錄,方法是調(diào)用DBMS APPLICATION—INFO 包來生成自定義進度信息. 從Oracle7.2 開始,提供了DBMS—APPLICATION— INFo 包,通過調(diào)用這個包,應(yīng)用可以將自己的名字和 動作填寫到V$SESSION 和V$SQLAREA 的MODULE ACTION列中.V$SESSION 列出每個會話的用戶名,操 作系統(tǒng)機器名,終端名,程序名等. 應(yīng)用可以在執(zhí)行模塊時設(shè)置模塊名和動作名,模 塊名一般是甩戶自定義的.而動作名一般描述模塊中 的當(dāng)前執(zhí)行的事務(wù)的名字. DBMSAPPLICATION_INFO 包包含以下過程 SET_ MODULE 設(shè)置當(dāng)前運行程序的模塊名 SET__AEl'ION 設(shè)置當(dāng)前模塊的當(dāng)前動作名 SESSION—LON-在V$SESSIONLONGOPS視圖中 GoPS 插入一行進度信息 SETMODULE過程設(shè)置模塊名和動作名: createorreplaceproceduredel—cust(v_cust—Id varchar2) begindbms—— application—— info.set— module(module—— name="delcust". actlon_name="deletetablecust)i deletefromcustwherecustld=v_ cusLId; dbms_appllcatlon— Info.seLmodule(,); end;以上設(shè)置的模塊名和動作名可以通過查詢V $sqlarea 獲取. 如:selectsql—text,module,actionfromv $sqlareawheremodule="del_cust: sql_textmoduleadion Deletefr0mcustdel_ custdeletetableoust 1rowselected. SET_SESSION—LONGOPS 過程用于在V$session— longops 中插入一行,開發(fā)人員可以調(diào)用此過程設(shè)置長 時間操作的狀態(tài)信息,這樣,任何其他其他會話都可以 看到這個進度信息.如下例所示: declare nohlntnumberdefaultdbmsapplicatlon_info.set_ session— Iongops_ nohint; IdndexnumberdefaultInohlnt: slnonumber;begin forlIn1..8888888888 loop update....; dbms_ appllcaflon— Info.setsesslon_ longops (rlndex=l_rlndex, slno=I_slno. op_name="updateahugetable. target=126, target_desc='.msgdescription context=0.sOfar=j. totalwork=8888888888. units=loops endloop;end; 然后,從另一個會話來執(zhí)行以下語句selectfromv$sesslon_ longopswheretlmere? malnlng0; 也可以用圖形化工具TOAD 或OEM來查看. 因此,采用本文說明的方法,Oracle 開發(fā)人員可以 比較方便的監(jiān)控長操作進程的進度信息,也可以自己 設(shè)置監(jiān)控信息,來了解后臺存儲過程的運行效率.甚 至,可以在存儲過程或SQL 語句提交執(zhí)行后馬上觀察 其執(zhí)行進度,如果比較緩慢,則可以中斷其執(zhí)行,進行 調(diào)優(yōu),從而縮短調(diào)試周期,提高開發(fā)效率.