Sintaxe de Criação de Usuário

Para que se crie um usuário no Oracle usamos a instrução CREATE USER, para isso temos abaixo a sintaxe dessa instrução de forma simplificada.

Listagem 1: Sintaxe dos comandos para criação de usuários


CREATE USER nome_de_usuario IDENTIFIED BY sua_senha
[DEFAULT TABLESPACE nome_da_tablespace]
[TEMPORARY TABLESPACE tablespace_temporaria];
  • nome_de_usuario – É nome do usuário que será criado;
  • sua_senha – É a senha para o usuário que está sendo criado;
  • nome_da_tablespace – É a tablespace padrão onde os objetos do banco de dados são armazenados. Se essa opção for omitida, o banco assume a tablespace SYSTEM padrão;
  • tablespace_temporaria – É a tablespace padrão onde são armazenados os objetos temporários, como tabelas temporárias por exemplo. Se essa opção for omitida um tablaspace temporário TEMP é assumida.

Criando um usuário

Listagem 2: Criando o usuário direto


CREATE USER eliezio identified by 123;

Na lista Listagem 2 foi criado o usuário ELIEZIO com a senha 123, esse usuário foi criado de forma direta, ou seja, foi omitida a DEFAULT TABLESPACE e TEMPORARY TABLESPACE, isso faz com que o Oracle assuma o padrão do banco. Nesse caso assume de forma as tablespace SYSTEM e TEMP. Para checar as tablespaces usadas na criação do usuário, pode ser executada o select aplicado na Listagem 3.

Listagem 3: Verificando as teblespaces


SELECT 
  username,
  default_tablespace,
  temporary_tablespace 
FROM  
  dba_users
WHERE
   username = 'ELIEZIO';

A Figura 1 exibe o resultado do select executado na lista 2.

Verificação das tablespaces do usuário

Figura 1: Verificação das tablespaces do usuário

Listagem 4: Criando o usuário passando de forma explicita as tablespace


CREATE USER devmedia identified by teste
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;

Na Listagem 4 foi criado o usuário DEVMEDIA com a senha teste, essa usuário foi criado passando as tablespaces de forma explicita, tanto para DEFAULT TABLESPACE como para TEMPORARY TABLESPACE.

Listagem 5: Verificando as tablespaces do usuário DEVMEDIA


SELECT 
  username,
  default_tablespace,
  temporary_tablespace 
FROM  
  dba_users
WHERE
   username = 'DEVEDIA';

A figura 2 exibe o resultado do select executado na lista 4.

Tablespaces do usuário DEVMEDIA

Figura 2: Tablespaces do usuário DEVMEDIA

Listagem 6: Verificando as tablespace dos dois usuários


SELECT 
  username,
  default_tablespace,
  temporary_tablespace 
FROM  
  dba_users
WHERE
   username IN('DEVMEDIA','ELIEZIO');

A figura 3 exibe o resultado do select executado na listagem 6.

Tablespaces dos dois usuários

Figura 3: Tablespaces dos dois usuários

Alterando a senha, bloqueando/desbloqueando e excluindo usuários

Em algumas situações é necessária a alteração da senha do usuário e para isso usamos a instrução ALTER USER.

Listagem 7: Alterando a senha do usuário


ALTER USER devmedia identified by 4321;

Na listagem 7 a senha do usuário DEVMEDIA foi alterada de teste para 4321.

Listagem 8: Desbloqueando um usuário


ALTER USER devmedia identified by 4321 account unlock;

Na listagem 8 foram adicionados dois novos comandos, o ACCOUNT UNLOCK que tem a função de desbloquear o usuário, nesse caso não é necessário á troca da senha, a menos que seja necessário.

Listagem 9: Bloqueando um usuário


ALTER USER devmedia account lock;

Na listagem 9 foram usados os comandos, o ACCOUNT LOCK que tem a função de bloquear o usuário, nesse caso não o bloqueio não foi feito pelo oracle e sim feita por um outro usuário do banco.

Por padrão o Oracle bloqueia a o usuário sempre que a senha é errada dez vezes, para que se possa acessar novamente o banco com esse usuário é necessário o desbloqueio. Quando, o usuário tem seu acesso bloqueado o Oracle apresenta o erro ORA-28000. Veja Figura 4.

Erro de usuário bloqueado

Figura 4: Erro de usuário bloqueado

Listagem 10: Excluindo um usuário


DROP USER eliezio;

Na listagem 10 foi usado o comando DROP USER para remover o usuário ELIEZIO.

Privilégios de Sistema

Como foi mencionado já anteriormente neste artigo, são os privilégios que permitem executar instruções DDL, tais como create session,create sequence, create synonym,create table,create view dentre vários outros.

Listagem 11: Liberando Privilégios de Sistema


GRANT create session,create table,create view TO eliezio;

Na listagem 11 estão sendo liberados três privilégios de sistema para o usuário ELIEZIO, nesse momento esse usuário passa a ter privilégio de criar uma sessão de conexão no banco, e ainda pode criar tabelas e views(visões) no banco Oracle. Sempre que for liberar privilégios temos a opção e usar uma cláusula WITH ADMIN OPTION, isso permite que o usuário possa estender seus privilégios para outros usuários.

Listagem 12: WITH ADMIN OPTION


GRANT create session,create table,create view TO eliezio WITH ADMIN OPTION;

Na listagem 12 estão sendo liberados três privilégios de sistema para o usuário ELIEZIO, como foi adicionada a cláusula WITH ADMIN OPTION significa que o usuário ELIEZIO pode estender seus privilégios de sistema para outros usuários.

Privilégios de Objeto

Como foi mencionado já anteriormente neste artigo, são os privilégios que permitem executar instruções DML, tais como select, insert, update, delete dentre vários outros.

Listagem 13: Liberando Privilégios de Objeto


GRANT select,update ON HR.employees TO eliezio;

Na listagem 13 estão sendo liberados privilégios de SELECT e UPDATE na tabela EMPLOYEES que é do esquema HR para o usuário ELIEZIO. Vale ressaltar que sempre que se está liberando privilégios a objetos de outro usuário deve-se sempre colocar o nome do usuário(esquema) antes do nome do objeto, como foi mostrando no exemplo da lista 12 HR.employees.

Listagem 14: WITH GRANT OPTION


GRANT select,update ON HR.employees TO eliezio WITH GRANT OPTION;

Na listagem 14 estão sendo liberados privilégios de SELECT e UPDATE na tabela EMPLOYEES que é do esquema HR para o usuário ELIEZIO, no final foi adicionada a cláusula WITH GRANT OPTION, significando que o usuário ELIEZIO pode estender seus privilégios de objetos para outros usuários.

Listagem 15: Revogando(Removendo) de Sistema


REVOKE create view FROM eliezio;

Na listagem 15 é apresentada a cláusula REVOKE que é responsável por remover um privilégio de um usuário, seja ela um privilégio de sistema ou objeto. Nesse caso está sendo removido o privilégio CREATE VIEW do usuário ELIEZIO que é um privilégio de sistema.

Listagem 16: Revogando(Removendo) de Objetos


REVOKE  insert  ON HR.employees FROM eliezio;

Na listagem 16 é apresentada a cláusula REVOKE que é responsável por remover um privilégio de um usuário, seja ela um privilégio de sistema ou objeto. Nessa caso está sendo removido o privilégio INSERT do usuário ELIEZIO que é um privilégio de obejto

Obrigado e até o próximo artigo.