從整體上介紹了一個dba的職責和任務等等。
Oracle數據庫管理員應按如下方式對Oracle數據庫系統做定期監控:
(1).每天對Oracle數據庫的運行狀態,日志文件,備份情況,數據
庫的空間使用情況,系統資源的使用情況進行檢查,發現並解決
問題。
(2).每周對數據庫對象的空間擴展情況,數據的增長情況進行監控,對數據庫做健康檢查,對數據庫對象的狀態做檢查。
(3).每月對表和索引等進行Analyze,檢查表空間碎片,尋找數據庫
性能調整的機會,進行數據庫性能調整,提出下一步空間管理
計劃。對Oracle數據庫狀態進行一次全面檢查。
每天的工作
(1).確認所有的INSTANCE狀態正常
登陸到所有數據庫或例程,檢測Oracle後台進程:
$ps–ef|grepora
(2).檢查文件系統的使用(剩余空間)。如果文件系統的剩余空間小於20%,需刪除不用的文件以釋放空間。
$df–k
(3).檢查日志文件和trace文件記錄alert和trace文件中的錯誤。
連接到每個需管理的系統
?使用’telnet’
?對每個數據庫,cd到bdump目錄,通常是$Oracle_BASE/<SID>/bdump
?使用Unix‘tail’命令來查看alert_<SID>.log文件
?如果發現任何新的ORA-錯誤,記錄並解決
(4).檢查數據庫當日備份的有效性。
對RMAN備份方式:
檢查第三方備份工具的備份日志以確定備份是否成功
對EXPORT備份方式:
檢查exp日志文件以確定備份是否成功
對其他備份方式:
檢查相應的日志文件
(5).檢查數據文件的狀態記錄狀態不是“online”的數據文件,並做恢復。
Selectfile_namefromdba_data_fileswherestatus=’OFFLINE’
(6).檢查表空間的使用情況
SELECTtablespace_name,max_m,count_blocksfree_blk_cnt,sum_free_m,to_char(100*sum_free_m/sum_m,'99.99')||'%'ASPct_free
FROM(SELECTtablespace_name,sum(bytes)/1024/1024ASsum_mFROMdba_data_filesGROUPBYtablespace_name),
(SELECTtablespace_nameASfs_ts_name,max(bytes)/1024/1024ASmax_m,count(blocks)AScount_blocks,sum(bytes/1024/1024)ASsum_free_mFROMdba_free_spaceGROUPBYtablespace_name)
WHEREtablespace_name=fs_ts_name
(7).檢查剩余表空間
SELECTtablespace_name,sum(blocks)asfree_blk,
trunc(sum(bytes)/(1024*1024))asfree_m,
max(bytes)/(1024)asbig_chunk_k,count(*)asnum_chunks
FROMdba_free_spaceGROUPBYtablespace_name;
(8).監控數據庫性能
運行bstat/estat生成系統報告
或者使用statspack收集統計數據
(9).檢查數據庫性能,記錄數據庫的cpu使用、IO、buffer命中率等等
使用vmstat,iOStat,glance,top等命令
(10).日常出現問題的處理。
每周的工作
(1).控數據庫對象的空間擴展情況
根據本周每天的檢查情況找到空間擴展很快的數據庫對象,並采取相
應的措施
--刪除歷史數據
---擴表空間
altertablespace<name>adddatafile‘<file>’size<size>
---調整數據對象的存儲參數
nextextent
pct_increase
(2).監控數據量的增長情況
根據本周每天的檢查情況找到記錄數量增長很快的數據庫對象,並采
取相應的措施
--刪除歷史數據
---擴表空間
altertablespace<name>adddatafile‘<file>’size<size>
(3).系統健康檢查
檢查以下內容:
init<sid>.ora
controlfile
redologfile
archiving
sortareasize
tablespace(system,temporary,tablespacefragment)
datafiles(autoextend,location)
object(numberofextent,nextextent,index)
rollbacksegment
logging&tracing(alert.log,max_dump_file_size,sqlnet)
(4).檢查無效的數據庫對象
SELECTowner,object_name,object_typeFROMdba_objects
WHEREstatus=’INVALID’。
(5).檢查不起作用的約束
SELECTowner,constraint_name,table_name,
constraint_type,status
FROMdba_constraints
WHEREstatus='DISABLED’ANDconstraint_type='P'
(6).檢查無效的trigger
SELECTowner,trigger_name,table_name,status
FROMdba_triggers
WHEREstatus='DISABLED’
每月的工作
(1).AnalyzeTables/Indexes/Cluster
analyzetable<name>estimatestatistiCSSample50percent;
(2).檢查表空間碎片
根據本月每周的檢查分析數據庫碎片情況,找到相應的解決方法
(3).尋找數據庫性能調整的機會
比較每天對數據庫性能的監控報告,確定是否有必要對數據庫性能進行調整
(4).數據庫性能調整
如有必要,進行性能調整
(5).提出下一步空間管理計劃
根據每周的監控,提出空間管理的改進方法
OracleDBA日常管理
目的:這篇文檔有很詳細的資料記錄著對一個甚至更多的Oracle數據庫每天的,每月的,
每年的運行的狀態的結果及檢查的結果,在文檔的附錄中你將會看到所有檢查,修改的SQL
和PL/SQL代碼。
目錄
1.日常維護程序
A.檢查已起的所有實例
B.查找一些新的警告日志
C.檢查DBSNMP是否在運行
D.檢查數據庫備份是否正確
E.檢查備份到磁帶中的文件是否正確
F.檢查數據庫的性能是否正常合理,是否有足夠的空間和資源
G.將文檔日志復制到備份的數據庫中
H.要常看DBA用戶手冊
2.晚間維護程序
A.收集VOLUMETRIC的數據
3.每周維護工作
A.查找那些破壞規則的OBJECT
B.查找是否有違反安全策略的問題
C.查看錯誤地方的SQL*NET日志
D.將所有的警告日志存檔
E.經常訪問供應商的主頁
4.月維護程序
A.查看對數據庫會產生危害的增長速度
B.回顧以前數據庫優化性能的調整
C.查看I/O的屏頸問題
D.回顧FRAGMENTATION
E.將來的執行計劃
F.查看調整點和維護
5.附錄
A.月維護過程
B.晚間維護過程
C.周維護過程
6.參考文獻
----------------------------------------------------------------
一.日維護過程
A.查看所有的實例是否已起
確定數據庫是可用的,把每個實例寫入日志並且運行日報告或是運行測試
文件。當然有一些操作我們是希望它能自動運行的。
可選擇執行:用Oracle管理器中的‘PROBE’事件來查看
B.查找新的警告日志文件
1.聯接每一個操作管理系統
2.使用‘TELNET’或是可比較程序
3.對每一個管理實例,經常的執行$Oracle_BASE/<SID>/bdump操
作,並使其能回退到控制數據庫的SID。
4.在提示下,使用UNIX中的‘TAIL’命令查看alert_<SID>.log,或是
用其他方式檢查文件中最近時期的警告日志
5.如果以前出現過的一些ORA_ERRORS又出現,將它記錄到數據庫
恢復日志中並且仔細的研究它們,這個數據庫恢復日志在〈FILE〉中
C.查看DBSNMP的運行情況
檢查每個被管理機器的‘DBSNMP’進程並將它們記錄到日志中。
在UNIX中,在命令行中,鍵入ps–ef|grepdbsnmp,將回看到2個
DBSNMP進程在運行。如果沒有,重啟DBSNMP。
D.查數據庫備份是否成功
E.檢查備份的磁帶文檔是否成功
F.檢查對合理的性能來說是否有足夠的資源
1.檢查在表空間中有沒有剩余空間。
對每一個實例來說,檢查在表空間中是否存在有剩余空間來滿足當天
的預期的需要。當數據庫中已有的數據是穩定的,數據日增長的平均
數也是可以計算出來,最小的剩余空間至少要能滿足每天數據的增長。
A)運行‘FREE.SQL’來檢查表空間的剩余空間。
B)運行‘SPACE.SQL’來檢查表空間中的剩余空間百分率
2.檢查回滾段
回滾段的狀態一般是在線的,除了一些為復雜工作准備的專用段,它一般狀態是離線的。
a)每個數據庫都有一個回滾段名字的列表。
b)你可以用V$ROLLSTAT來查詢在線或是離線的回滾段的現在狀態.
c)對於所有回滾段的存儲參數及名字,可用
DBA_ROLLBACK_SEGS來查詢。但是它不如V$ROLLSTAT准確。
3.識別出一些過分的增長
查看數據庫中超出資源或是增長速度過大的段,這些段的存儲參數需要調整。
a)收集日數據大小的信息,可以用
‘ANALYZE5PCT.SQL’。如果你收集的是每晚的信息,則可跳過這一步。
b)檢查當前的范圍,可用‘NR.EXTENTS.SQL’。
c)查詢當前表的大小信息。
d)查詢當前索引大小的信息。
e)查詢增長趨勢。
4.確定空間的范圍。
如果范圍空間對象的NEXT_EXTENT比表空間所能提供的最大范
圍還要大,那麼這將影響數據庫的運行。如果我們找到了這個目標,可
以用‘ALTERTABLESPACECOALESCE’調查它的位置,或加另外的數據文件。
A)運行‘SPACEBOUND.SQL’。如果都是正常的,將不返回任何行。
5.回顧CPU,內存,網絡,硬件資源論點的過程
A)檢查CPU的利用情況,進到x:.htm=>system
metrics=>CPU利用頁,CPU的最大限度為400,當CPU的占用保持
在350以上有一段時間的話,我們就需要查看及研究出現的問題。
G.將存檔日志復制到備用數據庫中
如果有一個備用數據庫,將適當的存檔日志復制到備用數據庫的期望
位置,備用數據庫中保存最近期的數據。
H.經常查閱DBA用戶手冊
如果有可能的話,要廣泛的閱讀,包括DBA手冊,行業雜志,新聞組或是郵件列表。
-------------------------------------------------------------
二.晚間維護過程
大部分的數據庫產品將受益於每晚確定的檢查進程的運行。
A.收集VOLUMETRIC數據
1.分析計劃和收集數據
更准確的分析計算並保存結果。
a)如果你現在沒有作這些的話,用‘MKVOLFACT.SQL’來創建測定體積的表。
b)收集晚間數據大小的信息,用‘ANALYZECOMP.SQL’。
c)收集統計結果,用‘POPVOL.SQL’。
d)在空閒的時候檢查數據,可能的話,每周或每個月進行。
我是用MSExcel和ODBC的聯接來檢查數據和圖表的增長
-------------------------------------------------------------
三.每周維護過程
A.查找被破壞的目標
1.對於每個給定表空間的對象來說,NEXT_EXTENT的大小是相同的,如
12/14/98,缺省的NEXT_EXTENT的DATAHI為1G,DATALO為500MB,
INDEXES為256MB。
A)檢查NEXT_EXTENT的設置,可用‘NEXTEXT。SQL’。
B)檢查已有的EXTENTS,可用‘EXISTEXT。SQL’。
2.所有的表都應該有唯一的主鍵
a)查看那些表沒有主鍵,可用‘NO_PK.SQL’。
b)查找那些主鍵是沒有發揮作用的,可用‘DIS_PK.SQL’。
c)所有作索引的主鍵都要是唯一的,可用‘NONUPK。SQL’來檢查。
3.所有的索引都要放到索引表空間中。運行‘MKREBUILD_IDX。SQL’
4.不同的環境之間的計劃應該是同樣的,特別是測試環境和成品環境之間的計劃應該相同。
a)檢查不同的2個運行環境中的數據類型是否一致,可用
‘DATATYPE.SQL’。
b)在2個不同的實例中尋找對象的不同點,可用
‘OBJ_COORD.SQL’。
c)更好的做法是,使用一種工具,象尋求軟件的計劃管理器那樣的工具。
B.查看是否有危害到安全策略的問題。
C.查看報錯的SQL*NET日志。
1.客戶端的日志。
2.
服務器端的日志。
D..將所有的警告日志存檔
E..供應商的主頁
1.Oracle供應商
http://www.Oracle.com
http://technet.Oracle.com
http://www.Oracle.com/support
http://www.oramag.com
2.QuestSoftware
http://www.quests.com
3.SunMicrosystems
http://www.sun.com
----------------------------------------------------------------
四.月維護過程
A.查看對數據庫會產生危害的增長速度
1.從以前的記錄或報告中回顧段增長的變化以此來確定段增長帶來危害
B.回顧以前數據庫優化性能的調整
1.回顧一般Oracle數據庫的調整點,比較以前的報告來確定有害的發展趨勢。
C.查看I/O的屏頸問題
1.查看前期數據庫文件的活動性,比較以前的輸出來判斷有可能導致屏頸問題的趨勢。
D.回顧FRAGMENTATION
E.計劃數據庫將來的性能
1.比較Oracle和操作系統的CPU,內存,網絡,及硬盤的利用率以此
來確定在近期將會有的一些資源爭奪的趨勢
2.當系統將超出范圍時要把性能趨勢當作服務水平的協議來看
F.完成調整和維護工作
1.使修改滿足避免系統資源的爭奪的需要,這裡面包括增加新資源或使預期的停工。