Pessoal,

Vejo sempre uma confusão no que envolve users e schemas (usuários e esquemas), então resolvi escrever um pouco e tentar esclarecer os conceitos envolvidos sobre eles.

Segundo John Watson e Roopesh Ramklass (OCP’s), para o ambiente Oracle um usuário é uma pessoa que pode se conectar ao banco de dados. Ele terá um nome de usuário e uma senha. Um esquema é um “contêiner” para os objetos de um usuário. Quando um usuário é criado, seu esquema é criado também (só que vazio). Alguns esquemas estarão sempre vazios: o usuário nunca criará quaisquer objetos porque não precisará e pode ser configurado para que eles não tenham permissão para tal ação. Nesse caso, os usuários deverão ter permissão para acessar objetos de outros esquemas, de propriedades de outros usuários. Outros usuários serão o oposto disso: eles terão muitos objetos mas nunca farão logon realmente no banco de dados. Os objetos de esquema são objetos com um proprietário. O identificador exclusivo de um objeto de um tipo específico não é seu nome, é o seu nome prefixado por com o nome do esquema ao qual ele pertence.

Ex.: WORKSPACE.TBL_TEST – indica uma tabela chamada TBL_TEST que é de propriedade do usuário WORKSPACE.

Poderia existir outra tabela: HOUSEWORK.TBL_TEST, que poderia ser uma tabela de estrutura e/ou conteúdo diferente da anterior, de propriedade do usuário HOUSEWORK e residindo em seu esquema.

Uma quantidade de usuários (e seus esquemas) é criada automaticamente no momento de criação do banco. Destacam-se entre eles o SYS e o SYSTEM. O usuário SYS possui o dicionário de dados (que é um conjunto de tabelas que define o banco de dados e seu conteúdo), possui também uma série de pacotes de PL/SQL (utilizados para administrar e utilizar o banco). O esquema SYSTEM vários objetos adicionais que são utilizados para administração e monitoramento da base de dados. Esses dois esquemas não devem ser alterados através de comandos DML para que não ocorram problemas dados corrompidos por exemplo.

É uma boa prática, e na política da empresa que trabalho nós utilizamos, que sejam criados usuários que terão seus esquemas com tabelas e demais objetos para o armazenamento dos dados, e usuários (com esquemas vazios) para acessar os dados via aplicação.

Exemplo:
 - Usuário com esquema populado: WORKSPACE
 - Usuário de aplicação: USER_WORKSPACE

Esse usuário de aplicação terá direito de executar comandos DML nos objetos do esquema WORKSPACE, mas a segurança e administração de um ambiente com essa configuração é bastante interessante.


A sintaxe para criação de um usuário é a apresentada na Figura 1 e exemplificada mais adiante (de forma básica).
 Figura 1 - Sintaxe de criação de usuário. (Fonte: Oracle Corporation)

CREATE USER WORKSPACE
   IDENTIFIED BY SENHA
   DEFAULT TABLESPACE TBS_USUARIOS
   TEMPORARY TABLESPACE TEMP
   PROFILE DEFAULT
   ACCOUNT UNLOCK;


Espero ter ajudado com esse post.

Até a próxima!

Referências:

Watson, John; Ramklass, Roopesh (2010) – OCA Oracle Database 11g – Fundamentos I SQL – Manual do Exame 1z0-051. Editora: ALTABOOKS.

Oracle Corporation – CREATE USER. Disponível em http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_8003.htm. Acessado em 10/03/2013.