Usuwanie podłączonego użytkownika ze schematu bazy danych Oracle 10g
Czy istnieje lepszy sposób na silne odłączenie wszystkich użytkowników od schematu bazy danych Oracle 10g niż ponowne uruchamianie usług bazodanowych Oracle?
Mamy kilku programistów używających SQL Developer łączących się z tym samym schematem na jednym serwerze Oracle 10g. Problem polega na tym, że gdy chcemy upuścić schemat, aby go odbudować, nieuchronnie ktoś jest nadal podłączony i nie możemy upuścić schematu bazy danych lub użytkownika, gdy ktoś jest nadal podłączony.
Z tego samego powodu, nie chcesz rzucić wszystkie połączenia do innych schematów, ponieważ inne osoby mogą być nadal podłączone i testowanie z tych schematów.
Ktoś zna jakiś szybki sposób na rozwiązanie tego problemu?
7 answers
Aby znaleźć sesje, jako dba użyj
select sid,serial# from v$session where username = '<your_schema>'
Jeśli chcesz mieć pewność, że tylko sesje, które używają SQL Developer, możesz dodać and program = 'SQL Developer'
. Jeśli chcesz zabić tylko sesje należące do konkretnego dewelopera, możesz dodać ograniczenie na os_user
Następnie zabij ich
alter system kill session '<sid>,<serial#>'
(np.
alter system kill session '39,1232'
)
Zapytaniem, które tworzy gotowe kill-statements może być
select 'alter system kill session ''' || sid || ',' || serial# || ''';' from v$session where username = '<your_schema>'
To będzie zwraca jedną instrukcję kill na sesję dla tego użytkownika-coś w stylu:
alter system kill session '375,64855';
alter system kill session '346,53146';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 19:33:17
Znajdź istniejące sesje do DB używając tego zapytania:
SELECT s.inst_id,
s.sid,
s.serial#,
p.spid,
s.username,
s.program
FROM gv$session s
JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id
WHERE s.type != 'BACKGROUND';
Zobaczysz coś takiego jak poniżej.
Następnie uruchom poniższe zapytanie z wartościami wyodrębnionymi z powyższych wyników.
ALTER SYSTEM KILL SESSION '<put above s.sid here>,<put above s.serial# here>';
Ex: ALTER SYSTEM KILL SESSION '93,943';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-20 07:59:38
Moja propozycja to taki prosty anonimowy blok:
DECLARE
lc_username VARCHAR2 (32) := 'your user name here';
BEGIN
FOR ln_cur IN (SELECT sid, serial# FROM v$session WHERE username = lc_username)
LOOP
EXECUTE IMMEDIATE ('ALTER SYSTEM KILL SESSION ''' || ln_cur.sid || ',' || ln_cur.serial# || ''' IMMEDIATE');
END LOOP;
END;
/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-10 13:29:42
Upewnij się, że zmienisz system i włączysz ograniczoną sesję, zanim je zabijesz, albo szybko zalogują się z powrotem do bazy danych, zanim skończysz pracę.
Wystarczy użyć SQL:
disconnect;
conn tiger/scott as sysdba;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-23 22:05:15
Tylko moje dwa grosze : najlepszym sposobem (ale prawdopodobnie nie najszybszym w krótkiej perspektywie) byłoby prawdopodobnie, aby każdy programista pracował nad własną instancją bazy danych (zobacz rule #1 for database work ).
Instalacja Oracle na stacji deweloperskiej stała się nie do pomyślenia od Oracle Database 10g Express Edition.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-19 15:50:53
Próbowałeś Alter SYSTEM KILL SESSION? Pobierz SID i SERIAL# z V$SESSION dla każdej sesji w podanym schemacie, następnie wykonaj
ALTER SCHEMA KILL SESSION sid,serial#;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-25 18:40:12