Database is being accessed by other users. There are other sessions using the database.

Podczas wykonywania operacji na bazie danych, które wymagają wyłączności dostępu możecie otrzymać komunikat w postaci:

ERROR: database "stara_baza" is being accessed by other users
DETAIL: There are 2 other sessions using the database.

Dla przykładu, taki komunikat możecie zobaczyć przy próbie zmiany nazwy bazy danych

ALTER DATABASE "stara_baza" RENAME TO "nowa_baza";

Błąd jasno mówi nam o tym, że nie możemy zmienić nazwy bazy danych, gdyż istnieją dwie inne sesje połączenia do bazy. To właśnie one blokują nam wykonanie takiej operacji.

W jaki sposób sprawdzć jakie sesje wiszą opiszę w kolejny wpisie, tymczasem zajmiemy się ich rozłączeniem.
Wykorzystamy do tego REVOKE CONNECT którego składnia jest następująca:

REVOKE CONNECT ON DATABASE "nazwa_bazy_danych" FROM PUBLIC;

Dla naszej przykładowej bazy danych o nazwie: stara_baza będzie to zatem:

REVOKE CONNECT ON DATABASE "stara_baza" FROM PUBLIC;

Po wykonaniu powyższego polecenia powinniśmy otrzymać zwrotnie komunikat: REVOKE.

Jeżeli w między czasie nikt się nie dołączy powinniśmy móc teraz wykonać naszą operację, np. zmianę nazwy bazy danych:

ALTER DATABASE "stara_baza" RENAME TO "nowa_baza";

i w przypadku sukcesu otrzymać komunikat: ALTER DATABASE.