Je sais comment savoir quelles questions je rencontrais par Osuser, mais j'ai du mal à trouver la logique de travailler pour développer un champ de temps écoulé et peut utiliser une aide. Voici ce que j'ai regardé:
Créer ou remplacer P>
SUBSTR(FIRST_LOAD_TIME,6,5) || '-' || SUBSTR(FIRST_LOAD_TIME,0,4) || ' ' || SUBSTR(FIRST_LOAD_TIME,12,8) AS LoadTime
4 Réponses :
Le ci-dessous a fonctionné pour moi, vous devez faire quelque chose de similaire basé sur votre nls_date_format code> qui donnera l'heure d'exécution en minutes
Merci! Cela a aidé. Je devais faire un peu de modifications pour le faire fonctionner (voir mon message) mais votre réponse a contribué de manière significative à me procurer la ligne d'arrivée.
Vous pouvez convertir le temps de chargement à une date:
(sysdate - to_date(first_load_time, 'YYYY-MM-DD/HH24:MI:SS'))
Merci Gordon! J'ai pu résoudre le problème. HH24: MI: SS ne reviendrait pas quand je l'ai manifesté pour que j'ai dirigé une session Alter Set Set Nls_Date_Format (voir post) et a été capable de le faire fonctionner.
Merci Psaraj12! Cela a aidé. J'ai couru votre code et cela ne fonctionnait toujours pas, mais le commentaire sur NLS_Date_Format m'a rappelé lorsque je modifiai la dernière fois la session de ne pas induire le temps que j'ai besoin d'obtenir un delta entre les deux. En cours d'exécution (voir ci-dessous) résolue le problème.
ALTER SESSION SET NLS_date_format = 'YYYY-MM-DD HH24:MI:SS';
SELECT
USERNAME
, SCHEMANAME
, OSUSER
, MACHINE
, PROGRAM
, SID
, SERIAL#
, TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS CurrentTime
, FIRST_LOAD_TIME AS LoadTime
, ROUND((TO_DATE(To_char(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') - TO_DATE(REPLACE(FIRST_LOAD_TIME, '/', ' '), 'YYYY-MM-DD HH24:MI:SS'))*24*60,2) RunTime
, SQL_TEXT
FROM v$session a JOIN v$sql b
ON a.SQL_ADDRESS = b.ADDRESS
WHERE a.OSUSER IN ('<User1>', '<User2>','<User3>')
AND a.STATUS = 'ACTIVE'
J'ai trouvé une meilleure façon de le faire qui le présente dans des unités temporelles. Voir ci-dessous:
CREATE OR REPLACE VIEW MONITOR_ACTIVE_QUERIES AS
--ALTER SESSION SET NLS_date_format = 'YYYY-MM-DD HH24:MI:SS';
SELECT
USERNAME
, SCHEMANAME
, OSUSER
, MACHINE
, PROGRAM
, SID
, SERIAL#
, TO_DATE(REPLACE(FIRST_LOAD_TIME, '/', ' '), 'YYYY-MM-DD HH24:MI:SS') AS LoadTime
, lpad(TO_CHAR(TRUNC(24*(sysdate-TO_DATE(REPLACE(FIRST_LOAD_TIME, '/', ' '), 'YYYY-MM-DD HH24:MI:SS'))) ) || TO_CHAR(TRUNC(sysdate) + (sysdate-TO_DATE(REPLACE(FIRST_LOAD_TIME, '/', ' '), 'YYYY-MM-DD HH24:MI:SS')) , ':MI:SS' ) , 10, ' ') AS RunTime
, SQL_TEXT
FROM v$session a JOIN v$sql b
ON a.SQL_ADDRESS = b.ADDRESS
LEFT JOIN (
SELECT SQL_ADDRESS, logon_time
FROM gv$session) s
ON a.SQL_ADDRESS = s.SQL_ADDRESS
WHERE a.OSUSER IN ('<User1>', '<User2>','<User3>')
AND a.STATUS = 'ACTIVE'
ORDER BY RunTime;
--SELECT * FROM MONITOR_ACTIVE_QUERIES;