常用SQL

 

select TO_TIMESTAMP('2015-10-21 23:30:45','yyyy-mm-dd hh24:mi:ss') from dummy;

 

1、正在执行的sql(推测)

SELECT C.CONNECTION_ID, PS.STATEMENT_STRING
FROM M_CONNECTIONS C JOIN M_PREPARED_STATEMENTS PS
ON C.CONNECTION_ID = PS.CONNECTION_ID AND C.CURRENT_STATEMENT_ID = PS.STATEMENT_ID
WHERE C.CONNECTION_STATUS = 'RUNNING'
AND C.CONNECTION_TYPE = 'Remote'

2、杀会话

    ALTER SYSTEM DISCONNECT SESSION  ‘<CONNECTION_ID >‘

   ALTER SYSTEM DISCONNECT SESSION '300736'
   --ALTER SYSTEM CANCEL SESSION '300735'
   --ALTER SYSTEM CANCEL WORK IN SESSION  '300736'
3、hana studio sessions里的语句

SELECT TOP 1001 "Server Host",
       "Server Port",
       "Logical Connection ID",
       "Created At",
       "Seconds Since Last Statement Start",
       "Connection status",
       "Transaction status",
       "Auto commit",
       "Blocked by Connection ID",
       "Blocks No. of Transactions",
       "Application",
       "Application Source",
       "Application Version",
       "Application User",
       "Database User",
       "Client Host",
       "Client IP",
       "Client Process ID",
       "Current Statement Hash",
       "Current Statement",
       "Current Operator",
       "Last Executed Statement",
       "No. of Queries",
       "Average No. of Records Fetched",
       "Average Query Time in [ms]",
       "No. of DML Statements",
       "Average Time in [ms] per DML Statement",
       "Average Wait Time [ms] per DML Statement",
       "No. of DDL && Command Statements",
       "Average DDL && Command Time in [ms]",
       "Average DDL && Command Wait in [ms]",
       "Average No. of Records Affected by DML && DDL Statements",
       "Network Traffic Server to Client in [MB]",
       "Network Traffic Client to Server in [MB]"
  FROM (SELECT C.HOST AS "Server Host",
               C.PORT AS "Server Port",
               C.LOGICAL_CONNECTION_ID AS "Logical Connection ID",
               C.START_TIME AS "Created At",
               SECONDS_BETWEEN(STAT.LAST_EXECUTED_TIME, CURRENT_TIMESTAMP) AS "Seconds Since Last Statement Start",
               IFNULL(CR.CONNECTION_STATUS, 'IDLE') AS "Connection status",
               IFNULL(TX_STATUS.TRANSACTION_STATUS, 'INACTIVE') AS "Transaction status",
               C.AUTO_COMMIT AS "Auto commit",
               (SELECT IFNULL(TO_CHAR(MAX(C3.LOGICAL_CONNECTION_ID)),
                              '<not blocked>')
                  FROM M_BLOCKED_TRANSACTIONS BT2
                  JOIN M_TRANSACTIONS T2
                    ON BT2.BLOCKED_UPDATE_TRANSACTION_ID =
                       T2.UPDATE_TRANSACTION_ID
                  JOIN M_CONNECTIONS C2
                    ON T2.HOST = C2.HOST
                   AND T2.PORT = C2.PORT
                   AND T2.TRANSACTION_ID = C2.TRANSACTION_ID
                   AND T2.TRANSACTION_TYPE = 'USER TRANSACTION'
                  JOIN M_TRANSACTIONS T3
                    ON T3.UPDATE_TRANSACTION_ID =
                       BT2.LOCK_OWNER_UPDATE_TRANSACTION_ID
                   AND T3.TRANSACTION_TYPE = 'USER TRANSACTION'
                  JOIN M_CONNECTIONS C3
                    ON T3.HOST = C3.HOST
                   AND T3.PORT = C3.PORT
                   AND T3.TRANSACTION_ID = C3.TRANSACTION_ID
                 WHERE C2.LOGICAL_CONNECTION_ID = C.LOGICAL_CONNECTION_ID) AS "Blocked by Connection ID",
               (SELECT COUNT(DISTINCT BT2.BLOCKED_UPDATE_TRANSACTION_ID)
                  FROM M_BLOCKED_TRANSACTIONS BT2
                  JOIN M_TRANSACTIONS T2
                    ON BT2.LOCK_OWNER_UPDATE_TRANSACTION_ID =
                       T2.UPDATE_TRANSACTION_ID
                  JOIN M_CONNECTIONS C2
                    ON T2.HOST = C2.HOST
                   AND T2.PORT = C2.PORT
                   AND T2.TRANSACTION_ID = C2.TRANSACTION_ID
                   AND T2.TRANSACTION_TYPE = 'USER TRANSACTION'
                 WHERE C2.LOGICAL_CONNECTION_ID = C.LOGICAL_CONNECTION_ID) AS "Blocks No. of Transactions",
               SC1.VALUE AS "Application",
               SC2.VALUE AS "Application Source",
               SC3.VALUE AS "Application Version",
               SC4.VALUE AS "Application User",
               C.USER_NAME AS "Database User",
               C.CLIENT_HOST AS "Client Host",
               C.CLIENT_IP AS "Client IP",
               C.CLIENT_PID AS "Client Process ID",
               SPC.STATEMENT_HASH AS "Current Statement Hash",
               PS.STATEMENT_STRING AS "Current Statement",
               CR.CURRENT_OPERATOR_NAME AS "Current Operator",
               '' "Last Executed Statement",
               STAT.SELECT_EXECUTION_COUNT AS "No. of Queries",
               STAT.AVG_FETCHED_RECORDS AS "Average No. of Records Fetched",
               STAT.SELECT_AVG_EXECUTION_TIME AS "Average Query Time in [ms]",
               STAT.UPDATE_EXECUTION_COUNT AS "No. of DML Statements",
               STAT.UPDATE_AVG_EXECUTION_TIME AS "Average Time in [ms] per DML Statement",
               STAT.UPDATE_AVG_LOCK_WAIT_TIME AS "Average Wait Time [ms] per DML Statement",
               STAT.OTHERS_EXECUTION_COUNT AS "No. of DDL && Command Statements",
               STAT.OTHERS_AVG_EXECUTION_TIME AS "Average DDL && Command Time in [ms]",
               STAT.OTHERS_AVG_LOCK_WAIT_TIME AS "Average DDL && Command Wait in [ms]",
               STAT.AVG_AFFECTED_RECORDS AS "Average No. of Records Affected by DML && DDL Statements",
               ROUND(STAT.SENT_MESSAGE_SIZE / 1024 / 1024, 2) AS "Network Traffic Server to Client in [MB]",
               ROUND(STAT.RECEIVED_MESSAGE_SIZE / 1024 / 1024, 2) AS "Network Traffic Client to Server in [MB]"
          FROM M_CONNECTIONS C
          LEFT OUTER JOIN M_SESSION_CONTEXT SC1
            ON SC1.HOST = C.HOST
           AND SC1.PORT = C.PORT
           AND SC1.CONNECTION_ID = C.CONNECTION_ID
           AND SC1.KEY = 'APPLICATION'
          LEFT OUTER JOIN M_SESSION_CONTEXT SC2
            ON SC2.HOST = C.HOST
           AND SC2.PORT = C.PORT
           AND SC2.CONNECTION_ID = C.CONNECTION_ID
           AND SC2.KEY = 'APPLICATIONSOURCE'
          LEFT OUTER JOIN M_SESSION_CONTEXT SC3
            ON SC3.HOST = C.HOST
           AND SC3.PORT = C.PORT
           AND SC3.CONNECTION_ID = C.CONNECTION_ID
           AND SC3.KEY = 'APPLICATIONVERSION'
          LEFT OUTER JOIN M_SESSION_CONTEXT SC4
            ON SC4.HOST = C.HOST
           AND SC4.PORT = C.PORT
           AND SC4.CONNECTION_ID = C.CONNECTION_ID
           AND SC4.KEY = 'APPLICATIONUSER'
          LEFT OUTER JOIN M_CONNECTIONS CR
            ON CR.LOGICAL_CONNECTION_ID = C.LOGICAL_CONNECTION_ID
           AND CR.CONNECTION_STATUS != 'IDLE'
          LEFT OUTER JOIN M_ACTIVE_STATEMENTS PS
            ON CR.HOST = PS.HOST
           AND CR.PORT = PS.PORT
           AND CR.CONNECTION_ID = PS.CONNECTION_ID
           AND CR.CURRENT_STATEMENT_ID = PS.STATEMENT_ID
          LEFT OUTER JOIN M_SQL_PLAN_CACHE SPC
            ON SPC.HOST = PS.HOST
           AND SPC.PORT = PS.PORT
           AND SPC.PLAN_ID = PS.PLAN_ID
          JOIN (SELECT C1.LOGICAL_CONNECTION_ID,
                      MAX(ST.LAST_EXECUTED_TIME) AS LAST_EXECUTED_TIME,
                      SUM(C1.SENT_MESSAGE_SIZE) AS SENT_MESSAGE_SIZE,
                      SUM(C1.RECEIVED_MESSAGE_SIZE) AS RECEIVED_MESSAGE_SIZE,
                      SUM(ST.SELECT_EXECUTION_COUNT) AS SELECT_EXECUTION_COUNT,
                      CASE SUM(ST.SELECT_EXECUTION_COUNT)
                        WHEN 0 THEN
                         0
                        ELSE
                         ROUND(SUM(C1.FETCHED_RECORD_COUNT) /
                               SUM(ST.SELECT_EXECUTION_COUNT),
                               2)
                      END AS AVG_FETCHED_RECORDS,
                      ROUND(TO_DECIMAL(AVG(ST.SELECT_AVG_EXECUTION_TIME) / 1000),
                            2) AS SELECT_AVG_EXECUTION_TIME,
                      SUM(ST.UPDATE_COUNT) AS UPDATE_EXECUTION_COUNT,
                      ROUND(TO_DECIMAL(AVG(ST.UPDATE_AVG_EXECUTION_TIME) / 1000),
                            2) AS UPDATE_AVG_EXECUTION_TIME,
                      ROUND(TO_DECIMAL(AVG(ST.UPDATE_AVG_LOCK_WAIT_TIME) / 1000),
                            2) AS UPDATE_AVG_LOCK_WAIT_TIME,
                      SUM(ST.OTHERS_COUNT) AS OTHERS_EXECUTION_COUNT,
                      ROUND(TO_DECIMAL(AVG(ST.OTHERS_AVG_EXECUTION_TIME) / 1000),
                            2) AS OTHERS_AVG_EXECUTION_TIME,
                      ROUND(TO_DECIMAL(AVG(ST.OTHERS_AVG_LOCK_WAIT_TIME) / 1000),
                            2) AS OTHERS_AVG_LOCK_WAIT_TIME,
                      CASE SUM(ST.OTHERS_COUNT + ST.UPDATE_COUNT)
                        WHEN 0 THEN
                         0
                        ELSE
                         ROUND(SUM(C1.AFFECTED_RECORD_COUNT) /
                               SUM(ST.OTHERS_COUNT + ST.UPDATE_COUNT),
                               2)
                      END AS AVG_AFFECTED_RECORDS
                 FROM M_CONNECTIONS C1, M_CONNECTION_STATISTICS ST
                WHERE C1.HOST = ST.HOST
                  AND C1.PORT = ST.PORT
                  AND C1.CONNECTION_ID = ST.CONNECTION_ID
                GROUP BY C1.LOGICAL_CONNECTION_ID) STAT
            ON STAT.LOGICAL_CONNECTION_ID = C.LOGICAL_CONNECTION_ID
          LEFT OUTER JOIN (SELECT CT.LOGICAL_CONNECTION_ID,
                                 MAX(TR.TRANSACTION_STATUS) AS TRANSACTION_STATUS
                            FROM M_TRANSACTIONS TR, M_CONNECTIONS CT
                           WHERE TR.HOST = CT.HOST
                             AND TR.PORT = CT.PORT
                             AND TR.CONNECTION_ID = CT.CONNECTION_ID
                             AND TR.TRANSACTION_STATUS != 'INACTIVE'
                           GROUP BY CT.LOGICAL_CONNECTION_ID) TX_STATUS
            ON TX_STATUS.LOGICAL_CONNECTION_ID = C.LOGICAL_CONNECTION_ID
         WHERE C.CONNECTION_TYPE = 'Remote'
           AND C.LOGICAL_CONNECTION_ID = C.CONNECTION_ID
         ORDER BY /* Connection status */ 6 DESC, /* Logical Connection ID */
                  3)
 ORDER BY "Logical Connection ID" ASC

  

  

posted @ 2021-02-04 14:09  可控核聚变  阅读(66)  评论(0)    收藏  举报