Linux平台生成AWR报告(通过SQL方式)

背景:


        数据库使用Oracle一体机,DBA权限收回,想登录服务器跑个awr报告没权限。故采用该方法。

大体思路:


        1、查询当前数据库快照的历史记录(需要记录DBID)。

        2、查询会显示过去7天内每个快照间隔的"DB TIME"的差异(SNAP_ID)。

        3、根据SQL生成AWR报告。

        4、转换成html格式的,便于分析。

具体步骤:

        1、 列出数据库的历史快照信息,包括每个快照的ID、数据库ID、实例编号以及快照的开始和结束时间,并且结果会按照快照开始的时间从最新到最旧排列。

SELECT SNAP_ID,
       DBID,
       INSTANCE_NUMBER,
       BEGIN_INTERVAL_TIME,
       END_INTERVAL_TIME
  FROM DBA_HIST_SNAPSHOT
 ORDER BY BEGIN_INTERVAL_TIME DESC;

  • SNAP_ID:这是快照的唯一标识符,用于标识特定的时间点。
  • DBID:这是数据库的唯一标识符,用于标识特定的数据库。
  • INSTANCE_NUMBER:这是实例的编号,对于具有多个实例的Oracle RAC(Real Application Clusters)环境来说,每个实例都有自己的编号。
  • BEGIN_INTERVAL_TIME:这是快照开始的时间。
  • END_INTERVAL_TIME:这是快照结束的时间。

2、查询过去7天内每个快照间隔的"DB TIME"的差异,即数据库在处理用户请求和数据库操作上花费的时间。 

SELECT *
  FROM (SELECT A.INSTANCE_NUMBER,
               A.SNAP_ID,
               B.BEGIN_INTERVAL_TIME BEGIN_TIME,
               B.END_INTERVAL_TIME END_TIME,
               ROUND(VALUE - LAG(VALUE, 1, '0')
                     OVER(ORDER BY A.INSTANCE_NUMBER, A.SNAP_ID)) "DB TIME"
          FROM (SELECT B.SNAP_ID,
                       INSTANCE_NUMBER,
                       SUM(VALUE) / 1000000 / 60 VALUE
                  FROM DBA_HIST_SYS_TIME_MODEL B
                 WHERE B.DBID = (SELECT DBID FROM V$DATABASE)
                   AND UPPER(B.STAT_NAME) IN UPPER(('DB TIME'))
                 GROUP BY B.SNAP_ID, INSTANCE_NUMBER) A,
               DBA_HIST_SNAPSHOT B
         WHERE A.SNAP_ID = B.SNAP_ID
           AND B.DBID = (SELECT DBID FROM V$DATABASE)
           AND B.INSTANCE_NUMBER = A.INSTANCE_NUMBER)
 WHERE BEGIN_TIME >= SYSDATE - 7
 ORDER BY BEGIN_TIME DESC;

3、 使用Oracle数据库的DBMS_WORKLOAD_REPOSITORY包来生成一个全局AWR(Automatic Workload Repository)报告的HTML格式输出。

SELECT OUTPUT
  FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_GLOBAL_REPORT_HTML(L_DBID     => 1215096737,  --实例ID
                                                             L_INST_NUM => '1,2',  --根据实际需要填写实例ID: 1 2 1,2
                                                             L_BID      => 37200,  --开始时间
                                                             L_EID      => 37202,  --结束时间
                                                             L_OPTIONS  => 0));     --指定报告的选项,这里设置为0,通常表示默认选项

4、复制到记事本,保存为html格式的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值