RESTRICTED SESSION no banco de dados Oracle
A atividade de colocar o banco de dados em modo restrito pode ser útil em situações de manutenção na base de dados, sem a possibilidade de acesso de novos usuários na instância corrente. Em ambientes single instance, só o usuário que possuir o grant (permissão) de RESTRICTED SESSION consegue efetuar login. No entanto, em ambientes que possuem Oracle RAC (alta disponibilidade), usuários sem este grant conseguirão efetuar login normalmente em um dos nós do Rac, caso uma das instâncias esteja fora do modo restrito.
— Segue consulta na V$INSTANCE, com o intuito de verificar se a instância corrente está ou não em modo restrito. ( Nota-se que a instância está com o campo LOGINS retornando ALLOWED, isto quer dizer que novos usuários neste momento possuem a possibilidade de login nesta instância).
SQL> select logins from v$instance;
LOGINS
----------
ALLOWED
— Para se habilitar o modo restrito na base de dados, basta efetuar o comando abaixo:
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
— Após colocar o banco de dados em modo restrito, nota-se que o campo LOGINS na V$INSTANCE reporta RESTRICTED em alusão de o fato de a instância não possibilitar novas conexões para usuários sem grant de RESTRICTED SESSION.
SQL> select logins from v$instance;
LOGINS
----------
RESTRICTED
— Segue abaixo a representação de um usuário que tenta efetuar a conexão e não possui o grant de RESTRICTED SESSION:
$ sqlplus /nolog
SQL*Plus: Release 11.2.0.3.0 Production on Sat Nov 16 01:13:19 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
SQL> conn <Username>/<Password>@<serviceID>
ERROR:
ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege
SQL> exit
— Todavia, com o usuário SYS, segue a representação de retirar a instância de modo restrito (“Disable Restrict Session”, possibilitando todos que possuem o grant de Create Session a efetuar conexão) e, posteriormente, a conexão com um usuário sem o grant de RESTRICTED SESSION novamente:
$ sqlplus /nolog
SQL*Plus: Release 11.2.0.3.0 Production on Sat Nov 16 01:17:27 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected.
SQL> select logins from v$instance;
LOGINS
----------
RESTRICTED
SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;
System altered.
SQL> select logins from v$instance;
LOGINS
----------
ALLOWED
SQL> exit
-- Conexão com um usuário sem o grant de RESTRICTED SESSION novamente:
$ sqlplus /nolog
SQL*Plus: Release 11.2.0.3.0 Production on Sat Nov 16 01:18:02 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
SQL> conn <Username>/<Password>@<serviceID>
Connected.
SQL>
Espero ter ajudado,
Abraços.