




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《軟件項目維護方案》
摘要:[root@sale8toptop-10:29:35up73days,19:54,1user,!oadaverage:0.37,0.38,0.29Tasks:353
total,2running,351sleeping,0stopped,0zombieCpu(s):1.2%us,0.1%sy,0.0%ni,98.8%id,0.0%wa,
0.0%hi,0.0%siMem:16404472ktotal,12887428kused,3517044kfree,60796kbuffersSwap:8385920k
total,665576kused,7720344kfree,10358384kcachedPIDUSER30495orade32501orade32503Oracle注
意上面的力崛字體部分,此部分內容表示系統剩余的cpu,當其平均值下降至10%以下的時視為CPU使用率異常,初
錄下該數值,并將狀態記為異常n內存使用情況:#free-mTotalusedfreesharedbufferscached
Mem:20261958670761556-/+buffers/cache:3261700Swap:5992925900如上所示,total表示系
統總內存,used表示系統使用的內存,free表示系統藏余內存,當嬲余內存低于總內存的10%時視為異常,查看對象的
下一擴展與表空間的最大擴展值5aselecta.table_name,a.next_extent,a.tablespace_namefromalljablesa,(select
tablespace_name,max(bytes)asbig_chunkfromdba_free_spacegroupbytablespace_name)fwhere
f.tablespace_name=a.tablespace_nameanda.next_extentf.big_chunkunionselecta.index_name,a.next_extent,
a.tablespace_namefromalljndexesa,(selecttab!espace_name,max(bytes)asbig_chunkfromdba_free_space
groupbytablespace_name)fwheref.tab!espace_name=a.tablespace_nameanda.next_extentf.big_chunk;如
果有記錄返回,則表明這些對象的下一個擴展大于該對象所屬表空間的最大擴展值,需調整相應表空間的存精參數,項目組
包括項目經理、需求分析師、開發工程帥、實施工程帥,總體職責如下:1.保證與項目有關的的問題得到及時解決2.提供
有關產品的技能和以往經驗3.計劃、協調項目實施過程中各個方面的工作4建立項目環境和項目組結構5.依據項目計劃
充分調動資源,并做好這些資源的后勤保獐,用包耍時候,尋求更高層次的支持6.針對客戶未來的工作臃重組提出建
議7.從總體上控制項目實施時間進度,保證服務質量I客戶經理客戶經理配合客戶項目經理負責計劃、組織、指導和協調
項目組的工作,并在適當的時候,負責項目組內部和其他有關方面的相互溝通,項目的關鍵查看點,對項目各方面進行查看
與旨導,主要職責如下:L建議項目的階段審核點2.制定項目計劃3.規定培訓內容及過程,制定培訓及后勤計劃4.指導、
建議、管理項目日?;顒?.管理頊目初始變更及變更過程6.定期向項目領導及項目指導委員會匯報項目的迸展狀況,無尾
出問題改迸措施7.協助客戶通報并解決出現的問題8.合理分配項目人員9.萬利組織系統執行10.確認任務的完
成,實施質量控制1L發現、協調阻互溝通/變更控制/組織方面等問題12.完成項目狀態報告13.項目實施程序、殿麻隹
的建立與旅行14.項目組成員在團隊內的有效工作15.負責監督項目實施質量16.負責完成項目監督報告I技術經理技術
經理責如下:1.主持需求調研和討論會2.分析現有工作流程3.確定用戶功熊需求并協助制作文檔4.設討未來工作流程5.
指導培訓計劃的制定與培訓后勒工作的展開6.為關鍵用戶提供標準產品培洶7.根據功能需求確定產品的功能和流程選擇8.
計劃測試,并預估測試所需資源9.制定測試方案10.協助制定系統測試過程和測試所需的業務案例1L協助監控、評估測
試的執行12.為最終用戶培訓提供指導和建議13.定義基礎數據轉換步驟和策谿I技術人員技術人員的主要職責如下:1.
提供系統運行環境配置建議和優化措施2.產品的安裝及系統管理員的培訓3.負責產品所需基礎資*斗的數據整理及導入系
統4.負責關鍵用戶的使用培訓5,負責需求的調研工作6負責培訓資料的制作6.技術服務流程管理方案61制定規章制
度制定規章制度是為了提高技術部服務效率、服務質量及售后端應時間
軟件項目維護方案1.項目背景及目標1.1.項目背景在國家政策的指導和幫助下,信息化也
越來越發揮出十分重要的作用。XXXX不斷加大信息化管理工作力度,積極實施"上網工程"
大力推進全市局域網建設,加快辦公自動化系統進程,信息技術在改革中發揮了重要的支撐作
用,為充分發揮政府公共職能,促進依法理財、科學理財,提供了重要的信息技術保障。近年
來建設各系統隨著數據量的逐年增加,陸續出現了性能問題,有必要進行數據庫系統的升級及
性能優化,以確保應用系統的正常運行,為單位員工提供更好的信息服務。
1.2.項目目標?對各系統數據庫進行補丁升級服務,安裝補丁前制定詳細的升級計劃和應急
回退計劃。
?完成各系統數據庫的性能調優工作。
?各業務持續性得到有效的保證。
2.需求分析XXXXXXX項目,我公司有多年的行業經驗。具有對運維服務對象進行適時監測、
指標分析、和及時修復的能力。
Oracle產品日常運行維護項目主要從如下幾個方面進行:(1).每天對ORACLE數據庫的運行
狀態,日志文件,備份情況,數據庫的空間使用情況,系統資源的使用情況進行查看,發現并解決問
題。(2).每周對數據庫對象的空間擴展情況,數據的增長情況進行監控,對數據庫做健康查看,對
數據庫對象的狀態做查看。(3).查看表空間碎片,提出下一步空間管理計劃。對ORACLE數據
庫狀態進行一次全面查看。(4)由于這些數據庫系統承載著XXXX非常重要的業務系統數
據,所以在日常維護中需要非常仔細,每周、每月、每季都需要有相應的巡檢記錄,需要詳
細記載以下一些內容:n監控數據庫對象的空間擴展情況n監控數據量的增長情況n系統健
康查看,查看以下內容:n數據庫對象有效性查看n查看是否有危害到安全策略的問題。
n查看alert.Sqlnet等日志并歸檔報錯日志n分析表和索引n查看對數據庫會產生危害的增
長速度n查看表空間碎片n數據庫性能調整n預測數據度將來的性能n調整和維護工作n后
續空間3.整體運行維護服務方案3.1.Lifekeeper維護3.1.1.驗證LifeKeeper的安裝杳看已
經安裝的LifeKeeper軟件包,可以使用命令:rpm-qa|grepstee3.1.2.啟動LifeKeepera)
啟動LifeKeeper服務器進程如果當前您的系統沒有運行LifeKeeper則在所有服務器上以
root用戶身份輸入如下命令#/opt/LifeKeeper/bin/lkstartb)啟動LifeKeeperGUI服務器
進程同樣以root用戶運行命令#/opt/LifeKeeper/bin/lkGUIserverstart注意:以上命令
只需運行一次,以后每次系統重新啟動時,LifeKeeper會自動運行上述進程3.1.3.有關的
LifeKeeper軟件的其它管理任務a)停止LifeKeeper服務如果需要在服務器上永久停止
LifeKeeper服務,可以輸入下列命令$LKROOT/bin/lkstop該命令同時會使所有LifeKeeper
保護的資源處于退出服務狀態,如果希望在停止LifeKe即er時保持資源/應用的運行,可以使
用:$LKROOT/bin/lkstop-fb)查看LifeKeeper進程鍵入下列命令可以查看當前運行的所
有LifeKeeper進程列表ps-ef|grepLifeKeeper3.1.4.啟動LifeKeeperGUI配置工具進入
LifeKeeperGUI管理工具可以通過運行命令:/opt/LifeKeeper/bin/lkGUIapp貝!]出現
LifeKeeper登錄界面:可以使用root用戶登錄,也可以使用新建的用戶進行登錄。
3.1.5.檢測LifeKeeper集群運行狀態可以使用Icdstatus命令對LifeKeeper集群的當前運行
狀態進行查看,命令格式:Icdstatus[-q][-d主機名]該程序向stdout輸出在LifeKeeper
資源層次配置狀態和通信路徑的狀態.選項-q表示輸出采用簡略的形式(建議使用該選項)
選項-d表示要直看的主機,缺X直看本機3.1.6.管理LifeKeeper中的資源注意:如果能運
行LifeKeeperGUI,則使用其提供菜單命令執行相應操作;在執行命令行啟動/停止資源前,
一定先使用Icdstatus命令確認資源的實際狀態。
a)啟用資源(In-Service)可以使用命令:./perform_action-t資源標記名-arestore將資
源標記名所對應的資源在本機上投入服務(啟動)。如果該資源在命令使用前已經在另一臺機
器上處于運行狀態,則本命令執行的結果相當于執行了一次手工切換?。?!如果該資源在命
令使用前是處于停止狀態(即在備機上執行本命令),則本命令執行的結果相當于執行了一次
手工切換b)停止資源(out-of-service)可以使用命令:./perform_action-t資源標記名-a
remove將資源標記名所對應的資源在本機上停止服務。如果該資源在命令使用前已經在另一
臺機器上處于運行狀態,則本命令執行不產生任何結果注意:n在執行命令行前后,一定先
使用Icdstatus命令確認資源的當前狀態。
n命令停止/啟動本地的資源n命令中的資源標記名是區分大〃瀉的n一定要等待命令完成,
注意命令的輸出。
n詳細用法見在線幫助手冊。
32SQLSERVER維護計算機系統各種軟、硬件故障、用戶誤操作以及惡意破壞是不可避免
的,這些影響到數據的正確性甚至造成數據損失、服務器崩潰等致命后果。數據庫的備份對保
證系統的可靠性具有重要的作用。
下面會根據執行強度對維護任務及其相應的程序進行分類描述,執行強度用不同的時間間隔定
義,包括每天、每周、每月和每季度,能夠建立起良好的維護實務,確保SQLServer數據庫
性能和安全。
3.2.1.每天的例行維護任務需要數據庫管理員密切關注的維護任務,最好每天都查看一下,這
樣可以確保系統的可靠性、可用性、運行性能和安全。每天的例行維護任務包括:L杳看是
不是所有被請求的SQLServer服務都正常運行。
2、查看日常備份日志中成功、警告或者失敗記錄。
3、杳看Windows事件日志有沒有錯誤記錄。
4、直看SQLServer日志有沒有安全警告記錄,例如非法登錄。
5、執行完全備份或差異備份。
6、在設置了完全恢復模型或大容量日恢復模型的數據庫上執行事務日志備份任務。
7、核實SQLServer作業沒有失敗。
8、查看所有的數據庫文件和事務日志具有合適的磁盤空間大小。
9、至少要監控處理器、內存或者磁盤計數器沒有出現瓶頸。
3.2.2.每周的例行維護任務關注程度稍遜于每天的例行維護任務,最好每周進行一次例行查看。
每周的例行維護任務包括:1、執行完全備份或差異備份。
2、查看以前執行的維護計劃報告。
3、查看數據庫完整性。
4、如果需要,執行收縮數據庫任務。
5、通過重新組織索引任務壓縮聚集和非聚集表和視圖。
6、通過重新生成索引任務在數據頁和索引頁重新組織數據。
7、更新所有用戶表和系統表的統計信息8、清除備份、還原、SQLServer代理作業和維護計
劃等操作的歷史數據。
9、如果需要,手動增長數據庫或事務日志文件10、清除執行維護計劃殘留下來的文件。
3.23.每月或每季度的維護任務有一些維護計劃不需要執行得過于頻繁,可以每個月或每個季
度執行一次。但是請不要以為這些彳壬務不需要天天執行就無足輕重,這些任務可以確保數據庫
環境的健康,所以不要輕視以下這些維護任務:1、在測試環境中執行備份還原操作。
2、將歷史數據歸檔。
3、分析收集的性能統計數據,與基準值相比較。
3、直看并更新維護文檔。
4、查看并安裝最新的SQLServer補丁和補丁包。
5、如果運行簇、數據庫鏡像或日志傳送,則監測故障轉移。
6、驗證備份和還原進程是否遵循已定義的服務等級協議。
7、更新SQLServer構建指南。
8、更新SQLServer災難恢復文檔。
9、更新維護計劃列表10、修改管理員口令。
11、修改SQLServer服務帳戶口令。
3.3.WebLogic維護3.3.1.性能調優33.1.1.設定執行隊列的溢出條件WeblogicServer提
供給默認的執行隊列或用戶自定義的執行隊列自定義溢出條件的功能,當滿足此溢出條件時,
服務器改變其狀態為"警告"狀態,并且額外的再分配一些線程去處理在隊列中的請求,而達
到降低隊列長度的目的。通過啟動管理控制臺,在域(如:mydomain)服務器server實
例(如:myserver)ExecuteQueueweblogic.kernel.Defalt配置下面幾項:隊列長度:
此值表示執行隊列中可容納的最大請求數,默認值是65536,最后不要手動改變此值。隊列
長度閾值百分比:此值表示溢出條件,在此服務器指出隊列溢出之前可以達到的隊列長度大小
的百分比。線程數增加:當檢測到溢出條件時,將增加到執行隊列中的線程數量。如果CPU
和內存不是足夠的高,盡量不要改變默認值"0"。因為Weblogic一旦增加后不會自動縮減,
雖然最終可能確實起到了降低請求的作用,但在將來的運行中將影響程序的性能。最大線程
數:為了防止創建過多的線程數量,可以通過設定最大的線程數進行控制。在實際的應用場
景中,應根據具體情況適當的調整以上參數。33.1.2.設定隊列監測行為WeblogicServer
能夠自動監測到當一個執行線程變為“阻塞"。變為"阻塞"狀態的執行線程將無法完成當前
的工作,也無法再執行新請求。如果執行隊列中的所有執行線程都變為"阻塞"狀態,
Weblogicserver可能改變狀態為"警告"或"嚴重"狀態。如果Weblogicserver變為
"嚴重”狀態,可以通過NodeManager來自動關閉此服務器并重新啟動它。具體請參考:
NodeManagerCapabilities文檔。通過啟動管理控制臺,在域(如:mydomain)服務
器server實例(如:myserver)配置調整下可配置下面幾項:阻塞線程最長時間:在此服
務器將線程診斷為阻塞線程之前,線程必須連續工作的時間長度(秒)。默認情況下,
WebLogicServer認為線程在連續工作600秒后成為阻塞線程。阻塞線程計時器間隔:
WebLogicServer定期掃描線程以查看它們是否已經連續工作了"阻塞線程最長時間”字段
中指定的時間長度的間隔時間(秒)。默認情況下,WebLogicServer將此時間間隔設置為600
秒。.盡量使用本地10庫WebLogicServer有兩套套接字復用器:Java版和本地
庫。采用小型本地庫更有效,盡量激活EnableNative10(默認),此時UNIX默認使用CPUs+1
個線程,Window下為雙倍CPU。如果系統不能加載本地庫,將會拋出
java.Iang.UnsatisfiedLinkException,止匕時只能使用Java套接字復用器,可以調整socket
readers百分比,默認為33%。該參數可以在ConsoleServerTuningConfiguration配置欄
里設置,配置完,重新啟動WebLogicServer即可。
.調整默認執行線程數名稱開發模式產品模式推薦個數ExecuteQueues默認的執
行線程為15默認的執行線程為25200在管理控制臺修改默認執行隊列線程數的步驟如下:
n如果管理服務器沒有運行,先啟動。
n訪問管理控制臺。
n展開左邊面板的Servers節點,顯示Server列表。
n右擊Server,在彈出菜單中選擇ViewExecuteQueues,就會在右邊面板顯示有執行隊列
的表用來修改。
n注意:你只能修改默認的執行隊列或者用戶定義的執行隊列。
n在Name歹I」,直接點擊默認執行隊列名稱,顯示配置標簽用來修改執行隊列數。
n填下適當的線程數。
n點擊Apply,保存剛才的修改。
n重啟Server,使新的執行隊列設置生效。
3.3.13.JDBC調優.驅動程序類型選擇Oracle提供thin驅動和oci驅動,從性能上
來講,oci驅動強于thin驅動,特別是大數據量的操作。但在簡單的數據庫操作中,性能相差不大,
隨著thin驅動的不斷改進,這一弱勢將得到彌補。而thin驅動的移植性明顯強于。ci驅動。所
以在通常情況下建議使用thin驅動.2.調節連接池初始容量和最大容量JDBC
ConnectionPool的調優受制于WebLogicServer線程數的設置和數據庫進程數游標的大小。
通常我們在一個線程中使用一個連接,所以連接數并不是越多越好,為避免兩邊的資源消耗,建
議設置連接池的最大值等于或者略小于線程數。同時為了減少新建連接的開銷,將最小值和最
大值設為一致;值等于WebLogicServer的執行線程數。
.其他配置盡管JDBCConnectionPool提供了很多高級參數,在開發模式下比較有
用,但大部分在生產環境下不需調整。這里建議最好不要設置測試表,同時TestReserved
Connections和TestReleasedConnections也無需勾上。當然如果你的數據庫不穩定,時斷
時續,你就可能需要上述的參數打開.WEB調優.調整WEB應用描述符WEB
應用除代碼之外的調優比較簡單,僅僅是對一些WEB應用描述符的調整。首先關閉Session
MonitoringEnabled,僅僅在Cluster環境下設置Session復制(優先使用內存復制),在保證應
用正常運行的情況下,設置較短的Session超時時間。同時生產環境下無需查看Jsp和servlet:
JSPPageCheckSecs和ServletReloadCheckSecs均設為-L關閉JSPKeepGenerated
和JSPVerbose對性能也有幫助。此外,還可以對jsp進行預編譯,有兩種方法:激活
precompile選項"吏用weblogic.appc事先編譯,建議采用后者。
.其他調優設置.WebLogic文件描述符大小調整首先設置WEB主機系統的
ulimit參數為unlimited,然后設置WebLogic中文件描述符的大小。
S{WL_HOME}/bea/weblogic/common/bin中打開文件commEnv.sh,修改設置文件描述
符大小的指令,將默認的:ulimit-n1024修改為:ulimit-n81923.3.2.維護管理33.2.1.
啟動weblogicservern啟動管理服務器:執行startAdmserver.shn啟動被管理服務器:執
彳亍startManagedWebLogic.shservernameadminurl.停止weblogicservern停
止被管理服務器:執行stopWebLogic.shservernamen啟動被管理服務器:執行
stopWebLogicsh3.3.23登錄和退出管理控制臺n管瓚艮務器啟動后可以在瀏覽器中登錄
管理控制臺n輸入URL:或管理服務器的ip地址或DNS名Iport:管理服務器監聽的端口I
如果管理服務器啟動時使用SSL,則使用訪問管理控制臺n在彈出的窗口Xonsole
Login"中輸入用戶名和密碼登錄33.2.4.性能監控n查看性能參數I登錄控制臺后點擊
Servers-servername-Monitoring-Performancen參數分析nl)IdleThreadsQueue
LengthThroughout正常情況下idlethreads0,queueLength為0,Throughout呈不
規則變化曲線,MemoryUsage呈適度頻度的鋸齒變化曲線。
一般來說,對于正常配置的生產環境(線程數50~200),如果idlethreads10,或者呈現
不斷降低的趨勢,就應加以關注;空閑線程數與隊列長度通常有如下關系:A、如果空閑
線程數0,KUqueuelength=0;B、反之,如果queuelength。,則空閑線程數=0;
n2)MemoryUsageMemoryUsage=totalMemoryQ-freeMemoryO內存使用曲線反
應了JVMHeap內存使用的變化情況,可以結合其他三個值的變化情況來判斷server工作情
況;比較理想的狀態是適當頻度的各種鋸齒變化,由于JVMGC多采用"stoptheword"
機制,也就是垃圾回收時其他處理將暫停,過度頻繁的GC將明顯降低server工作效率和性
能表現。
3.4.Oracle維護OracleDatabase,又名OracleRDBMS,或簡稱Oracle。是甲骨文公司的
一款關系數據庫管理系統。它是在數據庫領域一直處于領先地位的產品。可以說Oracle數據
庫系統是目前世界上流行的關系數據庫管理系統,系統可移植性好、使用方便、功能強,適用
于各類大、中、小、微機環境。它是一種高效率、可靠性好的適應高吞吐量的數據庫解決方
案。
3.4.1.數據庫性能優化Oracle性能管理既是一種藝術,也是一種科學。從實用角度講,它可
以分為兩種類型,主動式和被動式性能管理。主動式性能管理涉及到特定系統實施初期的設計
和開發,包括硬件選擇、性能及容量規劃,海量存儲系統的選擇,1-0子系統配置及優化,以
及如何對不同組件進行定制,以滿足Oracle數據庫和應用系統的復雜要求。
被動式性能管理涉及到現有環境中不同組件的性能評估、故障排除和Oracle環境的優化,本
文旨在探討如何進行被動式性能調優,以便為Oracle性能調優提供必要的指導,從而避免僅
僅通過反復嘗試的方式進行性能調優,提高Oracle性能管理的效率。
所以ORACLE數據庫性能惡化表現基本上都是用戶響應時間比較長,須要用戶長時間的等待。
獲得滿意的用戶響應時間有兩個途徑:一是減少系統服務時間,即提高數據庫的吞吐量:二
是減少用戶等待時間,即減少用戶訪問同一數據庫資源的沖突率。
對于以上的兩個問題,通常我們采用以下幾個方面來進行改善:n調整服務器內存分配。例
如,可以根據數據庫運行狀況調整數據庫系統全局區(SGA區)的數據緩沖區、日志緩沖區
和共享池的大?。贿€可以調整程序全局區(PGA區)的大小。
n調整硬盤I/。問題,達到I/O負載均衡。
n調整運用程序結構設計。
n優化調整操作系統參數和使用資源管理器。
nSQL優化、診斷latch競爭、Rollback(undo)Segment優化、提升block的效率等等。
.查看Oracle數據庫性能查看Oracle數據庫性能情況,包含:查看數據庫的等待事
件,查看死鎖及處理,杳看cpu、I/O、內存性能,查看是否有僵死進程,查看行鏈接/遷移,
定期做統計分析,查看緩沖區命中率,查看共享池命中率,查看排序區,查看日志ORACLE
產品日常運行維護年度服務項目緩沖區,總共十個部分。
.1.查看數據庫的等待事件setpages80setlines120coleventfora40select
sidzevent,pl,p2,p3,WAIT_TIMEzSECONDS_IN_WAITfromv$session_waitwhereevent
notlike'SQL%'andeventnotlike'rdbms%';如果數據庫長時間持續出現大量像
latchfree,enqueue,bufferbusywaits,dbfilesequentialread,dbfilescattered
read等等待事件時,需要對其進行分析,可能存在問題的語句。
.2.查看消耗CPU最高的進程SETLINE240SETVERIFYOFFCOLUMNSID
FORMAT999COLUMNPIDFORMAT999COLUMNS_#FORMAT999COLUMN
USERNAMEFORMATA9HEADING"ORAUSER"COLUMNPROGRAMFORMATA29
COLUMNSQLFORMATA60COLUMNOSNAMEFORMATA9HEADING"OS
USER"SELECTP.PIDPID,S.SIDSID,P.SPIDSPID,S.USERNAMEUSERNAME,S.OSUSER
OSNAME,P.SERIAL#S_#,P.TERMINAL,P.PROGRAM
PROGRAM,P.BACKGROLND,S.STATUS,RTRIM(SUBSTR(A.SQL_TEXT,1,80))SQLFROM
V$PROCESSP,V$SESSIONS,V$SQLAREAAWHEREP.ADDR=S.PADDRAND
S.SQL_ADDRESS=A.ADDRESS(+)ANDP.SPIDLIKE'%1%';3.查看碎片程度
高的表SQLSELECTsegrrent_nametable_name,COUNT(*)extentsFROM
dba.segmentsWHEREownerNOTIN('SYS','SYSTEM')GROUPBY
segment_nameHAVINGCOUNT(*)=(SELECTMAX(COUNT(*))FROMdba_segments
GROUPBY);A查看表空間的I/O比例SQLSELECT
DF.TABLESPACE_NAMENAME,DF.FILE_NAME"FILE",F.PHYRDSPYR,
F.PHYBLKRDPBR,F.PHYWRTSPYW,F.PHYBLKWRTPBWFROMV$FILESTATF,
DBA_DATA_FILESDFWHEREF.FILE#=DF.FILEJDORDERBYDF.TABLESPACE_NAME;
.5.查看文件系統的I/O比例
SQLSELECTSUBSTR(A.FILE#,1,2)M#H,SUBSTR(A.NAME,l,30)"NAMEH,A.STATUS,A.BY
TES,B.PHYRDS,B.PHYWRTSFROMV$DATAFILEA,V$FILESTATBWHEREA.FILE#
二B.FILE#;.6.DiskRead最高的SQL語句的獲取SQLSELECTSQL.TEXTFROM
(SELECT*FROMV$SQLAREAORDERBYDISK_READS)WHERER0WNUM=5desc:
7.查找前十條性能差的sqlSELECT*FROM(SELECTPARSING.USERJD
EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,SQL.TEXTFROMV$SQLAREA
ORDERBYDISK_READSDESC)WHEREROWNUM10;8.等待時間最多的5個系
統等待事件的獲取SELECT*FROM(SELECT*FROMV$SYSTEM_EVENTWHEREEVENT
NOTLIKE'SQL%'ORDERBYTOTAL_WAITSDESC)WHEREROWNUM=5;.9.
查看運彳亍很久的SQLCOLUMNUSERNAMEFORMATA12COLUMNOPNAMEFORMAT
A16COLUMNPROGRESSFORMATA8SELECT
USERNAME,SID,OPNAME,ROUND(SOFAR*100/TOTALWORK,0)||,%'AS
PROGRESS,TIME_REMAINING,SQL_TEXTFROMV$SESSION_LONGOPS,V$SQL
WHERETIME.REMAINING0ANDSQL_ADDRESS=ADDRESSANDSQL_HASH_VALUE
=HASH_VALUE;.10.查看死鎖及處理查詢目前鎖對象信息:colsidfor999999col
usernameforalOcolschemanameforalOcolosuserforal6colmachineforal6col
terminalfora20colownerforalOcolobject_namefora30colobject_typefora10
selectsid,serial#,username,SCHEMANAMEqsuser,MACHINE,
terminal,PROGRAM,owner,object_name,object_type,o.object_idfromdba_objects
o,v$locked_objectl,v$sessionswhereo.object_id=l.objectjdands.sid=(.sessionJd;
oracle級kill掉該session:altersystemkillsession'sid,serial#';操作系統級kill掉
session:#kill-9pid.11.查看數據庫cpu、I/O、內存性能記錄數據庫的cpu使用、
IO、內存等使用情況,使用vmstatjostatsactop等命令進行信息收集并直看這些信息,判
斷資源使用情況。
nCPU使用情況:[root@sale8~]#toptop-10:29:35up73days,19:54,1user,load
average:0.37,038,0.29Tasks:353total,2running,351sleeping,0stopped,0
zombieCpu(s):1.2%us,0.1%sy,0.0%ni,98.8%id,0.0%wa,0.0%hi,0.0%siMem:
16404472ktotal,12887428kused,3517044kfree,60796kbuffersSwap:8385920k
total665576kused,7720344kfree,10358384kcachedPIDUSER30495oracle
32501oracle32503oracle注意上面的加粗字體部分,此部分內容表示系統剩余的cpu,
當其平均值下降至10%以下的時視為CPU使用率異常,需記錄下該數值,并將狀態記為異常
n內存使用情況:#free-mTotalusedfreesharedbufferscached
Mem:20261958670761556-/+buffers/cache:3261700Sw叩:599292
5900如上所示,total表示系統總內存,used表示系統使用的內存,free表示系統剩余內存,
當剩余內存低于總內存的10%時視為異常。
n系統負載情況:#uptime12:08:37up162days,23:33,15users,loadaverage:0.01,
0.15,0.10如上所示,loadaverage部分表示系統負載,后面的3個數值如果有高于2.5的
時候就表明系統在超負荷運轉了,并將此值記錄到巡檢表,視為異常。
.12.查看是否有僵死進程selectspidfromv$processwhereaddrnotin(select
paddrfromv$session);有些僵尸進程有阻塞其他業務的正常運行,定期殺掉僵尸進程。
.13.查看行鏈接/遷移Sqlselecttable_name,num_rows,chain_cntFromdba_tables
Whereowner=1CTAIS21Andchain_cnt0;注:含有longraw列的表有行鏈接是正常的,
找到遷移行保存到chained,ows表中,如沒有該表執行../rdbms/admin/utlchain.sql
Sqlanalyzetabletablenamelistchainedrows;可通過表chained_rows中
table_name,head_rowid看出哪些行是遷移行如:Sqlcreatetableaaasselects.*from
sb_zsxxa,chained_rowsbwherea.rowid=b.head_rowidandb.table_name='
SB_ZSXX';sqldeletefromsb.zsxxwhererowidin(selecthead_rowidfrom
chained_rowswheretabe_name='SB_ZSXX');sqlinsertintosb_zsxxselect*from
chained_rowwheretable_name="SB_ZSXX';.14.定期做統計分析對于采用
OracleCost-Based-Optimizer的系統,需要定期對數據對象的統計信息進行采集更新,使
優化器可以根據準備的信息作出正確的explainplan。
在以下情況更需要進行統計信息的更新:應用發生變化;大規模數據遷移、歷史數據遷出、
其他數據的導入等;數據量發生變化。
查看表或索引的統計信息是否需更新,如:SqISelecttable_name,num_rows,last_analyzed
Fromuser_tableswheretable_name='DJ_NSRXX'sqlselectcount(*)from
DJ_NSRXX如num’ows和count(*)如果行數相差很多,則該表需要更新統計信息,建議一周
做一次統計信息收集,如:Sqlexecsys.dbms_stats.gather_schema_stats(ownname='
查看日志緩沖區
CTAIS2'fcascade=TRUE,degree=4);3.4,1.1.15.SQLselectname,value
fromv$sysstatwherenamein('redoentries','redobufferallocationretries');如
果redobufferallocationretries/redoentries超過1%,則需要增大log_buffer。
.性能調優及方法性能調優主要有主動調優和被動調優,主動調優在前面我們已經進行
了闡述,被動調優主要有以下方法進行。
n確定合理的性能優化目標n測試并記錄當前的性能指標n確定當前存在的Oracle性能瓶頸
(Oracle中何處存在等待,哪個SQL語句與此有關)n確定當前的操作系統瓶頸n優化相關的
組件(應用、數據庫、I/O、連接OS及其它)n跟蹤并實施變化管理制度n測試并記錄目前的
性能指標n重復第3到第7步直至達到既定的優化目標不要對并非性能瓶頸的部分進行優化,
否則可能引起額外的問題。正如任何聰明的人會告訴你的:"如果還未壞,千萬不要修"。更
重要的是,一旦既定的優化目標已經達到,就務必停止所有的優化。
獲取Oracle的性能指標(測試前及測試后)必須在峰值處理時測試并獲取系統在優化前和優化
后的性能指標。數據采集不應在數據庫instance剛剛起動后進行。同時,測試數據應在峰值
期間每過15分鐘進行一次。初始化參數TIMED_STATISTICS應該被設為TRUE。
通過運行以下腳木開始快照:$ORACLE_HOME/rdbms/admin/utlbstat.sqL通過運行以下
腳本結束快照:$ORACLE_HOME/rdbms/admin/utlestat.sql.完成utlestat.sql操作后,
會在當前目錄中生成名為"reporttxt”的文件,包含系統的性能數據。該報告包括每15分
鐘捕獲的所有與Oracle例程相關的參數。
.1.尋找問題根源如上所述,通過查看v$system_event事件開始系統事件的問題診斷。
下一步是查看v$session_event,找出引起或經歷等待事件的進程。最后一步是通過
v$session_wait獲得事件的細節。同時,應該進一步通過OS進行深入分析,了解核心的
CPU、內存和10狀態參數。最后,結合兩種不同的診斷的結論,找出系統瓶頸所在。
.2,應用優化從統計(和現實)的角度看,80%的Oracle系統性能問題可以通過SQL
代碼優化來解決。任何應用優化的過程,不外乎是索引優化、全表掃描、并行機制改進和選擇
正確數據組合方法的過程。這正是要達到最佳應用性能所必須考慮的因素。沒有SQL的優化,
就無法實現高性能的應用。良好的SQL語句可以減少CPU資源的消耗,提高響應速度。同時,
優化后的SQL語句還可以提高應用的可擴展性,這是除增加大量內存外,任]可其它硬件手段
也無法實現的。
.2.1.1-0優化1-0優化是系統優化中的一個關鍵步驟,還涉及到其它任務,將文件在
不同驅動器/卷中進行分布,采用優化分區技術、確定1-0子系統瓶頸、確定控制器瓶頸并根
據應用的類型選擇最佳的RAID級。1-0優化應該在全面了解Oracle及OracleRDBMS結構
之后進行。應該在進行1-0優化前后實施1-0數據監控,如平均服務時間,IOPS,平均磁盤
隊列長度等。
.2.2.0-S監控數據庫忙時,應該對操作系統進行監控,因為操作系統的性能指標會揭
示數據庫活動的性質及其對系統的影響。例如,為了了解CPU的利用率,可以通過system
activityreporter(sar-uintervalfrequency)、mpstat(SunSolaris),top(多數UNIX)、
osview(SGIIrix)及vmstat等命令。Sar和vmstat也可被用于確定包括內存使用率、IQ參
數、隊列等待、讀取/交換區活動等信息。在Solaris上,mpstatutility也可用于獲取前面提
到的CPU利用率數據。Solaris上的Adrian性能管理工具也很有用??梢岳闷渲械囊坏蕉?/p>
個工具來確定系統的性能狀況,找出可能存在的瓶頸。
Oracle數據庫性能的管理需要遵循系統的方法論,以確保所有核心問題得以解決。多數問題
可以事先得以管理。了解與0-S相關的問題是成功的關鍵。勿需置疑,系統硬件配置上的良
好平衡也是至關重要的。必須承認,80%的系統性能問題可以通過書寫更好的SQL語句來
解決。來文試圖探究其余20%中可能覆蓋的內容。同時,必須遵守嚴格的規定,在調優目標
達到后終止所有努力。了解自己想到何處是重要的,更重要的是,要知道自己何時到達了目的
地。
.23.例程調優n需要配置的主要初始化參數以下是一些已知與例程優化關系最密切的
一些核心Oracle初始化參數。它們都會影響Oracle及SGA區的活動。任何對這些參數的改
動,在實施到生產環境之前,都必須進行測試。一旦改變了生產環境的參數,就必須對相關的
Oracle動態性能指標和操作系統的性能進行監測,尋找可能由此產生的異常現象。
1)DB_BLOCK_SIZE該參數在數據庫建立前設定,決定了數據庫中每個數據塊的大小。只有重
新建立數據庫,才有可能改變該參數。db_block_size的配置應遵循以下公式:
DB_BLOCK_SIZE=FILESYSTEMBLOCKSIZE=O-SPAGESIZE這可以確保Oracle獲得最
佳I/O性能,同時不會由于冗余或不必要的I/O,給I/O子系統帶來壓力。
2)DB_BLOCK_BUFFERS該參數決定了SGA區數據庫緩沖區中的塊數量。由于這是Oracle
讀取和寫入的區域,它的不正確配置會引起嚴重的I/O性能問題。盡管緩沖區的大小與應用性
質、數據庫大小、同步用戶數等無關,它的確是SGA區中最大的組件。經??梢钥吹骄彌_區
占用75-80%SGA區內存的情況。另外,這一參數設置過大,也會引起整個系統的內存不足,
引起操作系統過多的讀寫操作。
該參數及SHARED_POOL_SIZE通常是兩個最重要的SGA優化目標。只有當數據庫緩沖率長
時間低于70%時,才需要增加其大小說。即使在這種情況下,也需要進一步審查應用的性能
和整個系統的吞吐性。若存在延遲性的應用設計問題,則無論數據庫緩沖區的大小如何,緩沖
和讀寫率都不會有太大改變為。在實調優中,也曾發現由于SQL語句的問題,出現緩沖率很
高,但仍存在全系統性能問題的情況。
3)SHARED_POOL_SIZE該參數按字節數設定,定義了SGA中共享區的大小。該組件的大小
嚴重依賴于應用的類型(即該應用是重用SQL,還是生成動態SQL,等等)。同時它也取決于
同步用戶的數量,以及實例是否被配置成支持多線程服務器(MTS)。如果該應用采用了MTS
配置,則共享區應該明顯增加,因為光標狀態和用戶進程數據等程序全局區域(PGA)都被置入
了共享區。
有關多數應用的SHARED_POOL_SIZE大小設置,可以從每10個同步用戶16MB共享區開
始.這不是一成不變的,因為應用的性質最終會決定該組件的大小。只有當庫緩沖和字典緩沖
使用率一直低于90%時,才需要關注這一參數。但如果應用并未采用變量合并和/共離圖標時,
內存的數量并不會使緩沖使用率高于90%。
共享區過大會導致處理時間增加,甚至SQL語句的掛起。如果應用不能有效地重用SQL,則
無論配置多大的庫緩沖或字典緩沖都無濟于事,不能改善緩沖使用率。
另一個值得考慮的因素是需要隨時使用的存儲PL/SQL代碼數量。應用的核心包可以通過查看
DBA_SOURCE、USERJOURCE得以確認,其大小通過查詢DBA_OBJECT_SIZE了解。另外,
為了確定存儲PL/SQL是否被置于內存,可以查詢動態性能視圖V$DB_OBJECT_SIZE,內
時,包DBMS_SHARED_POOL中的程序大小可被用于確定應用中大包的規模。
4)LOG_BUFFER根據字節設定,該參數定義了SGA緩沖區中redolog的大小。缺X值通常
是數據庫塊大小的四倍,這對于多數環境并不是最佳的。對于中型的Oracle環境,其結構應
該為512Kb左右。對該存儲結構而言,更大并不意味著更好。超過1MB就可能有問題。需
要監控V$SESSION_WAIT中logbufferspace的等待事件,優化該內存結構。需要提醒的
是,在線redolog文件的大小設置不當,會引起redo請求的等待。
5)DB_WRITERS該參數可以針對所有文件系統支持,且不可使用Direct1-0的Oracle實施
設定。這并不需要與rawpartitions一起使用,因為異步1-0更加。建議將該參數設定為(2*
獨立磁盤驅動器數量/卷)。該參數只有在report.txt中的"averagewritequeuelength"持
續高于1時,才需要設定。在Oracle8.0和更高版本中,該參數已不再被支持,而為其它兩
個名為DB_WRITER_PROCESSES和DBWRJO_SLAVES的參數取代。若需要設置
DB_WRITER_PROCESSES值高于8,貝I」DB_WRITER_PROCESSES可被設為1,且
DBWRJO.SLAVES可被設為"n",其中n的值必須設置為(2*獨立磁盤驅動器數量/卷)
.2.4.競爭優化多數與Oracle有關的競爭問題可以通過主動配置管理相關的初始化參
數進行。不恰當地配置init.ora中的鎖參數可能引起競爭。為了不打破其中的平衡,所需的參
數可進行配置并主動得以處理。
包括表在內的數據庫對象可能存在兩個競爭點。第一個是所配置的"freelists”的數量(缺X
值為1)。freelist結構維護著表中可用于插入的塊。對于存在大量同步插入的表,有必要配置
該結構。為了以主動方式處理freelist競爭,必須在建立表時配置FREELISTS??煽紤]的最佳
值為(2*CPU數量)。V$WAITSTAT不可能指示存在freelist競爭,除非存在freelist組,
而這種設置只存在于OracleParallelServer中。即便如此,也無法了解哪個表存在競爭中。
主動式的freelist競爭調優可以事先預防問題出現。
資源競爭的第二個來源與索引有關,即對象塊頭中配置的事務槽數量。事務槽是塊頭中的區域,
是事務處理進程采用自身識別號進行注冊,以便任何被修改的更能夠通過特定事務槽數量在低
層得以識別的地方。如果所有現存的事務槽已經被其它事務占用,服務器器進程會從塊的
PCTFREE中請求23個字節,建立一個新的槽。這種情況適用于存在大量同步事務的對象。
對于事務槽的競爭,需要設置INITRANS參數。對于塊大小為8K的數據庫,多數情況下,4
為最佳設置,占用的空間僅為92字節,卻可以大大減少運行時故障和性能問題。
3.4.2.數據庫備份恢復為了保證客戶數據庫系統的數據安全性,降低各種故障、災難給客戶帶
來的數據丟失,根據客戶系統實際情況,協助客戶規劃實施符合客戶工作要求的完善的備份恢
復方案,以確??蛻魯祿煜到y的安全可靠運行。數據庫的恢復與備份主要有以下幾點:n
恢復管理器(RMAN),能使備份恢復操作自動化nOracle數據泵,用以數據庫的邏輯備份n
用戶管理允許用戶通過操作系統命令手動備份數據庫。
n各種各樣的其他的數據庫備份和恢復軟件,增強了Oracle的備份實用程序Oracle備份時
應注意事項:當數據庫處于運行狀態時的熱備份時,不備份活動事務;使用比如Oracle工具
(OracleRAMN)或者其他的第三方軟件(IBM/Tivoli的數據存儲管理器)壓縮Oracle備
份數據;如果維持數據存儲空間比備份和恢復數據庫時間更重要的話,可以考慮使用二達制壓
縮。
.查看Oracle數據庫備份結果查看Oracle數據庫備份結果,是日常運維中必不可少
的一個環節。包含:查看數據庫備份日志信息,查看backup卷中文件產生的時間,查看
oracle用戶的email,總共三個部分。
.1.查看數據庫備份日志信息假設:備份的臨時目錄為/backup/hotbakup,我們需要
查看2012年7月22日的備份結果,則用下面的命令來查看:#cat
/backup/hotbackup/hotbackup-09-7-22.log|grep-ierror備份腳本的日志文件為
hotbackup-月份-日期-年份.log,在備份的臨時目錄下面。如果文件中存在"ERROR:",則
表明備份沒有成功,存在問題需要查看。
.2.查看backup卷中文件產生的時間#ls-It/backup/hotbackupbackup卷是備份
的臨時目錄,查看輸出結果中文件的日期,都應當是在當天凌晨由熱備份腳本產生的。如果時
間不對則表明熱備份腳木沒執行成功。
3.查看oracle用戶的email#tail-n300/var/mail/oracle熱備份腳本是通過
Oracle用戶的cron去執行的。cron執行完后操作系統就會發一條Email通知Oracle用戶
任務已經完成。查看Oracleemail中今天凌晨部分有無ORA-,Error,Failed等出錯信息,
如果有則表明備份不正常。
3.4.3.數據庫遷移數據遷移是日常運維過程中存在的一個必不可少的應急方案。日常維護過程
中,由于硬件的原因或其它一些外在因素需要對數據進行遷移,遷移到更加高級的主機上、遷
移到遠程的機房上、遷移到不同的平臺下等等一些情況。對于數據遷移我公司有非常成熟的方
案,從以下幾種方式我們可以充分了解其優缺點:nexp/imp:這也算是最常用最簡單的方
法了,一般是基于應用的owner級做導出導入;u優點是可以跨平臺使用;u缺點是停機時
間長,停機時間為從exp到網絡傳輸到新庫,再加上imp的時間;n存儲遷移:這種情況下,
數據文件、控制文件、日志文件、spfile都在存儲上(一段情況下是裸設備),我們可以直接
把存儲掛到新機器上,然后在新機器上啟動數據庫;u優點是該遷移方式非常簡單,主要的
工作是主機工程師的工作,dba只需配合即可,停機時間為當庫、切存儲、起庫的時間。
u缺點是要求新老庫都是同一平臺,是相同的數據庫版本。
n利用dataguard遷移;u優點是停機時間短,停機時間為switchover的時間。
u缺點:主機必須雙份、存儲必須雙份。
n用rman做遷移,這種方式比較適合于跨文件系統的遷移,如同平臺下的不同文件系統。
3.4.4.數據庫運維數據庫的運維主要結合各系統的實際情況,提供切實可行的運維建設機制,
內容覆蓋ORACLE數據庫的日常維護、緊急故障處理,軟件升級等,客戶可依據服務內容進
行相應的定制。我們將會提供全面的、針對性的服務解決方案,以保證客戶系統穩定、高效、
可靠的運行,以達到對業務系統的有效支持。
.查看數據庫基本狀況對數據庫的基本狀況進行查看,其
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 虛增銷售合同協議
- 鉆機合同租賃協議
- 租房餐廳合同協議
- 通州合伙合同協議
- 租賃附屬合同協議
- 鮮奶運輸合同協議
- 租憑解除合同協議
- 研發框架合同協議
- 整店回收合同協議
- 用工合同期滿協議
- JJG 539-2016數字指示秤
- GB/T 2423.18-2012環境試驗第2部分:試驗方法試驗Kb:鹽霧,交變(氯化鈉溶液)
- 九年級道德與法治第一學期期中考試質量分析報告
- GB/T 12750-2006半導體器件集成電路第11部分:半導體集成電路分規范(不包括混合電路)
- 2021年5月北京地區成人本科學士學位英語統一考試真題及答案
- 國防科技大學介紹
- 11470國際勞務合作和海外就業第2章
- 鴿巢問題(例1、例2)課件
- 防腐木施工合同樣本(3篇)
- 感染性休克病人麻醉處理課件
- 說課的基本步驟與方法課件
評論
0/150
提交評論