軟件項目維護方案(參考示例)_第1頁
軟件項目維護方案(參考示例)_第2頁
軟件項目維護方案(參考示例)_第3頁
軟件項目維護方案(參考示例)_第4頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、.軟件項目維護方案.1. 項目背景及目標1.1. 項目背景在國家政策的指導和幫助下, 信息化也越來越發(fā)揮出十分重要的作用。XXXX不斷加大信息化管理工作力度,積極實施“上網(wǎng)工程”,大力推進全市局域網(wǎng)建設,加快辦公自動化系統(tǒng)進程, 信息技術(shù)在改革中發(fā)揮了重要的支撐作用,為充分發(fā)揮政府公共職能,促進依法理財、科學理財,提供了重要的信息技術(shù)保障。近年來建設各系統(tǒng)隨著數(shù)據(jù)量的逐年增加,陸續(xù)出現(xiàn)了性能問題, 有必要進行數(shù)據(jù)庫系統(tǒng)的升級及性能優(yōu)化, 以確保應用系統(tǒng)的正常運行, 為單位員工提供更好的信息服務。1.2. 項目目標 對各系統(tǒng)數(shù)據(jù)庫進行補丁升級服務,安裝補丁前制定詳細的升級計劃和應急回退計劃。 完

2、成各系統(tǒng)數(shù)據(jù)庫的性能調(diào)優(yōu)工作。 各業(yè)務持續(xù)性得到有效的保證。2. 需求分析XXXXXXX項目,我公司有多年的行業(yè)經(jīng)驗。具有對運維服務對象進行適時監(jiān)測、指標分析、和及時修復的能力。Oracle 產(chǎn)品日常運行維護項目主要從如下幾個方面進行:(1). 每天對 ORACLE數(shù)據(jù)庫的運行狀態(tài) ,日志文件 ,備份情況 ,數(shù)據(jù)庫的空間使用情況 ,系統(tǒng)資源的使用情況進行查看 ,發(fā)現(xiàn)并解決問題。(2). 每周對數(shù)據(jù)庫對象的空間擴展情況 ,數(shù)據(jù)的增長情況進行監(jiān)控 ,對數(shù)據(jù)庫做健康查看 ,對數(shù)據(jù)庫對象的狀態(tài)做查看。(3). 查看表空間碎片 ,提出下一步空間管理計劃。 對 ORACLE數(shù)據(jù)庫狀態(tài)進行一次全面查看。.(

3、4)由于這些數(shù)據(jù)庫系統(tǒng)承載著XXXX非常重要的業(yè)務系統(tǒng)數(shù)據(jù), 所以在日常維護中需要非常仔細,每周、每月、每季都需要有相應的巡檢記錄,需要詳細記載以下一些內(nèi)容:監(jiān)控數(shù)據(jù)庫對象的空間擴展情況監(jiān)控數(shù)據(jù)量的增長情況系統(tǒng)健康查看,查看以下內(nèi)容:數(shù)據(jù)庫對象有效性查看查看是否有危害到安全策略的問題。查看 alert、 Sqlnet 等日志并歸檔報錯日志分析表和索引查看對數(shù)據(jù)庫會產(chǎn)生危害的增長速度查看表空間碎片數(shù)據(jù)庫性能調(diào)整預測數(shù)據(jù)庫將來的性能調(diào)整和維護工作后續(xù)空間3. 整體運行維護服務方案3.1. Lifekeeper維護3.1.1. 驗證LifeKeeper 的安裝查看已經(jīng)安裝的LifeKeeper軟件包

4、,可以使用命令:rpm qa|grep stee3.1.2. 啟動LifeKeepera)啟動 LifeKeeper 服務器進程.如果當前您的系統(tǒng)沒有運行LifeKeeper 則在所有服務器上以root 用戶身份輸入如下命令# /opt/LifeKeeper/bin/lkstartb) 啟動 LifeKeeper GUI服務器進程同樣以 root 用戶運行命令# /opt/LifeKeeper/bin/lkGUIserver start注意:以上命令只需運行一次,以后每次系統(tǒng)重新啟動時,LifeKeeper 會自動運行上述進程3.1.3. 有關(guān)的 LifeKeeper 軟件的其它管理任務a)

5、停止 LifeKeeper 服務如果需要在服務器上永久停止LifeKeeper服務,可以輸入下列命令$LKROOT/bin/lkstop該命令同時會使所有LifeKeeper保護的資源處于退出服務狀態(tài),如果希望在停止LifeKeeper時保持資源 / 應用的運行,可以使用:$LKROOT/bin/lkstop -fb) 查看 LifeKeeper 進程鍵入下列命令可以查看當前運行的所有LifeKeeper 進程列表ps -ef | grep LifeKeeper3.1.4. 啟動 LifeKeeperGUI 配置工具進入 LifeKeeper GUI管理工具可以通過運行命令:/opt/Life

6、Keeper/bin/lkGUIapp則出現(xiàn) LifeKeeper登錄界面:.可以使用 root 用戶登錄,也可以使用新建的用戶進行登錄。3.1.5. 檢測 LifeKeeper 集群運行狀態(tài)可以使用 lcdstatus 命令對 LifeKeeper 集群的當前運行狀態(tài)進行查看, 命令格式:lcdstatus -q -d <主機名 >該程序向stdout 輸出在 LifeKeeper 資源層次配置狀態(tài)和通信路徑的狀態(tài).選項 -q 表示輸出采用簡略的形式(建議使用該選項)選項 d 表示要查看的主機,缺X 查看本機3.1.6. 管理LifeKeeper 中的資源注意:如果能運行 Lif

7、eKeeper GUI,則使用其提供菜單命令執(zhí)行相應操作;在執(zhí)行命令行啟動 / 停止資源前,一定先使用 lcdstatus 命令確認資源的實際狀態(tài)。a) 啟用資源 (In-Service)可以使用命令:./perform_action-t <資源標記名 >-a restore將資源標記名所對應的資源在本機上投入服務(啟動) 。如果該資源在命令使用前已經(jīng)在另一臺機器上處于運行狀態(tài), 則本命令執(zhí)行的結(jié)果相當于執(zhí)行了一次手.工切換!如果該資源在命令使用前是處于停止狀態(tài)(即在備機上執(zhí)行本命令) ,則本命令執(zhí)行的結(jié)果相當于執(zhí)行了一次手工切換b) 停止資源 (out-of-service)可以

8、使用命令:./perform_action-t <資源標記名 >-a remove將資源標記名所對應的資源在本機上停止服務。如果該資源在命令使用前已經(jīng)在另一臺機器上處于運行狀態(tài),則本命令執(zhí)行不產(chǎn)生任何結(jié)果注意:在執(zhí)行命令行前后,一定先使用lcdstatus 命令確認資源的當前狀態(tài)。命令停止 / 啟動本地的資源命令中的 <資源標記名 >是區(qū)分大小寫的一定要等待命令完成,注意命令的輸出。詳細用法見在線幫助手冊。3.2. SQL SERVER 維護計算機系統(tǒng)各種軟、硬件故障、用戶誤操作以及惡意破壞是不可避免的,這些影響到數(shù)據(jù)的正確性甚至造成數(shù)據(jù)損失、服務器崩潰等致命后果。 數(shù)

9、據(jù)庫的備份對保證系統(tǒng)的可靠性具有重要的作用。下面會根據(jù)執(zhí)行強度對維護任務及其相應的程序進行分類描述,執(zhí)行強度用不同的時間間隔定義,包括每天、每周、每月和每季度,能夠建立起良好的維護實務,確保 SQL Server數(shù)據(jù)庫性能和安全。3.2.1. 每天的例行維護任務需要數(shù)據(jù)庫管理員密切關(guān)注的維護任務,最好每天都查看一下, 這樣可以確保系統(tǒng)的可靠性、可用性、運行性能和安全。每天的例行維護任務包括:1、查看是不是所有被請求的SQL Server服務都正常運行。2、查看日常備份日志中成功、警告或者失敗記錄。.3、查看 Windows 事件日志有沒有錯誤記錄。4、查看 SQL Server日志有沒有安全警

10、告記錄,例如非法登錄。5、執(zhí)行完全備份或差異備份。6、在設置了完全恢復模型或大容量日恢復模型的數(shù)據(jù)庫上執(zhí)行事務日志備份任務。7、核實 SQL Server作業(yè)沒有失敗。8、查看所有的數(shù)據(jù)庫文件和事務日志具有合適的磁盤空間大小。9、至少要監(jiān)控處理器、內(nèi)存或者磁盤計數(shù)器沒有出現(xiàn)瓶頸。3.2.2. 每周的例行維護任務關(guān)注程度稍遜于每天的例行維護任務,最好每周進行一次例行查看。 每周的例行維護任務包括:1、執(zhí)行完全備份或差異備份。2、查看以前執(zhí)行的維護計劃報告。3、查看數(shù)據(jù)庫完整性。4、如果需要,執(zhí)行收縮數(shù)據(jù)庫任務。5、通過重新組織索引任務壓縮聚集和非聚集表和視圖。6、通過重新生成索引任務在數(shù)據(jù)頁和索

11、引頁重新組織數(shù)據(jù)。7、更新所有用戶表和系統(tǒng)表的統(tǒng)計信息8、清除備份、還原、 SQL Server代理作業(yè)和維護計劃等操作的歷史數(shù)據(jù)。9、如果需要,手動增長數(shù)據(jù)庫或事務日志文件10、清除執(zhí)行維護計劃殘留下來的文件。3.2.3. 每月或每季度的維護任務有一些維護計劃不需要執(zhí)行得過于頻繁,可以每個月或每個季度執(zhí)行一次。但是請不要以為這些任務不需要天天執(zhí)行就無足輕重,這些任務可以確保數(shù)據(jù)庫環(huán)境的健康,所以不要輕視以下這些維護任務:1、在測試環(huán)境中執(zhí)行備份還原操作。2、將歷史數(shù)據(jù)歸檔。.3、分析收集的性能統(tǒng)計數(shù)據(jù),與基準值相比較。3、查看并更新維護文檔。4、查看并安裝最新的SQL Server補丁和補丁

12、包。5、如果運行簇、數(shù)據(jù)庫鏡像或日志傳送,則監(jiān)測故障轉(zhuǎn)移。6、驗證備份和還原進程是否遵循已定義的服務等級協(xié)議。7、更新 SQL Server構(gòu)建指南。8、更新 SQL Server災難恢復文檔。9、更新維護計劃列表10、修改管理員口令。11、修改 SQL Server服務帳戶口令。3.3. WebLogic維護3.3.1. 性能調(diào)優(yōu).設定執(zhí)行隊列的溢出條件Weblogic Server 提供給默認的執(zhí)行隊列或用戶自定義的執(zhí)行隊列自定義溢出條件的功能,當滿足此溢出條件時,服務器改變其狀態(tài)為“警告”狀態(tài),并且額外的再分配一些線程去處理在隊列中的請求,而達到降低隊列長度的目的。通過啟動

13、管理控制臺,在域(如:mydomain)> 服務器 > server實例(如:myserver)>Execute Queue > weblogic.kernel.Defalt >配置下面幾項:隊列長度:此值表示執(zhí)行隊列中可容納的最大請求數(shù),默認值是65536,最后不要手動改變此值。隊列長度閾值百分比: 此值表示溢出條件, 在此服務器指出隊列溢出之前可以達到的隊列長度大小的百分比。線程數(shù)增加:當檢測到溢出條件時,將增加到執(zhí)行隊列中的線程數(shù)量。如果CPU和內(nèi)存不是足夠的高,盡量不要改變默認值“0”。因為 Weblogic 一旦增加后不會自動縮減,雖然最終可能確實起到了

14、降低請求的作用,但在將來的運行中將影.響程序的性能。最大線程數(shù):為了防止創(chuàng)建過多的線程數(shù)量,可以通過設定最大的線程數(shù)進行控制。在實際的應用場景中,應根據(jù)具體情況適當?shù)恼{(diào)整以上參數(shù)。.設定隊列監(jiān)測行為Weblogic Server能夠自動監(jiān)測到當一個執(zhí)行線程變?yōu)椤白枞?。變?yōu)椤白枞睜顟B(tài)的執(zhí)行線程將無法完成當前的工作, 也無法再執(zhí)行新請求。 如果執(zhí)行隊列中的所有執(zhí)行線程都變?yōu)椤白枞睜顟B(tài), Weblogic server 可能改變狀態(tài)為“警告”或“嚴重”狀態(tài)。如果 Weblogic server 變?yōu)椤皣乐亍睜顟B(tài),可以通過 Node Manager來自動關(guān)閉此服務器并重新啟動它。具

15、體請參考:Node Manager Capabilities 文檔。通過啟動管理控制臺,在域(如:mydomain)> 服務器 > server實例(如:myserver)>配置 > 調(diào)整下可配置下面幾項:阻塞線程最長時間: 在此服務器將線程診斷為阻塞線程之前, 線程必須連續(xù)工作的時間長度 (秒 )。默認情況下, WebLogic Server 認為線程在連續(xù)工作 600 秒后成為阻塞線程。阻塞線程計時器間隔: WebLogic Server 定期掃描線程以查看它們是否已經(jīng)連續(xù)工作了 "阻塞線程最長時間 " 字段中指定的時間長度的間隔時間 (秒 )。

16、默認情況下, WebLogic Server 將此時間間隔設置為 600 秒。.1. 盡量使用本地IO 庫WebLogic Server有兩套套接字復用器: Java版和本地庫。采用小型本地庫更有效 ,盡量激活 Enable Native IO(默認 ),此時 UNIX默認使用 CPUs+1個線程 ,Window下為雙倍CPU。如果系統(tǒng)不能加載本地庫,將會拋出java.lang.UnsatisfiedLinkException,此時只能使用Java 套接字復用器,可以調(diào)整socket readers 百分比 , 默認為33%。 該參 數(shù)可以在 Console Server Tun

17、ingConfiguration 配置欄里設置,配置完,重新啟動WebLogic Server即可。..2. 調(diào)整默認執(zhí)行線程數(shù)名稱開發(fā)模式產(chǎn)品模式推薦個數(shù)Execute默認的執(zhí)行線程為15默認的執(zhí)行線程為25200Queues在管理控制臺修改默認執(zhí)行隊列線程數(shù)的步驟如下:如果管理服務器沒有運行,先啟動。訪問管理控制臺。展開左邊面板的Servers 節(jié)點,顯示 Server列表。右擊 Server,在彈出菜單中選擇View Execute Queues ,就會在右邊面板顯示有執(zhí)行隊列的表用來修改。注意:你只能修改默認的執(zhí)行隊列或者用戶定義的執(zhí)行隊列。在 Name 列,直接點擊默認

18、執(zhí)行隊列名稱,顯示配置標簽用來修改執(zhí)行隊列數(shù)。填下適當?shù)木€程數(shù)。點擊 Apply,保存剛才的修改。.重啟 Server,使新的執(zhí)行隊列設置生效。.JDBC 調(diào)優(yōu).1. 驅(qū)動程序類型選擇Oracle提供 thin 驅(qū)動和 oci 驅(qū)動 ,從性能上來講 ,oci 驅(qū)動強于 thin 驅(qū)動 ,特別是大數(shù)據(jù)量的操作。但在簡單的數(shù)據(jù)庫操作中,性能相差不大 ,隨著 thin 驅(qū)動的不斷改進 ,這一弱勢將得到彌補。 而 thin 驅(qū)動的移植性明顯強于oci 驅(qū)動。所以在通常情況下建議使用thin 驅(qū)動.2. 調(diào)節(jié)連接池初始容量和最大容量JDBC Connection

19、 Pool的調(diào)優(yōu)受制于 WebLogic Server線程數(shù)的設置和數(shù)據(jù)庫進程數(shù) ,游標的大小。通常我們在一個線程中使用一個連接,所以連接數(shù)并不是越多越好 ,為避免兩邊的資源消耗,建議設置連接池的最大值等于或者略小于線程數(shù)。同時為了減少新建連接的開銷,將最小值和最大值設為一致; 值等于 WebLogicServer 的執(zhí)行線程數(shù)。..3. 其他配置盡管 JDBC Connection Pool 提供了很多高級參數(shù) ,在開發(fā)模式下比較有用 ,但大部分在生產(chǎn)環(huán)境下不需調(diào)整。這里建議最好不要設置測試表, 同時TestReserved Connections和 Test Released

20、 Connections也無需勾上。當然如果你的數(shù)據(jù)庫不穩(wěn)定 ,時斷時續(xù) ,你就可能需要上述的參數(shù)打開.WEB 調(diào)優(yōu).1. 調(diào)整 WEB應用描述符WEB應用除代碼之外的調(diào)優(yōu)比較簡單,僅僅是對一些 WEB應用描述符的調(diào)整。首先關(guān)閉 Session Monitoring Enabled,僅僅在 Cluster 環(huán)境下設置 Session復制 (優(yōu)先使用內(nèi)存復制 ),在保證應用正常運行的情況下,設置較短的Session 超時時間。同.時生產(chǎn)環(huán)境下無需查看Jsp和 servlet:JSPPage Check Secs和 Servlet Reload CheckSecs均設為

21、 -1,關(guān)閉 JSPKeep Generated 和 JSPVerbose 對性能也有幫助。此外,還可以對 jsp 進行預編譯 ,有兩種方法:激活 precompile 選項;使用 weblogic.appc事先編譯,建議采用后者。.其他調(diào)優(yōu)設置.1. WebLogic 文件描述符大小調(diào)整首先設置 WEB主機系統(tǒng)的 ulimit 參數(shù)為 unlimited,然后設置 WebLogic中文件描述符的大小。在WL_HOME/bea/weblogic/common/bin 中打開文件 commEnv.sh,修改設置文件描述符大小的指令,將默認的:ulimit n 1024

22、 修改為: ulimitn 81923.3.2. 維護管理.啟動 weblogic server啟動管理服務器:執(zhí)行startAdmserver.sh啟動被管理服務器:執(zhí)行startManagedWebLogic.sh servername adminurl.停止 weblogic server停止被管理服務器:執(zhí)行 stopWebLogic.sh servername 啟動被管理服務器:執(zhí)行 stopWebLogic.sh.登錄和退出管理控制臺管理服務器啟動后可以在瀏覽器中登錄管理控制臺輸入 URL:http:/hostname:port/conso

23、le或 https:/hostname:port/console.hostname:管理服務器的ip 地址或 DNS名port :管理服務器監(jiān)聽的端口如果管理服務器啟動時使用SSL,則使用 https 訪問管理控制臺在彈出的窗口“ Console Login 中“輸入用戶名和密碼登錄.性能監(jiān)控查看性能參數(shù)登錄控制臺后點擊Servers-servername-Monitoring-Performance參數(shù)分析1)Idle Threads && Queue Length && Throughout正常情況下idle threads >0 ,qu

24、eue Length 為 0,Throughout 呈不規(guī)則變化曲線,Memory Usage 呈適度頻度的鋸齒變化曲線。一般來說,對于正常配置的生產(chǎn)環(huán)境(線程數(shù)50200),如果 idle threads <10,或者呈現(xiàn)不斷降低的趨勢,就應加以關(guān)注;空閑線程數(shù)與隊列長度通常有如下關(guān)系:A、如果空閑線程數(shù) >0 ,則 queue length =0 ;B、反之,如果 queue length>0 ,則空閑線程數(shù) =0 ;2)Memory Usage.Memory Usage = totalMemory() freeMemory()內(nèi)存使用曲線反應了JVM Heap內(nèi)存使用的

25、變化情況,可以結(jié)合其他三個值的變化情況來判斷 server 工作情況;比較理想的狀態(tài)是適當頻度的各種鋸齒變化,由于 JVM GC多采用“ stop the world”機制,也就是垃圾回收時其他處理將暫停,過度頻繁的 GC將明顯降低 server 工作效率和性能表現(xiàn)。3.4. Oracle 維護Oracle Database,又名 Oracle RDBMS,或簡稱 Oracle。是甲骨文公司的一款關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它是在數(shù)據(jù)庫領(lǐng)域一直處于領(lǐng)先地位的產(chǎn)品??梢哉fOracle 數(shù)據(jù)庫系統(tǒng)是目前世界上流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng),系統(tǒng)可移植性好、使用方便、功能強,適用于各類大、中、小、微機環(huán)境。它是一

26、種高效率、可靠性好的適應高吞吐量的數(shù)據(jù)庫解決方案。3.4.1. 數(shù)據(jù)庫性能優(yōu)化Oracle 性能管理既是一種藝術(shù),也是一種科學。從實用角度講,它可以分為兩種類型,主動式和被動式性能管理。 主動式性能管理涉及到特定系統(tǒng)實施初期的設計和開發(fā),包括硬件選擇、性能及容量規(guī)劃,海量存儲系統(tǒng)的選擇,I-O子系統(tǒng)配置及優(yōu)化,以及如何對不同組件進行定制,以滿足Oracle 數(shù)據(jù)庫和應用系統(tǒng)的復雜要求。被動式性能管理涉及到現(xiàn)有環(huán)境中不同組件的性能評估、故障排除和Oracle 環(huán)境的優(yōu)化。本文旨在探討如何進行被動式性能調(diào)優(yōu),以便為Oracle 性能調(diào)優(yōu)提供必要的指導, 從而避免僅僅通過反復嘗試的方式進行性能調(diào)優(yōu),

27、提高Oracle 性能管理的效率。所以 ORACLE數(shù)據(jù)庫性能惡化表現(xiàn)基本上都是用戶響應時間比較長,須要用戶長時間的等待。獲得滿意的用戶響應時間有兩個途徑:一是減少系統(tǒng)服務時間,即提高數(shù)據(jù)庫的吞吐量;二是減少用戶等待時間,即減少用戶訪問同一數(shù)據(jù)庫資源的沖突率。對于以上的兩個問題,通常我們采用以下幾個方面來進行改善:.調(diào)整服務器內(nèi)存分配。例如,可以根據(jù)數(shù)據(jù)庫運行狀況調(diào)整數(shù)據(jù)庫系統(tǒng)全局區(qū)(SGA 區(qū))的數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)和共享池的大??;還可以調(diào)整程序全局區(qū)( PGA 區(qū))的大小。調(diào)整硬盤I/O 問題,達到I/O 負載均衡。調(diào)整運用程序結(jié)構(gòu)設計。優(yōu)化調(diào)整操作系統(tǒng)參數(shù)和使用資源管理器。SQL 優(yōu)化

28、、診斷 latch 競爭、Rollback(undo) Segment 優(yōu)化、提升 block 的效率等等。.查看 Oracle 數(shù)據(jù)庫性能查看 Oracle 數(shù)據(jù)庫性能情況,包含:查看數(shù)據(jù)庫的等待事件,查看死鎖及處理,查看cpu、 I/O、內(nèi)存性能,查看是否有僵死進程,查看行鏈接/ 遷移,定期做統(tǒng)計分析,查看緩沖區(qū)命中率,查看共享池命中率,查看排序區(qū),查看日志ORACLE產(chǎn)品日常運行維護年度服務項目緩沖區(qū),總共十個部分。.1. 查看數(shù)據(jù)庫的等待事件set pages 80set lines 120col event for a40select sid,event,

29、p1,p2,p3,WAIT_TIME,SECONDS_IN_WAIT from v$session_wait where event notlike 'SQL%' and event not like 'rdbms%'如果數(shù)據(jù)庫長時間持續(xù)出現(xiàn)大量像latch free,enqueue,buffer busy waits,db filesequential read,db file scattered read 等等待事件時,需要對其進行分析,可能存在問題的語句。.2. 查看消耗 CPU 最高的進程SET LINE 240SET VERIFY OFF

30、.COLUMN SID FORMAT 999COLUMN PID FORMAT 999COLUMN S_# FORMAT 999COLUMN USERNAME FORMAT A9 HEADING "ORA USER"COLUMN PROGRAM FORMAT A29COLUMN SQLFORMAT A60COLUMN OSNAME FORMAT A9 HEADING "OS USER"SELECT P.PIDPID,S.SID SID,P.SPIDSPID,S.USERNAMEUSERNAME,S.OSUSEROSNAME,P.SERIAL#S_#,P.

31、TERMINAL,P.ROGRAMPROGRAM,P.BACKGROUND,S.STATUS,RTRIM(SUBSTR(A.SQL_TEXT, 1,80) SQLFROM V$PROCESS P, V$SESSION S,V$SQLAREA A WHERE.ADDR =PS.PADDR ANDS.SQL_ADDRESS = A.ADDRESS (+) AND.SPIDPLIKE '%&1%'.3. 查看碎片程度高的表SQL> SELECTsegment_name table_name,COUNT(*) extents FROM dba_segment

32、s WHERE ownerNOT IN ('SYS', 'SYSTEM') GROUP BY segment_name HAVING COUNT(*)=(SELECT MAX(COUNT(*)FROM dba_segments GROUP BY segment_name);.4. 查看表空間的I/O 比例SQL>SELECTDF.TABLESPACE_NAMENAME,DF.FILE_NAME"FILE",F.PHYRDSPYR,F.PHYBLKRDPBR,F.PHYWRTSPYW, F.PHYBLKWRT PBWFROM

33、V$FILESTATF,DBA_DATA_FILES DF WHEREF.FILE# = DF.FILE_ID ORDER BY DF.TABLESPACE_NAME;.5. 查看文件系統(tǒng)的I/O 比例SQL>SELECTSUBSTR(A.FILE#,1,2)"#",SUBSTR(A.NAME,1,30)"NAME",A.STATUS,A.BYTE.S,B.PHYRDS,B.PHYWRTS FROM V$DATAFILE A, V$FILESTAT B WHERE A.FILE# =B.FILE#;.6. Disk Re

34、ad最高的 SQL語句的獲取SQL>SELECT SQL_TEXT FROM (SELECT * FROM V$SQLAREA ORDER BY DISK_READS) WHERE ROWNUM<=5 desc;.7. 查找前十條性能差的sqlSELECT * FROM (SELECT PARSING_USER_IDEXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,SQL_TEXT FROM V$SQLAREA ORDER BY DISK_READS DESC)WHERE ROWNUM<10 ;.8. 等待時間最多的

35、5 個系統(tǒng)等待事件的獲取SELECT * FROM (SELECT * FROM V$SYSTEM_EVENT WHERE EVENT NOT LIKE 'SQL%'ORDER BYTOTAL_WAITS DESC) WHERE ROWNUM<=5;.9. 查看運行很久的SQLCOLUMN USERNAME FORMAT A12COLUMN OPNAME FORMAT A16COLUMN PROGRESS FORMAT A8SELECT USERNAME,SID,OPNAME,ROUND(SOFAR*100/ TOTALWORK,0) | '%

36、9; ASPROGRESS,TIME_REMAINING,SQL_TEXTFROM V$SESSION_LONGOPS, V$SQL WHERETIME_REMAINING <> 0 AND SQL_ADDRESS=ADDRESS AND SQL_HASH_VALUE = HASH_VALUE;..10.查看死鎖及處理查詢目前鎖對象信息:col sid for 999999col username for a10col schemaname for a10col osuser for a16col machine for a16col terminal for a20

37、col owner for a10col object_name for a30col object_type for a10select sid,serial#,username,SCHEMANAME,osuser,MACHINE, terminal,PROGRAM,owner,object_name,object_type,o.object_id from dba_objects o,v$locked_object l,v$session swhere o.object_id=l.object_id and s.sid=l.session_id; oracle 級 kill 掉該 sess

38、ion:alter system kill session '&sid,&serial#'操作系統(tǒng)級kill 掉 session:#>kill -9 pid.11.查看數(shù)據(jù)庫 cpu、I/O 、內(nèi)存性能記錄數(shù)據(jù)庫的cpu 使用、 IO、內(nèi)存等使用情況,使用vmstat,iostat,sar,top 等命令進行信息收集并查看這些信息,判斷資源使用情況。CPU 使用情況:rootsale8 # toptop - 10:29:35 up 73 days, 19:54,1 user,load average: 0.37, 0.38, 0.29Task

39、s: 353total,2 running, 351 sleeping,0 stopped,0 zombieCpu(s):1.2% us,0.1% sy, 0.0% ni, 98.8% id,0.0% wa,0.0% hi,0.0% si.Mem:16404472k total, 12887428k used, 3517044k free,60796k buffersSwap:8385920k total,665576k used,7720344k free, 10358384k cachedPID USER30495 oracle32501 oracle32503 oracle注意上面的加粗

40、字體部分, 此部分內(nèi)容表示系統(tǒng)剩余的cpu,當其平均值下降至10%以下的時視為CPU 使用率異常,需記錄下該數(shù)值,并將狀態(tài)記為異常內(nèi)存使用情況:# free -mTotalusedfreesharedbufferscachedMem:20261958670761556-/+ buffers/cache:3261700Swap:5992925900如上所示, total 表示系統(tǒng)總內(nèi)存, used 表示系統(tǒng)使用的內(nèi)存, free 表示系統(tǒng)剩余內(nèi)存,當剩余內(nèi)存低于總內(nèi)存的10%時視為異常。系統(tǒng)負載情況:#uptime12:08:37 up 162 days, 23:33, 15 users,loa

41、d average: 0.01, 0.15, 0.10如上所示,load average 部分表示系統(tǒng)負載, 后面的3 個數(shù)值如果有高于2.5 的時候就表明系統(tǒng)在超負荷運轉(zhuǎn)了,并將此值記錄到巡檢表,視為異常。.12.查看是否有僵死進程select spid from v$process where addr not in (select paddr from v$session);有些僵尸進程有阻塞其他業(yè)務的正常運行,定期殺掉僵尸進程。..13.查看行鏈接 / 遷移Sql>select table_name,num_rows,chain_cnt From db

42、a_tables Where owner='CTAIS2'Andchain_cnt<>0;注:含有 long raw 列的表有行鏈接是正常的 ,找到遷移行保存到 chained_rows 表中 , 如沒有該表執(zhí)行 ./rdbms/admin/utlchain.sql Sql>analyze table tablename list chained rows;可通過表 chained_rows 中 table_name,head_rowid 看出哪些行是遷移行如 : Sql>create table aa as selecta.* from sb_zsxx

43、 a,chained_rows b where a.rowid=b.head_rowid andb.table_name ='SB_ZSXX'sql>delete from sb_zsxx where rowid in (selecthead_rowid from chained_rows where table_name = 'SB_ZSXX');sql>insertinto sb_zsxx select * from chained_row where table_name = 'SB_ZSXX'.14.定期做統(tǒng)計分

44、析對于采用Oracle Cost-Based-Optimizer的系統(tǒng),需要定期對數(shù)據(jù)對象的統(tǒng)計信息進行采集更新,使優(yōu)化器可以根據(jù)準備的信息作出正確的explain plan。在以下情況更需要進行統(tǒng)計信息的更新:應用發(fā)生變化;大規(guī)模數(shù)據(jù)遷移、歷史數(shù)據(jù)遷出、其他數(shù)據(jù)的導入等;數(shù)據(jù)量發(fā)生變化。查看表或索引的統(tǒng)計信息是否需更新,如:Sql>Select table_name,num_rows,last_analyzed From user_tables wheretable_name ='DJ_NSRXX'sql>select count(*) from DJ_NSRXX

45、如 num_rows 和 count(*) 如果行數(shù)相差很多 ,則該表需要更新統(tǒng)計信息,建議一周做一次統(tǒng)計信息收集,如:Sql>execsys.dbms_stats.gather_schema_stats(ownname=>'CTAIS2',cascade=>TRUE,degree4);..15.查看日志緩沖區(qū)SQL> select name,value from v$sysstat where name in ('redo entries','redo buffer allocationretries');

46、如果 redo buffer allocation retries/redo entries 超過 1% ,則需要增大log_buffer 。.性能調(diào)優(yōu)及方法性能調(diào)優(yōu)主要有主動調(diào)優(yōu)和被動調(diào)優(yōu),主動調(diào)優(yōu)在前面我們已經(jīng)進行了闡述,被動調(diào)優(yōu)主要有以下方法進行。確定合理的性能優(yōu)化目標測試并記錄當前的性能指標確定當前存在的 Oracle 性能瓶頸 (Oracle 中何處存在等待,哪個 SQL語句與此有關(guān) )確定當前的操作系統(tǒng)瓶頸優(yōu)化相關(guān)的組件(應用、數(shù)據(jù)庫、 I/O 、連接 OS 及其它 )跟蹤并實施變化管理制度測試并記錄目前的性能指標重復第 3 到第 7 步直至達到既定的優(yōu)化目標不要對并

47、非性能瓶頸的部分進行優(yōu)化, 否則可能引起額外的問題。 正如任何聰明的人會告訴你的:“如果還未壞,千萬不要修” 。更重要的是,一旦既定的優(yōu)化目標已經(jīng)達到,就務必停止所有的優(yōu)化。獲取Oracle 的性能指標(測試前及測試后 )必須在峰值處理時測試并獲取系統(tǒng)在優(yōu)化前和優(yōu)化后的性能指標。數(shù)據(jù)采集不應在數(shù)據(jù)庫instance 剛剛起動后進行。同時,測試數(shù)據(jù)應在峰 值期間每 過15 分鐘 進行一 次。初始化參數(shù)TIMED_STATISTICS應該被設為TRUE。通過運行以下腳本開始快照:$ORACLE_HOME/rdbms/admin/utlbstat.sql.通過運行以下腳本結(jié)束快照:$ORACLE_H

48、OME/rdbms/admin/utlestat.sql.完成 utlestat.sql 操作后,會在當前目錄中生成名為“report.txt ”的文件,包含系統(tǒng)的性能數(shù)據(jù)。該報告包括每15 分鐘捕獲的所有與Oracle 例程相關(guān)的參數(shù)。.1. 尋找問題根源如上所述,通過查看v$system_event 事件開始系統(tǒng)事件的問題診斷。下一步是查看v$session_event,找出引起或經(jīng)歷等待事件的進程。最后一步是通過v$session_wait 獲得事件的細節(jié)。同時,應該進一步通過OS 進行深入分析,了解核心的 CPU、內(nèi)存和 IO 狀態(tài)參數(shù)。最后,結(jié)合兩種不同的診斷的結(jié)論,找出系統(tǒng)瓶頸所在。.2. 應用優(yōu)化從統(tǒng)計 (和現(xiàn)實 ) 的角度看, 80% 的 Oracle 系統(tǒng)性能問題可以通過 SQL 代碼優(yōu)化來解決。任何應用優(yōu)化的過程,不外乎是索引優(yōu)化、全表掃描、并行機制改進和選擇正確數(shù)據(jù)組合方法的過程。 這正是要達到最佳應用性能所必須考慮的因素。沒有 SQL 的優(yōu)化,就無法實現(xiàn)高性能的應用。良好的SQL 語句可以減少CPU資源的消耗,提高響應速度。同時,優(yōu)化后的 SQL 語句還可以提高應用的可擴展性,這是除增加大量內(nèi)存外,任何其它硬件手段也無法實現(xiàn)的。.2.1. I-O 優(yōu)化I-O 優(yōu)化

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論