Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 4.171 pregleda

Najnovija ↓

sql naredba za prekid svih session_a 04.10.2005. u 17:54 · pre 256 meseci #1
Zna li neko sql,plsql ili u kojem se paketu nalazi naredba s kojom mogu prekinuti sve session_e,odnosno prikacene usere.
Da nebi npr.kroz oem isao i prekidao jednog po jednog dali postoji sql kod s kojim to mogu odraditi za sve.
Vrtio sam po dokumentaciji,pregledavao sistemske pakete npr.dba_session ali nisam uspeo naci.

Re: sql naredba za prekid svih session_a 04.10.2005. u 18:52 · pre 256 meseci
izmenjeno 2 puta, poslednji put Raspucin 04.10.2005. u 19:02
  1. Raspucin04.10.2005. u 19:02zapis iz teksta poruke
  2. Raspucin04.10.2005. u 19:01zapis iz teksta poruke
#2
Citat:
owner: Zna li neko sql,plsql ili u kojem se paketu nalazi naredba s kojom mogu prekinuti sve session_e,odnosno prikacene usere.


Tako nesto za sada jos ne postoji. Mozes da uradis sledece:

Code:

PLS@Raspucin>select sid, serial#, username, username from v$session;

       SID    SERIAL# USERNAME                       USERNAME
---------- ---------- ------------------------------ ------------------------------
         1          1
         2          1
         3          1
         4          3
         5          1
         6          1
         7      38761
         8      38757
         9      38757
        10      38757
        11      15885 LJILJA                         LJILJA
        12      44777 LJILJA                         LJILJA
        14       4982 LJILJA                         LJILJA
        15      50326 LJILJA                         LJILJA
        17      54787 LJILJA                         LJILJA

15 rows selected.


sesije ubijas na ovaj nacin:

ALTER SYSTEM KILL SESSION 'SID,SERIAL#';

E dalje se sam snadji, napisi neku PL/SQL proceduru, koja ce dinamicki da izvrsava ovu naredbu, samo pazi koje procese ubijas. Procesi bez username-a su sistemski, pa lako mozes i bazu da ubijes.... Jer sam Bog zna kako ce baza da se ponasa kada je osakatis tako sto joj ubijes sesije nekim nasumicnim redosledom.

Code:


begin    
   for i in (select sid,serial# from v$session where username is not null) loop   
        execute immediate 'alter system kill session ' ||''''|| i.sid ||','|| i.serial# ||''' immediate';
   end loop;
end;



Obicno se praktikuje da se korisnicima cija aplikacija koristi bazu urade nesto pa im se onda saopsti da im je sesija ubijena nego da se radi ovako. Kada korisnici dobiju poruku

ORA-00028: your session has been killed

to obicno vide kao bug....
Re: sql naredba za prekid svih session_a 04.10.2005. u 19:32 · pre 256 meseci #3
Mozda je bolje da umjesto KILL SESSION koristi DISCONNECT SESSION...
Npr.
Code:
ALTER SYSTEM DISCONNECT SESSION '13, 8' POST_TRANSACTION;

Tako ce session biti killnut tek nakon sto se zavrsi trenutna transakcija.

Takodje, ako ne zeli da mu se useri opet spajaju, moze da prvo otkuca:
Code:
ALTER SYSTEM ENABLE RESTRICTED SESSION
, pa tek onda da pobije sessione i na kraju opet da kuca
Code:
ALTER SYSTEM DISABLE RESTRICTED SESSION
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme