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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

23、le或 https:/hostname:port/console.hostname:管理服務(wù)器的ip 地址或 DNS名port :管理服務(wù)器監(jiān)聽的端口如果管理服務(wù)器啟動時使用SSL,則使用 https 訪問管理控制臺在彈出的窗口“ Console Login 中“輸入用戶名和密碼登錄.性能監(jiān)控查看性能參數(shù)登錄控制臺后點(diǎn)擊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)不斷降低的趨勢,就應(yīng)加以關(guān)注;空閑線程數(shù)與隊(duì)列長度通常有如下關(guān)系:A、如果空閑線程數(shù) >0 ,則 queue length =0 ;B、反之,如果 queue length>0 ,則空閑線程數(shù) =0 ;2)Memory Usage.Memory Usage = totalMemory() freeMemory()內(nèi)存使用曲線反應(yīng)了JVM Heap內(nèi)存使用的

25、變化情況,可以結(jié)合其他三個值的變化情況來判斷 server 工作情況;比較理想的狀態(tài)是適當(dāng)頻度的各種鋸齒變化,由于 JVM GC多采用“ stop the world”機(jī)制,也就是垃圾回收時其他處理將暫停,過度頻繁的 GC將明顯降低 server 工作效率和性能表現(xiàn)。3.4. Oracle 維護(hù)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)可移植性好、使用方便、功能強(qiáng),適用于各類大、中、小、微機(jī)環(huán)境。它是一

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

27、提高Oracle 性能管理的效率。所以 ORACLE數(shù)據(jù)庫性能惡化表現(xiàn)基本上都是用戶響應(yīng)時間比較長,須要用戶長時間的等待。獲得滿意的用戶響應(yīng)時間有兩個途徑:一是減少系統(tǒng)服務(wù)時間,即提高數(shù)據(jù)庫的吞吐量;二是減少用戶等待時間,即減少用戶訪問同一數(shù)據(jù)庫資源的沖突率。對于以上的兩個問題,通常我們采用以下幾個方面來進(jìn)行改善:.調(diào)整服務(wù)器內(nèi)存分配。例如,可以根據(jù)數(shù)據(jù)庫運(yùn)行狀況調(diào)整數(shù)據(jù)庫系統(tǒng)全局區(qū)(SGA 區(qū))的數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)和共享池的大?。贿€可以調(diào)整程序全局區(qū)( PGA 區(qū))的大小。調(diào)整硬盤I/O 問題,達(dá)到I/O 負(fù)載均衡。調(diào)整運(yùn)用程序結(jié)構(gòu)設(shè)計(jì)。優(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)存性能,查看是否有僵死進(jìn)程,查看行鏈接/ 遷移,定期做統(tǒng)計(jì)分析,查看緩沖區(qū)命中率,查看共享池命中率,查看排序區(qū),查看日志ORACLE產(chǎn)品日常運(yùn)行維護(hù)年度服務(wù)項(xiàng)目緩沖區(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 等等待事件時,需要對其進(jìn)行分析,可能存在問題的語句。.2. 查看消耗 CPU 最高的進(jìn)程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. 查看運(yùn)行很久的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 等命令進(jìn)行信息收集并查看這些信息,判斷資源使用情況。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,當(dāng)其平均值下降至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)存,當(dāng)剩余內(nèi)存低于總內(nèi)存的10%時視為異常。系統(tǒng)負(fù)載情況:#uptime12:08:37 up 162 days, 23:33, 15 users,loa

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

44、析對于采用Oracle Cost-Based-Optimizer的系統(tǒng),需要定期對數(shù)據(jù)對象的統(tǒng)計(jì)信息進(jìn)行采集更新,使優(yōu)化器可以根據(jù)準(zhǔn)備的信息作出正確的explain plan。在以下情況更需要進(jìn)行統(tǒng)計(jì)信息的更新:應(yīng)用發(fā)生變化;大規(guī)模數(shù)據(jù)遷移、歷史數(shù)據(jù)遷出、其他數(shù)據(jù)的導(dǎo)入等;數(shù)據(jù)量發(fā)生變化。查看表或索引的統(tǒng)計(jì)信息是否需更新,如: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)計(jì)信息,建議一周做一次統(tǒng)計(jì)信息收集,如: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)進(jìn)行了闡述,被動調(diào)優(yōu)主要有以下方法進(jìn)行。確定合理的性能優(yōu)化目標(biāo)測試并記錄當(dāng)前的性能指標(biāo)確定當(dāng)前存在的 Oracle 性能瓶頸 (Oracle 中何處存在等待,哪個 SQL語句與此有關(guān) )確定當(dāng)前的操作系統(tǒng)瓶頸優(yōu)化相關(guān)的組件(應(yīng)用、數(shù)據(jù)庫、 I/O 、連接 OS 及其它 )跟蹤并實(shí)施變化管理制度測試并記錄目前的性能指標(biāo)重復(fù)第 3 到第 7 步直至達(dá)到既定的優(yōu)化目標(biāo)不要對并

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

48、OME/rdbms/admin/utlestat.sql.完成 utlestat.sql 操作后,會在當(dāng)前目錄中生成名為“report.txt ”的文件,包含系統(tǒng)的性能數(shù)據(jù)。該報告包括每15 分鐘捕獲的所有與Oracle 例程相關(guān)的參數(shù)。.1. 尋找問題根源如上所述,通過查看v$system_event 事件開始系統(tǒng)事件的問題診斷。下一步是查看v$session_event,找出引起或經(jīng)歷等待事件的進(jìn)程。最后一步是通過v$session_wait 獲得事件的細(xì)節(jié)。同時,應(yīng)該進(jìn)一步通過OS 進(jìn)行深入分析,了解核心的 CPU、內(nèi)存和 IO 狀態(tài)參數(shù)。最后,結(jié)合兩種不同的診斷的結(jié)論,找出系統(tǒng)瓶頸所在。.2. 應(yīng)用優(yōu)化從統(tǒng)計(jì) (和現(xiàn)實(shí) ) 的角度看, 80% 的 Oracle 系統(tǒng)性能問題可以通過 SQL 代碼優(yōu)化來解決。任何應(yīng)用優(yōu)化的過程,不外乎是索引優(yōu)化、全表掃描、并行機(jī)制改進(jìn)和選擇正確數(shù)據(jù)組合方法的過程。 這正是要達(dá)到最佳應(yīng)用性能所必須考慮的因素。沒有 SQL 的優(yōu)化,就無法實(shí)現(xiàn)高性能的應(yīng)用。良好的SQL 語句可以減少CPU資源的消耗,提高響應(yīng)速度。同時,優(yōu)化后的 SQL 語句還可以提高應(yīng)用的可擴(kuò)展性,這是除增加大量內(nèi)存外,任何其它硬件手段也無法實(shí)現(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論