Conectar em Instâncias BLOCKED ou RESTRICTED via listener

Eventualmente você pode se deparar com a seguinte mensagem de erro:

ORA-12528: TNS:listener: all appropriate instances are blocking new connections

Essa mensagem ocorre quando você está tentando conectar via listener em um database que foi colocado no estado RESTRICTED ou que foi iniciado no modo NOMOUNT.

Obs.: Esse erro não ocorre se você conectar localmente ao database usando o protocolo bequeath (BEQ), ou seja, quando conecta usando “# sqlplus /”, pois nessa situação você não está usando o listener. Nas conexões locais o próprio client (sqlplus) realiza um fork no dedicated process do Oracle e estabelece uma comunicação com ele usando 2 pipes, um para escrita e outro para leitura. Essencialmente é a mesma ação que seria realizada pelo listener para atender uma solicitação de conexão.

Esse erro é comum de ocorrer quando está clonando um database devido à necessidade de fazer o RMAN conectar no database “auxiliary” enquanto este está no modo NOMOUNT.

Para resolver esse problema basta alterar o tnsnames.ora e adicionar o parâmetro UR = A na sessão CONNECT_DATA da referida entrada. Segue exemplo abaixo.

DBCLONE1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver.domain.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dbclone1)
      (UR = A)
    )
  )

Esse parâmetro foi criado como resposta à uma solicitação de aprimoramento. Ele serve para permitir que usuários administrativos ou privilegiados possam conectar via listener mesmo quando as conexões de usuários não-privilegiados estão bloqueadas.

Parâmetro disponível a partir da versão 10g.