Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Die Anmeldung an einer Oracle Datenbank für normale Anwender verhindern / einschränken - quiesce und restrict Status
schon immer, getestet mit 12c
Gelegentlich ergeben sich Situationen in denen sich nichts weiters in der Datenbank tun soll.
Zum Beispiel bein Einspielen von neuen PL/SQL Packages oder ähnlichen Strukturänderungen, die andere User blockieren können.
Läßt sich die DB neu starten, können alle neuen Anmeldungen vorab mit der „restricted“ Option auf User mit der DBA Rolle beschränkt werden.
Soll nur die DB kurz „eingefroren“ werden, kann mit „quiesce“ gearbeitet werden, die Usersession können auf der DB angemeldet bleiben, stören aber nicht zum Beispiel beim Deployment eines neuen PL/SQL Packages.
Nur noch Sessions mit DBA Rechte dürfen aktiv sein - Der Restricted Mode
Eine Datenbank für normale User einfrieren, alle Session verbleiben, können aber keine neues SQL ausführen, alle neue Anmeldungen warten:
ALTER system quiesce restricted; #Status pürfen und warten bis alle SESSION wirklich warten! SELECT inst_id, ACTIVE_STATE FROM GV$INSTANCE / # NORMAL: Normal unquiesced state. # QUIESCING: Being quiesced, but SOME non-DBA sessions are still active. # QUIESCED: Quiesced; no non-DBA sessions are active OR allowed. #prüfen wer verhindert das die DB IN QUIESCED Mode sich versetzen kann: # SELECT bl.sid, USER, osuser, TYPE, program FROM v$blocking_quiesce bl , v$session se WHERE bl.sid = se.sid; #wieder aufheben ALTER system unquiesce;
Allerdings kann es etwas dauern bis wirklich alle aktiven Sessions „warten“.
siehe auch ⇒ Quiescing a Database 12c
Datenbank beim Start einschränken
Beim Start der Datenbank können sich nur User mit DBA rechten (oder dem restict Session recht) anmelden
Engeschränkt starten mit:
STARTUP RESTRICT #Later allow normal connections ALTER SYSTEM DISABLE RESTRICTED SESSION;
Aber! Nur für Single Instances ! Im Cluster Modus nicht möglich.