Páginas

sexta-feira, 5 de outubro de 2012

[Oracle] Autenticação

Conectando-se com um Privilégio Apropriado

Quando conectado a uma instância, os usuários normais não podem nem inicializar nem finalizar um banco de dados, pois este tipo de usuário é autenticado considerando o dicionário de dados. Desta forma, é impossível que este usuário inicialize ou crie um banco de dados, pois o dicionário de dados não está acessível até que o banco de dados tenha sido aberto.
Para inicializar/finalizar um banco de dados é necessário algum tipo de autenticação externa. Esta autenticação pode ser efetuada pelo sistema operacional ou por uma combinação usuário/senha existente no arquivo de senhas (externo).
Quando se conetar à instância, você informa a forma de autenticação apropriada no comando CONNECT através do seu processo de usuário.
As possíveis formas de conexão são:
  • connect user/pass[@db]
  • connect user/pass[@db] as sysdba
  • connect user/pass[@db] as sysoper
  • connect / as sysdba
  • connect / as sysoper
No primeiro exemplo acima é utilizada a autenticação normal via dicionário de dados. Neste caso, o banco de dados precisa estar aberto e o usuário conectado (não importa quem seja) não pode emitir comandos startup ou shutdown.
Nos dois próximos exemplos o Oracle irá até o arquivo de senha para validar a combinação usuário e senha.
A autenticação via sistema operacional está exemplificada nos dois últimos exemplos. Nestes casos, o Oracle irá consultar o SO subjacente para verificar se o usuário que está executando o SQL*Plus é membro do grupo do SO que possui a propriedade do software Oracle. Se a verificação obtiver sucesso o usuário será logado como SYSDBA ou SYSOPER.
Um usuário que se conecte ao banco com qualquer uma das quatro últimas opções poderá emitir comandos startup ou shutdown e conectar-se sem se importar com o estado do banco de dados (aberto ou não, por exemplo).
Observe que nos três primeiros exemplos foi fornecido uma string de conexão com o banco de dados. Isso é necessário se a conexão for realizada através de uma rede. Obviamente, para a autenticação via SO isto não é necessário pois o usuário deve estar logado na máquina onde reside o servidor Oracle.

SYSOPER e SYSDBA

SYSOPER e SYSDBA são privilégios que possuem capacidades especiais e só são habilitados caso o usuário tenha sido autenticado por um método externo. Um usuário conectado com este privilégio pode emitir os seguintes comandos:
  • STARTUP
  • SHUTDOWN
  • ALTER DATABASE [MOUNT | OPEN | CLOSE | DISMOUNT]
  • ALTER [DATABASE | TABLESPACE] [BEGIN | END] BACKUP
  • RECOVER
Já o privilégio SYSDBA permite emitir todos os comandos acima além de adicionar a capacidade de criar um banco de dados, fazer uma recuperação incompleta e criar outros usuários SYSOPER e SYSDBA.

Nenhum comentário:

Postar um comentário