暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

在Oracle中,如何通过SQL语句查询数据库服务器主机的CPU和内存情况以及各个快照期间?

DB宝 2017-06-21
1161


Q
题目如下所示:

在Oracle中,如何通过SQL语句查询数据库服务器主机的CPU和内存情况以及各个快照期间的DB TIMEELAPSED_TIME的值


     

A
答案如下所示:


可以通过如下的SQL语句查询:

SELECT SNAP_ID,

       BEGIN_INTERVAL_TIME,

       END_INTERVAL_TIME,

       DB_NAME,

       DBID,

       INSTANCE_NAME,

       INSTANCE_NUMBER,

       STARTUP_TIME,

       RELEASE,

       RAC,

       HOST_NAME,

       PLATFORM_NAME,

       CPUS,

       CORES,

       SOCKETS,

       MEMORY_G,

       ELAPSED_TIME,

       DB_TIME

  FROM (SELECT S.SNAP_ID,

               TO_CHAR(S.BEGIN_INTERVAL_TIME, 'YYYY-MM-DD HH24:MI:SS') BEGIN_INTERVAL_TIME,

               TO_CHAR(S.END_INTERVAL_TIME, 'YYYY-MM-DD HH24:MI:SS') END_INTERVAL_TIME,

               DB_NAME,

               S.DBID,

               INSTANCE_NAME,

               S.INSTANCE_NUMBER,

               TO_CHAR(S.STARTUP_TIME, 'YYYY-MM-DD hh24:MI:SS') STARTUP_TIME,

               VERSION RELEASE,

               PARALLEL RAC,

               HOST_NAME,

               DI.PLATFORM_NAME,

               V.CPUS CPUS,

               V.CORES,

               V.SOCKETS,

               V.MEMORY MEMORY_G,

               ROUND(EXTRACT(DAY FROM

                             S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) * 1440 +

                     EXTRACT(HOUR FROM

                             S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) * 60 +

                     EXTRACT(MINUTE FROM

                             S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) +

                     EXTRACT(SECOND FROM

                             S.END_INTERVAL_TIME - S.BEGIN_INTERVAL_TIME) / 60,

                     2) ELAPSED_TIME,

               ROUND((E.VALUE - B.VALUE) / 1000000 / 60, 2) DB_TIME,

               RANK() OVER(PARTITION BY S.INSTANCE_NUMBER ORDER BY S.SNAP_ID DESC) AS DRANK

          FROM DBA_HIST_SNAPSHOT S

          LEFT JOIN (SELECT SNAP_ID,

                           DBID,

                           INSTANCE_NUMBER,

                           SUM(CPUS) CPUS,

                           SUM(CORES) CORES,

                           SUM(SOCKETS) SOCKETS,

                           SUM(MEMORY) MEMORY

                      FROM (SELECT O.SNAP_ID,

                                   O.DBID,

                                   O.INSTANCE_NUMBER,

                                   DECODE(O.STAT_NAME, 'NUM_CPUS', O.VALUE) CPUS,

                                   DECODE(O.STAT_NAME,

                                          'NUM_CPU_CORES',

                                          O.VALUE) CORES,

                                   DECODE(O.STAT_NAME,

                                          'NUM_CPU_SOCKETS',

                                          O.VALUE) SOCKETS,

                                   DECODE(O.STAT_NAME,

                                          'PHYSICAL_MEMORY_BYTES',

                                          TRUNC(O.VALUE / 1024 / 1024 / 1024,

                                                2)) MEMORY

                              FROM DBA_HIST_OSSTAT O

                             WHERE O.STAT_NAME IN

                                   ('NUM_CPUS',

                                    'NUM_CPU_CORES',

                                    'NUM_CPU_SOCKETS',

                                    'PHYSICAL_MEMORY_BYTES'))

                     GROUP BY SNAP_ID, DBID, INSTANCE_NUMBER) V

            ON (S.SNAP_ID = V.SNAP_ID AND S.DBID = S.DBID AND

               S.INSTANCE_NUMBER = V.INSTANCE_NUMBER)

          LEFT OUTER JOIN DBA_HIST_DATABASE_INSTANCE DI

            ON (S.INSTANCE_NUMBER = DI.INSTANCE_NUMBER AND

               S.STARTUP_TIME = DI.STARTUP_TIME AND S.DBID = DI.DBID)

          LEFT OUTER JOIN DBA_HIST_SYS_TIME_MODEL E

            ON (E.SNAP_ID = S.SNAP_ID AND

               E.INSTANCE_NUMBER = S.INSTANCE_NUMBER AND

               E.STAT_NAME = 'DB time')

          LEFT OUTER JOIN DBA_HIST_SYS_TIME_MODEL B

            ON (B.SNAP_ID + 1 = S.SNAP_ID AND E.STAT_ID = B.STAT_ID AND

               E.INSTANCE_NUMBER = B.INSTANCE_NUMBER))

 WHERE DRANK <= 10

 ORDER BY INSTANCE_NUMBER, SNAP_ID DESC;


DB笔试面试历史连接

http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w

About Me:小麦苗

 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

 版权所有,欢迎分享本文,转载请保留出处

 QQ:646634621  QQ群:230161599

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。

最后修改时间:2020-01-10 21:12:16
文章转载自DB宝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论