Je souhaite supprimer automatiquement les sessions lorsque l'heure de début est supérieure à 1 heure.
Comment puis-je le faire?
3 Réponses :
Comment tuer une session?
SELECT s.SID, s.SERIAL# FROM v$session s WHERE s.LOGON_TIME < (SYSDATE - (1 / 24))
Comment afficher toutes les "anciennes" sessions?
ALTER SYSTEM KILL SESSION 'sid,serial#';
Ne répond pas à l'exigence automatiquement
Vous pouvez simplement définir un délai d'inactivité ou un délai de connexion dans un profil, et attribuer ce profil aux utilisateurs selon les besoins.
Depuis la documentation CREATE PROFILE
:
Si un utilisateur dépasse la limite de ressources de session
CONNECT_TIME
ouIDLE_TIME
, la base de données annule la transaction en cours et met fin à la session. Lorsque le processus utilisateur émet ensuite un appel, la base de données renvoie une erreur.[...]
CONNECT_TIME
: spécifiez le temps total écoulé pour une session, exprimé en minutes.
IDLE_TIME
: spécifiez les périodes autorisées d'inactivité continue pendant une session, exprimées en minutes. Les requêtes de longue durée et autres opérations ne sont pas soumises à cette limite.
Vous configurez un profil et l'attribuez à l'utilisateur en question
voici un exemple:
alter system set resource_limit=true scope=both; create profile restrictive limit connect_time 60 sessions_per_user 2 ldle_time 30; ALTER USER scott PROFILE restrictive;
Désolé, une faute de frappe: l dle_time -> i dle_time
Voulez-vous supprimer toutes les sessions? Ou juste un groupe d'utilisateurs particulier? Par exemple, vous ne voulez probablement pas tuer les sessions connectées en tant que SYS ou agents Oracle similaires?
J'ai un utilisateur qui connecte Apache, et je veux tuer ces sessions quand j'ai travaillé plus d'une heure
Vous devez mentionner si vous utilisez une connexion directe à la base de données ou un pool de connexions . Ceci est très pertinent pour la gestion du délai de connexion.