日常巡檢手冊
監控所有關鍵業務系統的數據庫系統,以ORACLE數據庫爲例。主要的監控指標應包括配置信息、故障監控和性能監控。主要工作包括:
1、配置信息管理:數據庫配置信息包括數據庫名,數據庫實例名,版本信息,數據庫位數,歸檔方式,文件目錄,表空間信息,內存信息,其他SID.ORA的相關參數信息。
2、故障監控:監控數據庫關鍵的運行狀態和進程等進行有效的管理,具體的管理功能應包含:(1)服務器實例的可用性,監控數據庫實例的狀態;(2)空間監控:監控表空間、Redo日誌、Archive日誌的使用情況;(3)顯示和過濾Alert
Log中的報警等;(4)數據庫空間、表空間、數據文件佔用或空閒的空間;磁盤的使用;表和索引的使用;重做日誌Redo logs;內存的使用Memory
usage;交換區的使用Swap
usage。
3、性能監控:監控數據庫的性能,鑑別和消除瓶頸以提高數據庫系統的整體性能,包括:
(1)由內存容量引起的數據庫響應緩慢;
(2)
由於請求Redo日誌空間引起的延遲;
(3)鎖資源監控,對阻塞了其它會話的鎖進行告警,以及可用的鎖;
(4)等待某回滾段完成的事務百分比;
(5)監控SGA、Buffer
Cache、I/O等相關的性能數據;(6)監控數據庫會話的狀況。
應及時變更配置信息並定期(每月)編制數據庫監控報告並提交相關部門和人員。
檢查實例
1.常規檢查
編號
參數名稱 描述 參數說明
1 文件自動擴展 正確
數據文件使用裸設備時,文件不可自動擴展(使用文件系統的數據文件也建議不設成自動擴展):
Sql>select
file_name,tablespace_name,status,autoextensible from dba_data_files where
autoextensible<>'NO';
Sql>alter database datafile '****' autoextend
off;;
2 默認表空間 正確
不要使用system表空間作爲應用用戶的默認表空間:
Sql>Select
username,account_status,default_tablespace,temporary_tablespace from
dba_Users;
Sql>alter user ctais2bb default tablespace ctais2_dat;
3
歷史錯誤信息 沒有錯誤
搜索oracle各實例的alert文件是否有錯誤代碼出現,如:ORA-00600,ORA-00603等錯誤:
通過以下sql
找到他的路徑
Sql>select value from v$parameter where name
='background_dump_dest';
4 剩餘表空間 沒有空間壓力 Sql>Select
a.Tablespace_Name, a.Total || 'M' Total_Space, (a.Total - b.Free) || 'M'
Used_Space, To_Char((a.Total - b.Free) / a.Total * 100, '99.99') || '%'
Pct_Free
From
(Select Tablespace_Name, Sum(Bytes) / 1024 / 1024 Total
From Dba_Data_Files Group By tablespace_Name) a,
(Select Tablespace_Name,
Sum(Bytes) / 1024 / 1024 Free From Dba_Free_Space Group By Tablespace_Name) b
where a.Tablespace_Name = b.Tablespace_Name;
5 歸檔模式
已歸檔
查看數據是否啓用歸檔模式,歸檔目錄是否均已掛接,提醒管理員注意歸檔文件的備份,以防治歸檔目錄空間不足,以sysdba登陸sqlplus:
SQL>
archive log list; (sqlplus下執行)
6 備份策略 注
是否備份spfile文件,控制文件,歸檔日誌文件,備份歸檔日誌文件後是否刪除
7 失效對象 有(已處理)
Sql>Select object_name,object_type,status From Dba_Objects Where
status<>'VALID';
如有則編譯失效對象,在非業務處理時間,以sysdba登陸sqlplus:
SQL>
@$ORACLE_HOME/rdbms/admin/utlrp.sql
8 行鏈接/遷移 沒有行遷移
是否有行鏈接/行遷移的情況出現:
Sql>select table_name,num_rows,chain_cnt From dba_tables
Where owner='CTAIS2' And chain_cnt<>0;
注:含有long
raw列的表有行鏈接是正常的,找到遷移行保存到chained_rows表中,如沒有該表執行../rdbms/admin/utlchain.sql
Sql>analyze
table tablename list chained
rows;
可通過表chained_rows中table_name,head_rowid看出哪些行是遷移行
如:
Sql>create
table aa as select a.* from sb_zsxx a,chained_rows b where a.rowid=b.head_rowid
and b.table_name ='SB_ZSXX';
sql>delete from sb_zsxx where rowid in
(select head_rowid from chained_rows where table_name =
'SB_ZSXX');
sql>insert into sb_zsxx select * from chained_row where
table_name = 'SB_ZSXX';
9 job 沒有失敗的任務
查看job是否broken,是否有failure
Sql>select
job,what,last_date,next_date,failures,broken from dba_jobs Where
schema_user='CTAIS2';
如有問題建議重建job,如:
exec
sys.dbms_job.remove(1);
commit;
exec
sys.dbms_job.isubmit(1,'REFRESH_ALL_SNAPSHOT;',SYSDATE+1/1440,'SYSDATE+4/1440');
commit;
10
統計分析 管理員定期做 對於採用Oracle
Cost-Based-Optimizer的系統,需要定期對數據對象的統計信息進行採集更新,使優化器可以根據準備的信息作出正確的explain
plan。在以下情況更需要進行統計信息的更新:
1、 應用發生變化
2、
大規模數據遷移、歷史數據遷出、其他數據的導入等
3、
數據量發生變化
查看錶或索引的統計信息是否需更新,如:
Sql>Select
table_name,num_rows,last_analyzed From user_tables where table_name
='DJ_NSRXX'
sql>select count(*) from
DJ_NSRXX如num_rows和count(*)
如果行數相差很多,則該表需要更新統計信息,建議一週做一次統計信息收集,如:
Sql>exec
sys.dbms_stats.gather_schema_stats(ownname=>'CTAIS2',cascade =>
TRUE,degree => 4);
11 死鎖現象 沒有發生過死鎖
檢查數據庫在運行過程中是否有死鎖現象,找出被鎖住的對象及session ID
Sql>select
object_name,s.sid,s.serial# From v$locked_object o,v$session s ,dba_objects c
Where o.session_id=s.sid And
o.object_id=c.object_id;
oracle級kill掉該session:
sql>alter system kill
session 'sid,serial#';
操作系統級kill掉session:
#>kill -9 pid
12
失效的索引 沒有失效的索引
檢查是否有失效的索引:
注:分區表上的索引status爲N/A是正常的
Sql>select
index_name,table_name,tablespace_name,status From dba_indexes Where
owner='CTAIS2' And
status<>'VALID';
如有失效索引則對該索引做rebuild,如:
Sql>alter index
INDEX_NAME rebuild tablespace TABLESPACE_NAME;
13 失效的約束
沒有失效的約束 檢查是否有失效的約束:
Sq>Select
constraint_type,constraint_name,table_name,r_owner,r_constraint_name, status
From dba_constraints Where owner='CTAIS2' And
status<>'ENABLED';
如有失效約束則啓用,如:
Sql>alter Table TABLE_NAME Enable
Constraints CONSTRAINT_NAME;
14 失效的觸發器 沒有失效的觸發器
檢查是否有失效的觸發器:
Sql>select trigger_name,table_name,status From dba_triggers
Where owner='CTAIS2' And
status<>'ENABLED';
如有失效觸發器則啓用,如:
Sql>alter Trigger TRIGGER_NAME
Enable;
15 索引空間浪費 管理員定期管理
索引的空間浪費:只有完全空的索引塊才進入空閒列表,找到浪費空間的索引,首先分析索引:
Sql>analyze index indexname
validate structure;
然後查詢index_stats視圖:
Sql>select
name,lf_rows,lf_rows_len,del_lf_rows,del_lf_rows_len From
index_stats;
lf_rows --當前索引值的數量
lf_rows_len
--當前索引值的大小(byte)
del_lf_rows --從索引中刪除的值的數量
del_lf_rows_len
--從索引中刪除的值的大小(byte)
如果del_lf_rows_len達到lf_rows_len的20%則需要rebuild索引了
16
定期修改密碼 暫時未使用
在綜合徵管系統系統的數據庫上往往存在很多的用戶,如:第三方數據庫監控系統,電話申報系統等等,初始安裝數據庫時的演示用戶,管理員用戶等等。這些用戶的密碼往往是寫定的,被很多人知道,會被別有用心的人利用來攻擊系統甚至進行修改數據。
需要修改密碼的用戶包括:
數據庫管理員用戶INTERNAL(ORACLE9I版本中已經廢棄了),SYS,SYSTEM,
綜合徵管系統系統的超級用戶CTAIS,CTAIS2,CTAIS_MAINT,
外圍軟件用戶,如銀稅聯網,電話申報等用戶。
修改方法:
Sql>alter
user USER_NAME identified by PASSWORD;
17 緩衝區命中率 正常
.緩衝區命中率:
Sql>select name,
1-(physical_reads/(db_block_gets+consistent_gets)) "hit_ratio" from
v$buffer_pool_statistics where db_block_gets+consistent_gets>0;
如果命中率低於90%
則需加大數據庫參數db_cache_size
18 共享池命中率 正常
共享池命中率:
Sql>select sum(pinhits)/sum(pins)*100 from
v$librarycache;
如低於95%,則需要調整應用程序使用綁定變量,或者調整數據庫參數shared pool的大小
19
排序區 正常 排序區:
Sql>select name,value from v$sysstat where name
like
'%sort%';
如果disk/(memoty+row)的比例過高,則需要調整sort_area_size(workarea_size_policy=false)或pga_aggregate_target(workarea_size_policy=true)
20
日誌緩衝區 正常 日誌緩衝區:
Sql>select name,value from v$sysstat
where name in ('redo entries','redo buffer allocation retries');
如果redo
buffer allocation retries/redo entries 超過1%
,則需要增大log_buffer
2.數據庫參數收集
說明:數據庫參數的檢查,是否有不合理的配置(數據庫服務器的硬件配置及各地業務壓力各不相同,涉及到進程及內存的參數僅供參考,使用表格下面的語句檢查,夠用即可):
select
Name,Value from v$parameter order by NAME;
1 參數 2
參數值
processes 2400
timed_statistics
TRUE
shared_pool_size 自動管理
sga_max_size
64G
large_pool_size 自動管理
java_pool_size
自動管理
control_files /dev/rzs_control01,
/dev/rzs_control02,
/dev/rzs_control03
db_block_size 8192
db_writer_processes
4
db_cache_size 自動管理
compatible
10.2.0.3.0
log_archive_start false
log_archive_dest_1
LOCATION=/arc1
log_archive_max_processes 5
log_buffer
14131200
db_file_multiblock_read_count(生產)
16
fast_start_mttr_target 0
log_checkpoints_to_alert
TRUE
dml_locks 15000
transactions 2909
undo_management
AUTO
undo_tablespace UNDOTBS1
undo_retention
10800
remote_login_passwordfile EXCLUSIVE
db_domain
instance_name Sdtais1
cursor_space_for_time(生產)
false
session_cached_cursors 300
job_queue_processes
10
cursor_sharing(生產) SIMILAR
hash_join_enabled
TRUE
background_dump_dest
/oracle/admin/sdtais/bdump
user_dump_dest
/oracle/admin/sdtais/udump
core_dump_dest
/oracle/admin/sdtais/cdump
sort_area_size 65536
open_cursors
4000
star_transformation_enabled FALSE
query_rewrite_enabled
true
pga_aggregate_target 9820M
aq_tm_processes 1 ( odc)
fast_start_parallel_rollback LOW 根據統計值調整
DBA日常巡檢手冊
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.