ORACLE數據庫管理員應按以下方式對ORACLE數據庫系統作按期監控:
(1)
. 天天
對ORACLE數據庫的運行狀態,日誌文件,備份狀況,數據庫的磁盤空間使用狀況,系統資源的使用狀況進行檢查,發現並解決問題。
(1).確認全部的INSTANCE狀態正常,登錄到全部數據庫或例程,檢測ORACLE後臺進程: $ps –ef|grep ora_
(2). 檢查文件系統的使用(剩餘空間)。若是文件系統的剩餘空間小於20%,需刪除不用的文件以釋放空間。 清理空間時請務必當心! $df –k
(3). 檢查日誌文件和trace文件記錄alert和trace文件中的錯誤。
鏈接到每一個需管理的系統對每一個數據庫,cd 到bdump目錄,一般是ORACLE_BASE/admin/<SID>/bdump
使用 Unix tail 命令來查看alert_<SID>.log文件若是發現任何新的ORA- 錯誤,記錄並解決.
(4). 檢查數據庫當日備份的有效性。
對RMAN備份方式: 檢查第三方備份工具的備份日誌以肯定備份是否成功
對EXPORT備份方式: 檢查exp日誌文件以肯定備份是否成功
對其餘備份方式: 檢查相應的日誌文件
(5). 檢查數據文件的狀態記錄狀態不是「online」的數據文件,並考慮是否須要作恢復。
Select file_name from dba_data_files where status=‘OFFLINE’
v$recover_file
(6). 檢查表空間的使用狀況
SELECT tablespace_name, max_m, count_blocks free_blk_cnt, sum_free_m,to_char(100*sum_free_m/sum_m, '99.99') || '%' AS pct_free
FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name),
( SELECT tablespace_name AS fs_ts_name, max(bytes)/1024/1024 AS max_m, count(blocks) AS count_blocks, sum(bytes/1024/1024) AS sum_free_m FROM dba_free_space GROUP BY tablespace_name )
WHERE tablespace_name = fs_ts_name
order by pct_free
System: 字典空間,不能被損壞
Sysaux: 10g高併發,或者系統繁忙時候,會形成system爭用,能夠將工具放在sysaux中減輕system的壓力,sysaux不影響系統(影響性能)
Example:
Users: 10g 用戶數據從system剝離出來
Undo: dml,dql把數據快照到此,數據提交以後當即消失(用戶回覆)
解決方法:設置預警、設置表空間爲自動增加、添加數據文件
(7). 監控數據庫性能
運行statspack生成系統報告
1、使用statspack的要求 job_queue_processes >0 ; timed_statistics =true
2、statspack存儲統計信息,須要建立一個足夠大的表空間。
create tablespace perfstat datafile '/u01/perfstat.dbf' size 500m extent management local;
3、執行安裝腳本,安裝statspack
cd $ORACLE_HOME/rdmbs/admin/spcreate.sql 以sp開頭的都是statspack的腳本
4、收集統計信息: exec statspack.snap ; exec statspack.snap
5、 查看統計信息 @spreport.sql
(8). 檢查數據庫性能,記錄數據庫的cpu使用、IO、buffer命中率等等
使用vmstat,iostat,sar,top等命令
VMstat顯示虛擬內存的使用狀態,
iostat顯示cpu和設備的輸入輸出統計信息的狀態,
sar收集並顯示系統中的動態活動信息,
top動態顯示linux中的系統任務。
(2)
. 每週對數據庫對象的空間擴展狀況,數據的增加狀況進行監控,對數據庫作健康檢查,對數據庫對象的狀態作檢查。
(1). 監控數據庫對象的空間擴展狀況
根據本週天天的檢查狀況找到空間擴展很快的數據庫對象,並採起相應的措施
-- 刪除歷史數據
-- 擴表空間
alter tablespace <name> add datafile ‘<file>’ size <size>
-- 調整數據對象的存儲參數 或者放在合理存儲參數的本地管理表空間上
next extent
pct_increase
(2)系統健康檢查
檢查如下內容:
init<sid>.ora
controlfile
redo log file
archiving
sort area size
tablespace(system,temporary,tablespace fragment)
datafiles(autoextend,location)
object(number of extent,next extent,index)
rollback segment
logging &tracing(alert.log,max_dump_file_size,sqlnet)
(3)檢查無效的數據庫對象
SELECT owner, object_name, object_type FROM dba_objects
WHERE status='INVALID'
(4)檢查不起做用的約束
SELECT owner, constraint_name, table_name, constraint_type, status
FROM dba_constraints
WHERE status = 'DISABLED' AND constraint_type = 'P'
(5)檢查無效的trigger
SELECT owner, trigger_name, table_name, status
FROM dba_triggers
WHERE status = 'DISABLED'
(3)
. 每個月對錶和索引等進行Analyze,檢查表空間碎片,尋找數據庫性能調整的機會,進行數據庫性能調整,提出下一步空間管理計劃。對ORACLE數據庫狀態進行一次全面檢查。
(
1)
若是使用CBO(在10g中這部分工做被簡化了)
a
nalyze Tables/Indexes/Cluster
analyze table <name> estimate statistics sample 40 percent;
(2). 檢查表空間碎片
根據本月每週的檢查分析數據庫碎片狀況,找到相應的解決方法
。(
SQL
)
(3). 尋找數據庫性能調整的機會
比較天天對數據庫性能的監控報告,肯定是否有必要對數據庫性能進行調整
(4). 數據庫性能調整
若有必要,進行性能調整
(5). 提出下一步空間管理計劃
根據每週的監控,提出空間管理的改進方法
其餘工做:
1、作好備份!!!
2、找環境作災難測試
3、應對領導、用戶等各個方面的需求變動
4、根據新的需求設計新的數據庫架構方案
5、爲其餘部門提供業務或者腳本支持
6、考慮存儲的使用