数据库DBA一天的日常

Posted 厦门微思网络

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库DBA一天的日常相关的知识,希望对你有一定的参考价值。

关注我,你的眼睛会怀孕


很多数据库运维没有一个每天任务的规划,在我看来这是不称职的,每天有节奏有规律的检查各种数据可以大量的规避故障,就算出故障也能很快的定位解决。今天就给大家看看我每天必做的一些事:

检查数据库状态


确认所有的INSTANCE状态以及listener状态正常,登陆到所有数据库或例程,检

测ORACLE后台进程:


    
      
      
    
$ ps –ef|grep ora$ lsnrctl statusSQL> select status from v$instance;

检查文件系统

   
     
     
   

   
     
     
   
如果文件系统的剩余空间过小或增长较快,需对其进行确认并删除不用的文件以释放空间。
   
     
     
   
$df –k
   
     
     
   
$df -h


检查警告日志文件(alert_SID.log)

   
     
     
   

   
     
     
   
Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况:数据库的启动、关闭,启动时的非缺省参数;数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因;对数据库进行的某些操作,如创建或删除表空间、增加数据文件;
数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA-600)定期检查日志文件,根据日志中发现的问题及时进行处
   
     
     
   

   
     
     
   
数据库DBA一天的日常

alert_SID.log通常是在$ORACLE_BASE/admin/<SID>/bdump目录下。
   
     
     
   
使用 Unix ‘tail’或者more命令查看该日志信息(为了方便查询,每天查询后
将查询的日志mv到与日志同一目录下的bak目录下);
   
     
     
   
定期检查警告日志、TRC文件及listener日志
   
     
     
   
如果这些日志量非常大,占用很大的资源空间,可考虑定期删除以便释放资源。
   
     
     
   
一般情况下这些文件存在的相关目录:
   
     
     
   
警告日志: $ORACLE_BASE/admin/<SID>/bdump
   
     
     
   
或者
   
     
     
   
通过 SQL> show parameter background_dump_dest参数查看其存放位置;
   
     
     
   
Trc文件: $ORACLE_BASE/admin/<SID>/udump
   
     
     
   
或者
   
     
     
   
通过 SQL> show parameter user_dump_dest参数查看其存放位置;
   
     
     
   
Listener日志: $ORACLE_HOME/network/log


查看数据库连接信息

   
     
     
   

定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能需要手工进行清理。
以下的SQL语句列出当前数据库建立的会话情况:

    
      
      
    
Select count(*) from v$session; ――查看当前会话连接数 select sid,serial#,username,program,machine,status from v$session; SID SERIAL# USERNAME PROGRAM MACHINE STATUS ---- ---------- ------------ ---------------------------- ------------ -------- 1 3 oracle@xz15saledb (PMON) xz15saledb ACTIVE 2 3 oracle@xz15saledb (DBW0) xz15saledb ACTIVE 3 3 oracle@xz15saledb (DBW1) xz15saledb ACTIVE 4 3 oracle@xz15saledb (LGWR) xz15saledb ACTIVE 5 3 oracle@xz15saledb (CKPT) xz15saledb ACTIVE 6 3 oracle@xz15saledb (SMON) xz15saledb ACTIVE 7 3 oracle@xz15saledb (RECO) xz15saledb ACTIVE 8 1 oracle@xz15saledb (CJQ0) xz15saledb ACTIVE 9 3 oracle@xz15saledb (ARC0) xz15saledb ACTIVE 10 3 oracle@xz15saledb (ARC1) xz15saledb ACTIVE 11 11319 ZK AccPrtInv_svr@xz15tuxedo2 (TNS V1-V3) xz15tuxedo2 INACTIVE 13 48876 ZG upload@xz15saleap (TNS V1-V3) xz15saleap INACTIVE 17 20405 ZK AccCreateRpt@xz15tuxedo1 (TNS V1-V3) xz15tuxedo1 INACTIVE 20 12895 ZK OweScanSvr@xz15billdb (TNS V1-V3) xz15billdb INACTIVE 其中, SID 会话(session)的ID号; SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话; USERNAME 建立该会话的用户名; PROGRAM 这个会话是用什么工具连接到数据库的; STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作; 如果DBA要手工断开某个会话,则执行:(一般不建议使用这种方式去杀掉数据库的连接,这样有时候session不会断开。容易引起死连接。建议通过sid查到操作系统的spid,使用ps –ef|grep spidno的方式确认spid不是ORACLE的后台进程。使用操作系统的kill -9命令杀掉连接 ) alter system kill session 'SID,SERIAL#'; 注意: 上例中SID为1到10(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。
   
     
     
   


检查数据库当日备份的有效性

   
     
     
   

对RMAN备份方式: 检查第三方备份工具的备份日志以确定备份是否成功
   
     
     
   
对EXPORT备份方式: 检查exp日志文件以确定备份是否成功
   
     
     
   
对其他备份方式: 检查相应的日志文件


检查数据文件的状态

   
     
     
   

    
      
      
    
SQL>select file_name,status from dba_data_files; SQL>select count(*) from dba_data_files; SQL>select count(*) from dba_data_files where status='AVAILABLE';
   
     
     
   
如果数据文件的STATUS列不是AVAILABLE,那么就要采取相应的措施,如对该数据文件进行恢复操作,或重建该数据文件所在的表空间。
   
     
     
   


检查表空间的使用情况

   
     
     
   

    
      
      
    
select f.tablespace_name, a.total, f.free, round((f.free/a.total)*100) "% Free" from (select tablespace_name, sum(bytes/(1024*1024)) total from dba_data_files group by tablespace_name) a, (select tablespace_name, round(sum(bytes/(1024*1024))) free from dba_free_space group by tablespace_name) f WHERE a.tablespace_name = f.tablespace_name(+) order by "% Free"
   
     
     
   


检查数据库的等待事件

   
     
     
   

    
      
      
    
set pages 80 set lines 120 col event for a40 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%'
   
     
     
   

   
     
     
   
如果数据库长时间持续出现大量像latch free,enqueue,buffer busy waits,db file sequential read,db file scattered read等等待事件时,需要对其进行分析,可能存在问题的语句。

   
     
     
   
锁表问题的处理
   
     
     
   
查询目前锁对象信息,更细节的锁处理方式请查看工作中长用脚本
   
     
     
   

    
      
      
    
col sid for 999999 col username for a10 col schemaname for a10 col osuser for a16 col machine for a16 col terminal for a20 col owner for a10 col object_name for a30 col object_type for a10 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#';
   
     
     
   
检查数据库性能,记录数据库的cpu使用、IO、buffer命中率等等
   
     
     
   
使用vmstat,iostat,sar,top等命令进行信息收集并检查这些信息,判断资源使
用情况。
   
     
     
   
查看是否有僵死进程
   
     
     
   
select spid from v$process where addr not in (select paddr from v$session);
   
     
     
   
有些僵尸进程有阻塞其他业务的。

微思双十一已开启
如果你也想成为一个称职的DBA
这个课程不容错过

数据库DBA一天的日常

部分上课内容

数据库DBA一天的日常
数据库DBA一天的日常
数据库DBA一天的日常

讲师资质
数据库DBA一天的日常

双十一特惠

即日起在腾讯课堂报名
可领取500元现金券
全年最低价
学到就赚到
快扫码去领券吧~
数据库DBA一天的日常






end



作者: 胡.杰 
来源:https://www.cnblogs.com/jackhub/p/3349922.html


年度热文














系统集成/认证培训

买设备,找我们

IT维保,找我们

IT培训,找我们

以上是关于数据库DBA一天的日常的主要内容,如果未能解决你的问题,请参考以下文章

DBA日常工作

第一天的学习内容

DBA日常管理之-查看日志

迷惑一天的代码

DBA日常 | 数据库的日常管理经验浅谈

2018 DBA人的日常