Comment puis-je arrêter une instruction SELECT en cours d'exécution en supprimant la session?
La commande me donne continuellement une sortie basée sur l'instruction SELECT, je veux l'arrêter entre les deux.
Cliquez sur le lien ci-dessous pour obtenir plus d'informations sur SQL * Plus. Jeśli tak, najłatwiej plaisante à zrobićctrl+breakwiele, wiele razy, aż się zatrzyma.
Cliquez ici pour en savoir plus sur les actions, sur les performances, les conditions de vie, sur les conditions de vie, sur les coûts et les conditions de travail. Pierwszy z nich będzie prawdopodobnie działał dla ciebie, ale jeśli nie, moesz nadal poruszać się w dół listy.
La plupart des gens ne sont pas amusés, mais leur contenu est élevé.
Zgodnie z odpowiedź ObiWanKenobi i dokumentacja ALTER SESSION
alter system kill session 'sid,serial#';
Aby znaleźć sid
, identificateur de code de lecture serial#
, nombre de numéros de téléphone, adresse mémoire - podsumowane od OracleBase - i znajdź swoją sesję:
select s.sid, s.serial#, p.spid, s.username, s.schemaname
, s.program, s.terminal, s.osuser
from v$session s
join v$process p
on s.paddr = p.addr
where s.type != 'BACKGROUND'
Jeśli używasz RAC , musisz zmienić à nieco, aby wziąć pod uwagę wiele instancji, inst_id
jest tym, Identifiez-vous:
select s.inst_id, s.sid, s.serial#, p.spid, s.username
, s.schemaname, s.program, s.terminal, s.osuser
from Gv$session s
join Gv$process p
on s.paddr = p.addr
and s.inst_id = p.inst_id
where s.type != 'BACKGROUND'
Pour zapytanie zadziałałoby również, jeśli nie korzystasz z RAC.
Jeśli używasz narzędzia takiego jak Développeur PL/SQL, okno sesji również pomoże Ci go znaleźć.
En savoir plus sur le sujet „zabicia” plus tôt dans le monde IMMÉDIATE, sachez que vous avez besoin d'aide, sans délai, sans délai:
alter system kill session 'sid,serial#' immediate;
kill pid
Zakłada się, e używasz Linuksa lub innego wariantu * nix. A SIGTERM to sygnał zakończenia z systemu operacyjnego do określonego procesu z prośbą o zatrzymanie działania. Próbuje zakończyć proces z wdziękiem.
Złe zrozumienie mołe spowodować przerwanie podstawowych procesów systemu operacyjnego, dlatego należy zachować ostrożność podczas pisania.
Możesz znaleźć pid
, identyfikator procesu, uruchamiając następującą kwerendę, która poinformuje cię o użytecznych informacjach Vous serez peut, takich terminal jak, z którego plaisanterie proces uruchamiany, oraz nazwę użytkownika, która aller uruchamia, dzięki czemu możesz upewnić się, że wybrałeś poprawny.
select p.*
from v$process p
left outer join v$session s
on p.addr = s.paddr
where s.sid = ?
and s.serial# = ?
Jeszcze raz, jeśli używasz RAC, musisz zmienić to nieco na:
select p.*
from Gv$process p
left outer join Gv$session s
on p.addr = s.paddr
where s.sid = ?
and s.serial# = ?
Zmiana klauzuli where
na where s.status = 'KILLED'
pomoże ci znaleźć ju zabity proces, który nadal działa.
kill -9 pid
Uywając tego samego pid
pobranego w 2, un SIGKILL jeste sygnałem z systemu operacyjnego do określonego procesu, który powoduje natychmiastowe zakoczenie procesu. Jeszcze raz bądź ostrożny podczas pisania.
To rzadko powinno być konieczne. Jeśli robiłeś DML lub DDL en zatrzyma proces wycofywania i moe utrudnić odzyskać bazę danych do spójnego stanu w przypadku awarii
Wiszystkie pozostałe opcje zabijają wszystkie sesje i skutkują twoją bazą danych - aw przypadku serwera 6 i 7 - stają się niedostępne. Powinny być używane tylko wtedy, gdy plaisante à absolutnie konieczne ...
shutdown immediate
W rzeczywistości jest to politer niż SIGKILL, choisissez une procédure de sauvegarde de la procédure de traitement de la transaction, un processus de négociation. Jest à zawsze dobre faire bycia uprzejmym dla twojej bazy danych.
Wyłączanie bazy danych powinno odbywać si tylko za zgodą DBA, jeśli taką posiadasz. Miło jest również powiedzieć ludziom, la lecture au body z bazy danych.
Zamyka bazę danych, kończy wszystkie sesje i wykonuje rollback
nous wszystkich niezatwierdzonych transakcjach. Moe zająć trochę czasu, jeśli masz duże niezatwierdzone transakcje, które należy wycofać.
shutdown abort
Jest pour w przybliżeniu pour samo co SIGKILL, chociaż ponownie nous procsachs procesach w bazie danych. Pour résumer, je vous en prie, natychmiast zatrzymać wszystko i umrzeć - ciężki wypadek. Kończy wszystkie sesje i nie wycofuje się; z tego powodu może to oznaczać, le baza danych trwa dłużej do startup
ponownie. Pomimo języka zapalającego shutdown abort
nie jest jczystym złem i można va normalnie używać bezpiecznie.
Jak wcześniej informujs ludzi o odpowiednich osobach.
reboot
Autres langues disponibles pour le moment, cliquez sur le lien suivant, sélectionnez le programme, sélectionnez le programme, sélectionnez le programme, sélectionnez le programme, sélectionnez le programme, sélectionnez le programme le plus rapidement possible.
Vous êtes le (la) premier (e) homme (s) élu (s) ... Un peu de temps, rien de plus, rien de neuf, rien de plus, rien de plus. Skończyło się na usuwaniu go ...
C'est ce que j'utilise. Je fais cette première requête pour trouver les sessions et les utilisateurs:
select s.sid, s.serial#, p.spid, s.username, s.schemaname
, s.program, s.terminal, s.osuser
from v$session s
join v$process p
on s.paddr = p.addr
where s.type != 'BACKGROUND';
Cela me permettra de savoir s’il existe plusieurs sessions pour le même utilisateur. Ensuite, je vérifie généralement si une session bloque la base de données.
SELECT SID, SQL_ID, USERNAME, BLOCKING_SESSION, COMMAND, MODULE, STATUS FROM v$session WHERE BLOCKING_SESSION IS NOT NULL;
Ensuite, je lance une instruction ALTER pour tuer une session spécifique dans ce format:
ALTER SYSTEM KILL SESSION 'sid,serial#';
Par exemple:
ALTER SYSTEM KILL SESSION '314, 2643';
Il n'est pas nécessaire de tuer une session entière. Dans Oracle 18c, vous pouvez utiliser ALTER SYSTEM CANCEL
:
Annulation d'une instruction SQL dans une session
Vous pouvez annuler une instruction SQL dans une session à l'aide de l'instruction SQL ALTER SYSTEM CANCEL.
Au lieu de terminer une session, vous pouvez annuler une instruction SQL à charge élevée dans une session. Lorsque vous annulez une instruction DML, elle est annulée.
ALTER SYSTEM CANCEL SQL 'SID, SERIAL[, @INST_ID][, SQL_ID]';
Si @INST_ID n'est pas spécifié, l'ID d'instance de la session en cours est utilisé.
Si SQL_ID n'est pas spécifié, l'instruction SQL en cours d'exécution dans la session spécifiée est terminée.
Pour tuer une session dans Oracle, utilisez la commande ALTER SYSTEM KILL SESSION.
Détails ici: http://www.Oracle-base.com/articles/misc/KillingOracleSessions.php
Oh! Il suffit de lire les commentaires en question, cher je l'ai raté. mais laissez simplement la réponse être ici au cas où il pourrait être utile à une autre personne
J'ai essayé "Ctrl + C" et "Ctrl + Break" aucun n'a fonctionné. J'utilisais SQL Plus fourni avec Oracle Client 10.2.0.1.0. SQL Plus est généralement utilisé comme client pour la connexion à Oracle DB. J'ai utilisé l'option Annuler, sous le menu Fichier et cela a arrêté l'exécution!
Une fois que vous avez cliqué sur Fichier, attendez quelques minutes, puis la commande de sélection s’arrête et le menu apparaît, cliquez sur Annuler.