• 数据库(Oracle)运维工作内容及常用脚本命令


    1、系统资源状况:
    --内存及CPU资源
      --linux,solaris,aix
        vmstat 5
      --说明:
        1)观察空闲内存的数量多少,以及空闲内存量是否稳定,如果不稳定就得想办法来解决,怎么解决还得看具体情况,一般可以通过调整相关内存参数来解决,各种操作系统输出指标、解释及内存调整参数及方法不完全一样;
        2)观察CPU资源利用情况,首先,需要观察CPU上运行的任务数,也就是vmstat输出中位于第一列上的指标,如果该指标持续大于CPU核心数,应该引起注意;如果该指标持续大于CPU核心数的两倍,那么应该引起重视;如果持续为CPU核心数的多倍,系统一般会出现应用可感知的现象,必须立刻想办法解决。当然,在观察该指标的同时,还要结合CPU利用率的指标情况,如:用户使用百分比,系统使用百分比,空闲百分比等指标,如果空闲百分比持续低于20%,应该引起注意;如果持续低于10%,应该引起重视;如果持续为0,系统一般会出现应用可感知的现象,应该立刻想办法解决问题;
        3)CPU用户使用百分比和系统使用百分比的比例,也是应该注意的。一般来说,在一个状态正常的系统上,用户使用百分比应该比系统使用百分比大很多,几倍到十几倍甚至更高,如果系统使用百分比持续接近用户使用百分比,甚至大于用户使用百分比,说明系统的状态是不正常的,可能是硬件或者操作系统问题,也可能是应用问题。有关vmstat输出中各指标及解释等,可以参照本人博客中相关文章:http://blog.csdn.net/tuning_optmization
    --IO状况
      --linux,solaris
        iostat -dx 5
      --aix
        iostat 5
      --说明:
        1)该命令主要用来观察系统存储设备的负载和性能状况,首先,需要观察系统各存储设备的繁忙程度,如果该繁忙程度指标持续超过80%,那么应该引起注意;如果持续超过90%,应该引起重视;如果持续100%,一般会出现应用感知的现象,应该立刻想办法解决问题;
        2)其次,需要注意的是系统上各存储设备的IO能力,就是每秒钟各存储设备的输入、输出的数据量,这个和具体设备的硬件及配置有关,没有一个严格的标准,性能好点的能达到每秒上G,甚至几个G,差的只能到每秒几十兆甚至十几兆;
        3)最后,需要观察存储设备完成每次读写操作耗费的时间,这个也是和具体设备硬件和配置相关的,好的设备可能不到1毫秒,差的能到几十毫秒甚至上百毫秒;iostat的输出,在各种操作系统上的输出和解释也不尽相同,具体可以参照本人博客的相关文章:http://blog.csdn.net/tuning_optmization

    2、磁盘空间及使用率
       df -k
       --说明:
         1)该命令会输出系统上各存储设备的设备名,总空间量,已使用空间量及百分比,可用空间量及百分比,及挂载点名字等,这里存储空间的单位为K;

    3、查看系统日志
       --说明:
         1)需要查看的日志名字及具体位置,和具体的操作系统及你的关注点有关,具体可以参照相关文章;

    4、查看数据库告警日志(alert.log)
       --说明:
         1)不同的数据库版本,该日志的位置也会不同,一般来说,10g的数据库上,在ORACLE_BASE/admin/ORACLE_SID/bdump/alert_ORACLE_SID.log;而11g数据库上,在ORACLE_BASE/diag/rdbms/ORACLE_SID/ORACLE_SID/trace/alert_ORACLE_SID.log,具体可以登录数据库并通过以下命令查询:
    select value from v$diag_info where name ='Diag Trace';
         2)找到alert.log日志后,可以检查是否有异常情况,例如:报错,可疑告警,可疑命令等,如果有这些异常,可以将这些信息报告专业DBA,由专业DBA结合其他信息进一步跟踪、分析,直到找到引起异常的原因,并妥善解决为止;

    5、查看数据库表空间
       --说明:
         1)最重要的是,查看数据库的空间使用率,数据库各表空间的空间使用情况,可以用以下命令查询,如果发现表空间使用率异常,应该引起注意,需进一步调查是正常使用还是异常使用,如果正常使用引起的空间不够,可以考虑对表空间扩容或其他措施解决,否则,就得看看什么问题导致了表空间的异常使用,查明原因后解决;
    Select d.tablespace_name,space "sum_space(m)",blocks sum_blocks,
             space-nvl(free_space,0) "used_space",round((1-nvl(free_space,0)/space)*100,2) "used_rate(%)",
             Free_space "free_space(M)"
        From (select tablespace_name,round(sum(bytes)/(1024*1024),2) space,sum(blocks) blocks
                From dba_data_files
               Group by tablespace_name) d,
             (select tablespace_name,round(sum(bytes)/(1024*1024),2) free_space
                From dba_free_space
               Group by tablespace_name) f
               Where d.tablespace_name=f.tablespace_name(+)
      Union all
      Select d.tablespace_name,space "sum_space(M)",blocks sum_blocks,used_space "used_space(M)",round(nvl(used_space,0)/space*100,2) "used_rate(%)",
             Nvl(free_space,0) "free_space(m)"
        From
             (select tablespace_name,round(sum(bytes)/(1024*1024),2) space,
                     Sum(blocks) blocks
                From dba_temp_files
               Group by tablespace_name) d,
             (select tablespace_name,round(sum(bytes_used)/(1024*1024),2) used_space,round(sum(bytes_free)/(1024*1024),2) free_space
                From v$temp_space_header
               Group by tablespace_name) f
        Where d.tablespace_name=f.tablespace_name(+)
        order by tablespace_name;
         2)其次,要查看表空间的设置及状态,最该注意的是用户数据表空间数据文件的自动扩展设置,一般来说,建议关闭用户数据表空间数据文件的自动扩展,这样,可以避免意外事件的发生,例如:表空间异常使用导致的系统空间耗尽等;关闭数据文件自动增长,当表空间耗尽时,继续使用数据库会在用户端报错,从而可以起到空间告警的作用,表空间数据文件可以查询ba_data_files及dba_temp_files等视图;

    6、查看数据库用户
       --说明:
         1)可以查看dba_users视图来了解数据库用户的情况,如果发现异常信息,及时通知专业DBA等相关人员,并进一步跟踪、分析,直到找到引起异常的原因并妥善解决,例如:发现了新的数据库用户;原来被锁定的用户被打开了;用户默认表空间发生了变化;用户默认资源配置梗概或资源消耗组发生了变化等。

    7、查看用户权限及审计信息
       --说明:
         1)查看用户权限,看用户权限是否发生了变化,是否存在过度授权的情况,查看用户拥有的所有权限可以用以下语句:
    SELECT 'ROLE' TYPE,grantee,granted_role privilege,admin_option ad,
             '/' table_name,'/' column_name,'/' owner
        FROM dba_role_privs
       WHERE grantee = UPPER ('&&1')
      UNION ALL
      SELECT 'SYSTEM' TYPE,grantee,privilege privilege,admin_option ad,
             '/' table_name,'/' column_name,'/' owner
        FROM dba_sys_privs
       WHERE grantee = UPPER ('&&1')
      UNION ALL
      SELECT 'TABLE' TYPE,grantee,privilege privilege,grantable ad,
             table_name,'/' column_name,owner
        FROM dba_tab_privs
       WHERE grantee = UPPER ('&&1')
      UNION ALL
      SELECT 'COLUMN' TYPE,grantee,privilege privilege,
             grantable ad,table_name,column_name,owner
        FROM dba_col_privs
       WHERE grantee = UPPER ('&&1')
       ORDER BY 1;
         2)如果系统启用了审计功能,根据审计具体配置的不同,可以查看相应表、视图、字典或操作系统文件;

    8、查看系统会话数及会话情况
       --说明:
         1)查看系统会话数,可以多次运行以下命令查看,看看总会话数是否稳定,也可以分用户查看会话数,并查看各用户会话数是否稳定,并和之前的数据进行对比,如果发现不稳定或异常,及时通知专业DBA等相关人员,并进一步跟踪、分析,直至找到出现异常的原因并妥善解决,例如:会话的异常增长等。
           select count(*) from v$session;
           select username,count(*) from v$session group by username;
         2)大体查看会话,看看是否有异常信息,如果发现异常情况,及时通知专业DBA等相关人员,并进一步跟踪、分析,直到找到出现异常的原因并妥善解决,例如:异常主机的登录;异常用户的登录等;
           select * from v$session;

    9、查看数据库等待事件
       --说明:
         1)数据库等待事件,可以反映数据库目前的运行状态,可以用以下命令查询,如果发现异常信息,及时通知专业DBA等相关人员,并进一步跟踪、分析,知道找到出现异常的原因并妥善解决,此外,由于该项检查专业性比较强,很多时候,最好由专业DBA或者运维人员与专业DBA一起检查该项目,以便及时准确的发现和解决问题,具体事件及解释可以参照本人博客相关文章:http://blog.csdn.net/tuning_optmization
    Select event "wait event",sum(seconds_in_wait) "waited so far(sec)",
             Count(sid) "num sess waiting"
        From v$session_wait
       Group by event
       order by "waited so far(sec)" desc,"num sess waiting" desc;

    10、检查用户密码情况
        --说明:
          1)检查操作系统用户密码,检查各用户密码是否变化,如果发现异常,及时通知系统管理员等相关人员,并进一步跟踪、分析,直到找到异常的原因并妥善解决,最好定期修改密码;
          2)检查数据库用户密码,检查数据库各用户密码是否变化,如果发现异常,及时通知专业DBA等相关人员,并进一步跟踪、分析,直到找到异常的原因并妥善解决,最好定期修改密码;

    11、定期获取AWR报告并分析
        --说明:
          1)AWR报告是oracle数据库支持的一个功能,可以反映数据库相应时段的负载和性能等状态,系统默认保留一周的快照以生成相应AWR,快照粒度为1小时;
          2)AWR包含信息非常全面,专业DBA可以根据它了解到相应时段数据库乃至服务器的整体状态,分析AWR报告的工作需要专业DBA或者请专业DBA配合来做,一旦发现异常,及时通知相关人员,并进一步跟踪、分析,直到找到异常的原因并妥善解决,获取及分析AWR报告的方法,可以参照本人的博客相关文章:http://blog.csdn.net/tuning_optmization,禁止转载。

  • 相关阅读:
    TypeError: Object of type 'type' is not JSON serializable解决方法
    Python Logging
    Mysql 主从赋值
    (转)Mysql 创建用户 查看权限 授权
    mysql you need (at least one of) the SYSTEM_USER privilege(s) for this operation
    java 多线程 六、线程状态
    java 多线程 五、线程组
    java 多线程 四、线程通信
    java Runtime类 Time类
    java 设计模式 ---- 饿汉 , 懒汉
  • 原文地址:https://www.cnblogs.com/lhdz_bj/p/8675405.html
Copyright © 2020-2023  润新知