Pular para o conteúdo

Colocando o banco de dados em modo restrito: Vantagens e restrições

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.

Bruno Reis

Bruno Reis

DBA ORACLE  na International Business Machines (IBM), fornecendo suporte para grandes clientes. Técnico em Informática pela Escola Técnica Polivalente de Americana e estudante de Ciência Computação . Mantenedor do Weblog sobre Banco de Dados Oracle e Gerenciamento de Serviços de TI: www.brunors.com

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress