当前位置:首页 > DBA工作手册
DBA工作手冊
ORACLE数据库管理员应按如下方式对ORACLE数据库系统做定期监控: (1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情况,系统资源的使用情况进行检查,发现并解决问题。
(2). 每周对数据库对象的空间扩展情况,数据的增长情况进行监控,对数据库做健康检查,对数据库对象的状态做检查。
(3). 每月对表和索引等进行Analyze,检查表空间碎片,寻找数据库性能调整的机会,进行数据库性能调整,提出下一步空间管理计划。
对ORACLE数据库状态进行一次全面检查。 (Analyze是收集与数据库有关的统计信息)
每天的工作
(1).确认所有的INSTANCE状态正常 (保证实例正常)
登陆到所有数据库或例程,检测ORACLE后台进程:
$ps –ef|grep ora (linux的操作命令)
(2). 检查文件系统的使用(剩余空间)。如果文件系统的剩余空间小于20%,需删除不用的文件以释放空间。
$df –h
(3). 检查日志文件和trace文件记录alert和trace文件中的错误。
连接到每个需管理的系统
? 使用?telnet?
? 对每个数据库,cd 到bdump目录,通常是$ORACLE_BASE/
? 使用 Unix ?tail?命令来查看alert_
? 如果发现任何新的ORA- 错误,记录并解决
(4). 检查数据库当日备份的有效性。
对RMAN备份方式: RMAN(Recovery Manager)是DBA的一个重要工具,用于
备份、还原和恢复oracle数据库
備份校驗 rman>restore database validate;
检查第三方备份工具的备份日志以确定备份是否成功
对EXPORT备份方式:
检查exp日志文件以确定备份是否成功
对其他备份方式:
检查相应的日志文件
(5). 检查数据文件的状态记录状态不是“online”的数据文件,并做恢复。
Select file_name from dba_data_files where status='OFFLINE'
(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
(7). 检查剩余表空间
SELECT tablespace_name, sum ( blocks ) as free_blk ,
trunc ( sum ( bytes ) /(1024*1024) ) as free_m,
max ( bytes ) / (1024) as big_chunk_k, count (*) as num_chunks
FROM dba_free_space GROUP BY tablespace_name;
(8). 监控数据库性能
运行utlbstat.sql/utlestat.sql生成系统报告,或者使用statspace收集统计数据
(9). 检查数据库性能,记录数据库的cpu使用、IO、buffer命中率等等
使用vmstat,iostat,glance,top等命令
(10). 日常出现问题的处理。 (11).查看數據庫連接信息
定時對數據庫的連接情況經行檢查,看與數據庫建立的會話數目是否正常,如果建立了過多的連接,會消耗數據庫的資源。同時,對一些“掛死”的連接,可能需要手工經行清理。
以下的SQL語句列出當前數據庫建立的會話情況: Select count(*) from v$session;---查看當前會話連接數
Select sid,serial#,username,program,machine,status from v$session;
注意:SID為1到10(USERNAME列為空)的會話,是Oracle的後台進程,不要多這些會話經行任何操作 (12).並發會話量
並發會話量正常時段為60以下,查詢系統在20以下,如果超過這些指標,則認為系統有阻塞情況,需要查找原因,引起注意。查看系統並發的腳本為:
Select count(1) from v$session where status=?ACTIVE? and username not in (?SYS?,?SYSTEM?); (13).數據文件健康狀況
當發現數據文件損壞時,需要立即修復
Select file_name,status from dba_data_files; 或者
Select file#,status,name from v$datafile_header;
(14).查看緩衝區命中率
緩衝區命中率應該保證在95%以上。
Select 1-(sum(decode(name,'physical
reads',value,0))/(sum(decode(name,'db block
gets',value,0))+(sum(decode(name,'consistent gets',value,0))))) \ from v$sysstat;
(15).查看LibraryCache命中率
Select round(sum(pins-reloads)/sum(pins)*100,4) \Ratio\ from v$librarycache;
(16).查看數據庫等待事件
如果數據庫長時間持續出現大量像 buffer busy waits,db file scattered reda,db file sequential read,enqueue,free buffer waits,latch free,logfile sync,log file paralle write等等非空閒事件時,需要對其進行分析,可能存在問題的語句。
Select sid,event,p1,p2,p3,wait_time,seconds_in_wait from
v$session_wait where event not like 'SQL%' and event not like 'rdbms%';
(17).查看數據庫鎖表情況
select 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 s where o.object_id=l.object_id and s.sid=l.session_id;
解锁处理:
alter system kill session '&sid,&serial#'; (18).查看是否有僵死進程
select spid from v$process where addr not in (select paddr from v$session); 有些僵死进程有阻塞其他业务的正常运行,定期杀掉僵死进程
每周的工作
(1). 控数据库对象的空间扩展情况
根据本周每天的检查情况找到空间扩展很快的数据库对象,并采取相
应的措施
-- 删除历史数据
--- 扩表空间
alter tablespace
--- 调整数据对象的存储参数
next extent
pct_increase
(2). 监控数据量的增长情况
根据本周每天的检查情况找到记录数量增长很快的数据库对象,并采
取相应的措施
-- 删除历史数据
--- 扩表空间
alter tablespace
(3). 系统健康检查
共分享92篇相关文档