ORA-00031: Sitzung zum Beenden markiert
In der Oracle-Datenbank unter Windows liegt eine Situation mit gesperrten Tabellen vor. Fragen Sie die Anweisung für gesperrte Tabellen ab:
select object_name, machine, s.sid, s.serial#
from gv$locked_object l, dba_objects o, gv$session s
where l.object_id = o.object_id
and l.session_id = s.sid;
Verwenden Sie alter system kill session 'sid, serial#', um die Sitzung zu beenden
. Wenn die Sitzung aktiv ist, markiert alter system kill session nur die Sitzung als beendet und gibt die von der Sitzung gehaltenen Ressourcen nicht frei, also nach der Ausführung von alter system kill Sitzung Überprüfen Sie abschließend, ob die Sitzung noch vorhanden ist, und warten Sie, bis der PMON-Prozess Ressourcen zurückfordert und Sperren freigibt.
--释放SESSION SQL:
--alter system kill session 'sid, serial#';
alter system kill session '510,24348';
ORA-00031: session marked for kill
Auch das Hinzufügen des unmittelbaren Parameters funktioniert nicht:
SQL> alter system kill session '510,24348' immediate;
alter system kill session '510,24348' immediate
ORA-00031: session marked for kill
Verbesserte Versionsverarbeitung, kann in SQLplus nicht beendet werden, orakill + my_oracle_sid + spid in cmd im Betriebssystem ausführen:
select 'alter system kill session ''' || s.sid || ',' || s.serial# ||
''' immediate;' as killsession,
'orakill my_oracle_sid ' || p.spid || ';' as orakillcmd
from v$process p, v$session s
where p.addr = s.paddr
and s.sid in (select distinct s.sid
from gv$locked_object l, dba_objects o, gv$session s
where l.object_id = o.object_id
and l.session_id = s.sid)
order by s.sid;
Führen Sie es im cmd-Fenster des Betriebssystems mehrmals aus:
C:\Users\User>orakill myorclsid 8844;
Kill of thread id 8844; in instance myorclsid successfully signalled.
C:\Users\User>orakill myorclsid 8844;
Kill of thread id 8844; in instance myorclsid successfully signalled.
Endlich ist es möglich, die Sitzung abzubrechen und einen Neustart der Datenbank zu vermeiden.