You are on page 1of 11

1

ADMINISTRAÇÃO DE USUÁRIOS NO SGBD ORACLE 11G


J UVENAL LONGUINHO DA SILVA NETO
1

IREMAR NUNES DE LIMA
2



Resumo: Este artigo apresenta como criar, modificar e excluir usuários, privilégios, atribuições e
perfis em instâncias de banco de dados Oracle 11g. A definição de cada item é feito com base na
literatura sobre o assunto sendo apresentados exemplos práticos.

Palavras-chave: Banco de Dados, Oracle, Administração, Usuário, Perfil, Atribuição e Privilégio.

1. INTRODUÇÃO
Para realizarmos qualquer ação em um servidor de banco de dados é necessário ter um usuário com
determinados privilégios de acesso ao servidor. No banco de dados Oracle 11g existem diferentes
privilégios que podem ser concedidos aos usuários, e gerenciar os privilégios individualmente pode
se tornar uma tarefa extremamente cansativa. Para facilitar essa tarefa de gerenciamento,
normalmente, utilizamos atribuições para agrupar os privilégios.
Geralmente temos vários usuários conectados ao banco de dados e executando ações concorrentes e
simultâneas. Para evitar que um usuário específico consuma em excesso os recursos disponíveis
(CPU, E/S, memória), o que prejudicaria os demais usuários, o banco de dados Oracle 11g fornece

1
Especialista em Banco de Dados e Business Inteligence (juvvenna@gmail.com).
2
DBA, Mestre em informática e Professor do Centro Universitário Newton Paiva (iremar.prof@uol.com.br).
2

um mecanismo, chamado de perfil, para controlar o limite desses recursos que o usuário pode
utilizar.
Este artigo discute as funcionalidades para criar usuários, controlar perfis, conceder privilégios e
estabelecer atribuições no SGBD Oracle 11g. Para entendimento deste artigo é necessário
conhecimentos de conceitos básicos do SGBD Oracle.
2. USUÁRIOS
Uma conta de usuário é identificada por um nome (de no máximo trinta caracteres) e está associado
a somente um esquema, com o mesmo nome do usuário, no banco de dados. Os termos “usuário” e
“esquema” podem ser usados alternadamente em um ambiente Oracle, mas nem sempre querem
dizer a mesma coisa. Um usuário é o nome utilizado para estabelecer uma conexão com o banco de
dados. Um esquema é um conjunto de objetos de propriedade do usuário: tabelas, índices,
seqüências, visões, entre outros (WATSON, 2010).
O comando utilizado para criar um usuário é o CREATE USER. Esse comando possui somente dois
parâmetros obrigatórios: o nome e a senha do usuário. No entanto, é boa prática definir vários
outros parâmetros para a conta do usuário (WATSON, 2010). Abaixo, conforme apresentando por
BRYLA & LONEY (2009), os principais parâmetros utilizados quando um usuário é criado.
Parâmetros Uso

Nome do usuário Especifica o nome que identifica a conta do usuário. Ele pode ter
até 30 caracteres e não pode ser uma palavra reservada a menos
que ela esteja entre aspas (o que não é recomendado).

IDENTIFIED BY senha Especifica a senha do usuário para acesso ao banco de dados.

DEFAULT TABLESPACE Especifica o tablespace padrão onde os objetos permanentes da
conta do usuário serão criados, exceto, quando o tablespace é
explicitamente especificado durante a criação dos objetos.

TEMPORARY TABLESPACE Especifica o tablespace onde os segmentos temporários, da
conta do usuário, serão criados durante as operações de
classificação, criação de índices, etc.

3

Parâmetros Uso
QUOTA Especifica a quantidade de espaço, ou tamanho, permitido para
os objetos criados no tablespace especificado. O tamanho pode
ser em kilobytes(K) ou em megabytes(M).

PROFILE Especifica o perfil atribuído a este usuário. Ele será discutido
mais adiante nesse artigo. Se um perfil não for especificado, o
perfil utilizado será o DEFAULT.

PASSWORD EXPIRE Especifica que após o primeiro logon, o usuário deve alterar a
senha.

ACCOUNT {LOCK | UNLOCK} Especifica se a conta do usuário está bloqueada (LOCK) ou
desbloqueada (UNLOCK). Por padrão, a conta do usuário será
criada desbloqueada.

Tabela 1: Principais parâmetros para a criação da conta de usuário.
Fonte: BRYLA & LONEY (2009)

Exemplo do comando para criar a conta do usuário
CREATE USER J UVENAL
I DENTI FI ED BY 123456
ACCOUNT UNLOCK
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

Exemplo do comando para alterar a conta do usuário
ALTER USER J UVENAL
I DENTI FI ED BY 9998877
ACCOUNT LOCK;

Exemplo do comando para remover a conta do usuário
DROP USER J UVENAL;

3. PERFIS
Um processo de usuário pode consumir, em excesso, recursos como CPU, espaço em disco ou
largura de banda de E/S (Entrada / Saída). Como esses recursos geralmente são limitados, o Oracle
11g possui um mecanismo para limitar e controlar a quantidade desses recursos que os processos do
usuário podem consumir. Além disso, os perfis também podem ser usados como um mecanismo de
autorização para controlar como as senhas de usuários são criadas, reutilizadas e validadas (BRYLA
& LONEY, 2009).
4

Um perfil tem dupla função: impor uma política para a senha da conta de usuário (limites para as
senhas) e restringir os recursos que uma sessão pode ocupar (limites para os recursos). No banco de
dados Oracle 11g os limites para as senhas são sempre obrigatórios; e os limites para os recursos só
são obrigatórios se o parâmetro de instância RESOURCE_LIMIT estiver como TRUE (por padrão
ele é FALSE). Todas as contas de usuários têm um perfil, por padrão, chamado de DEFAULT. O
perfil DEFAULT pode ser ajustado, e a alteração será imediatamente aplicada a todos os usuários
com o perfil. Perfis adicionais podem ser criados e atribuídos explicitamente a certos usuários
(WATSON, 2010). A seguir é descrito os dois limites apresentados:
a. Limites para as senhas
Segundo WATSON (2010), os limites que podem ser aplicados a política de senha são:
Parâmetros Uso

FAILED_LOGIN_ATTEMPTS Especifica o número de erros consecutivos em uma senha antes
de a conta do usuário ser bloqueada. Se a senha correta for
fornecida antes desse limite ser alcançado, o contador é
redefinido como zero.

PASSWORD_LOCK_TIME Especifica o número de dias que uma conta ficará bloqueada
depois que o FAILED_LOGIN_ATTEMPTS for atingido.

PASSWORD_LIFE_TIME Especifica o número de dias antes de uma senha expirar. Ela
ainda poderá ser usada por algum tempo após a expiração,
dependendo da configuração utilizada em
PASSWORD_GRACE_TIME.

PASSWORD_GRACE_TIME Especifica o número de dias depois do primeiro logon bem-
sucedido após a senha ter expirado. A senha antiga ainda pode
ser usada durante esse período.

PASSWORD_REUSE_TIME Especifica o número de dias antes que uma senha possa ser
reutilizada.

PASSWORD_REUSE_MAX Especifica o número de vezes que uma senha pode ser
reutilizada.

PASSWORD_VERIFY_FUNCTION Especifica o nome de uma função a ser executada sempre que
uma senha for alterada. A finalidade da função deve ser verificar
se a nova senha tem um grau de complexidade adequado.

Tabela 2: Principais limites aplicados a política de senha.
5

Fonte: WATSON (2010)

b. Limites para os recursos
Segundo WATSON (2010), os limites que podem ser aplicados ao uso dos recursos (também
conhecidos como limites de kernel) são:
Parâmetros Uso

SESSIONS_PER_USER Especifica o número de logins concorrentes que podem ser feitos
à mesma conta de usuário. Sessões que tenta fazer login com o
mesmo nome de usuário após esse limite ser alcançado serão
bloqueadas.

CPU_PER_SESSION Especifica o tempo de CPU, em centissegundos, que um
processo de servidor de uma sessão pode ser usado antes da
sessão ser forçadamente terminada.

CPU_PER_CALL Especifica o tempo de CPU, em centissegundos, que um
processo de servidor de uma sessão pode ser usado para executar
uma instrução SQL, antes de a instrução ser forçadamente
terminada.

LOGICAL_READS_PER_SESSION Especifica o número de blocos que podem ser lidos por uma
sessão (independentemente de eles estarem no cache de buffer
do banco de dados ou lidos no disco) antes que a sessão seja
forçadamente terminada.

LOGICAL_READS_PER_CALL Especifica o número de blocos que podem ser lidos por uma
única instrução SQL (independentemente de eles estarem no
cache de buffer do banco de dados ou lidos no disco) antes que a
instrução seja forçadamente terminada.

PRIVATE_SGA Para sessões conectadas por meio da arquitetura de servidor
compartilhado, especifica o número, em kilobytes, que a sessão
pode usar na SGA (System Global Area).

CONNECT_TIME Especifica a duração máxima, em minutos, máxima de uma
sessão antes de ser forçadamente terminada.

IDLE_TIME Especifica tempo máximo, em minutos, que uma sessão pode
ficar ociosa antes de ser forçadamente terminada.

COMPOSITE_LIMIT Especifica uma soma ponderada dos parâmetros acima.
Geralmente utilizamos esse parâmetro quando precisamos dar
flexibilidade e tolerância às operações executadas pelos
usuários, assim estamos limitando o usuário pelo uso ponderado
6

Parâmetros Uso
dos recursos e pela disponibilidade de cada recurso no servidor.

Tabela 3: Principais limites aplicados aos recursos.
Fonte: WATSON (2010)

Os limites para os recursos só são obrigatórios se o parâmetro de instância RESOURCE_LIMIT
estiver como TRUE. Por padrão, esse parâmetro é definido com FALSE. Uma das maneiras para
ativar o RESOURCE_LIMIT é utilizar a sintaxe: ALTER SYSTEM SET
RESOURCE_LIMIT=TRUE;
Segundo BRYLA & LONEY (2009), nos limites aplicados ao uso dos recursos existem dois tipos
de valores especiais que podem ser aplicados aos seus parâmetros: UNLIMITED e DEFAULT. O
valor de parâmetro UNLIMITED significa que não há limites sobre quanto do recurso determinado
pode ser utilizado, já o valor de parâmetro DEFAULT significa que este parâmetro assume seus
valores a partir do perfil DEFAULT.
Ainda conforme BRYLA & LONEY (2009), a maneira como o banco de dados Oracle 11g trata um
dos limites de recursos que está sendo excedido, depende do tipo deste. Mas na maioria dos casos, a
sessão será forçadamente terminada quando o limite para um recurso determinado for excedido. Por
exemplo, caso haja uma transação em andamento quando uma sessão for terminada porque o limite
de um recurso foi alcançado, ela sofrerá rollback. Se uma instrução for terminada, o trabalho feito
por ela sofrerá um rollback, mas todas as instruções anteriores permanecerão intactas.

Exemplo para criar um perfil
CREATE PROFI LE EXEMPLO LI MI T
CONNECT_TI ME 120
FAI LED_LOGI N_ATTEMPTS 8;

Exemplo para alterar um perfil
ALTER PROFI LE EXEMPLO LI MI T
PASSWORD_LI FE_TI ME 180
7

PASSWORD_GRACE_TI ME 7
PASSWORD_REUSE_MAX UNLI MI TED
FAI LED_LOGI N_ATTEMPTS 10
PASSWORD_LOCK_TI ME 1;

Exemplo para remover um perfil
DROP PROFI LE EXEMPLO;

4. PRIVILÉGIOS
Segundo WATSON (2010), em um banco de dados Oracle 11g não é possível fazer nada sem o(s)
privilégio(s) correto(s). Um usuário não pode sequer conectar-se sem ter o privilégio para tal e, uma
vez que conectado, ele não pode fazer mais nada de útil (ou perigoso) sem receber mais privilégios.
Os privilégios são atribuídos às contas de usuários com o comando GRANT e removidos através do
comando REVOKE. Na maioria das vezes que o usuário não possui privilégio para executar uma
ação, o banco de dados Oracle 11g emite uma mensagem de advertência semelhante a esta: “ORA-
01031: Privilégios Insuficientes”.
Ainda segundo WATSON (2010), podemos dividir os privilégios em dois grupos: privilégios de
sistemas e privilégios de objeto. O primeiro grupo permite que os usuários executem ações que
afetam o dicionário de dados, já o segundo grupo permite aos usuários executar ações que afetam os
dados.
Outra definição que podemos usar é dada por BRYLA & LONEY (2009): eles nos dizem que um
privilégio de sistema é um direito para executar ações, que não envolvam nenhum objeto específico,
mas sim procedimentos tais como alterar os parâmetros da instância, criar atribuições e criar
usuários. Em um banco de Oracle 11g existem aproximadamente duzentos privilégios de sistemas.
A relação completa desses privilégios pode ser encontrada na tabela do dicionário de dados
chamada SYSTEM_PRIVILEGE_MAP. Os privilégios de objeto são definidos por BRYLA &
LONEY (2009) como um direito que permite executar comandos como ALTER, SELECT,
8

INSERT, UPDATE e DELETE em tabelas, visões, procedimentos ou seqüências existentes no
banco de dados.
Os privilégios de sistema podem ser concedidos para um usuário, atribuição (será discutido mais
adiante) ou para o grupo PUBLIC. Um fator importante ressaltado tanto por BRYLA & LONEY
(2009), como por WATSON (2010), é que os privilégios de sistema ou de objeto devem ser
concedidos para o grupo PUBLIC somente quando for realmente necessário. PUBLIC é um grupo
especial que inclui todos os usuários do banco de dados e é um atalho para conceder privilégios
para todas as contas de usuários.
Quando estamos concedendo um privilégio, podemos permitir que os beneficiados pelos privilégios
concedam estes mesmos a outros usuários, para isso basta incluir o parâmetro WITH ADMIN
OPTION ao final do comando GRANT. A seguir temos a descrição de alguns privilégios de sistema
(BRYLA & LONEY, 2009):
Privilégio Capacidade

ALTER SYSTEM Permite modificar os parâmetros de inicialização do banco de
dados Oracle 11g.

CREATE USER Permite criar novos usuários.

CREATE SESSION Permite abrir uma conexão com o banco de dados.

CREATE TABLE Permite criar tabelas somente no seu esquema.

SYSDBA Esse é um privilégio especial, permite ao usuário executar
qualquer ação dentro do banco de dados Oracle 11g.

Tabela 4: Alguns privilégios de sistema.
Fonte: (BRYLA & LONEY, 2009)

Exemplo de como conceder um privilégio de sistema
GRANT CREATE SESSI ON TO J UVENAL;

Exemplo de como retirar um privilégio de sistema
REVOKE CREATE ANY TABLE FROM J UVENAL;

9

Assim como nos privilégios de sistema, podemos conceder privilégios de objeto a um usuário,
atribuição ou para o grupo PUBLIC. E também podemos usar o parâmetro WITH ADMIN
OPTION para permitir que os beneficiados repassem os mesmo privilégios a outros usuários. A
seguir temos a descrição de alguns privilégios de objeto (BRYLA & LONEY, 2009):
Privilégio Capacidade

ALTER Permite alterar a estrutura de uma tabela ou seqüência.

EXECUTE Permite executar a função (FUNCTION) ou procedimento
(PROCEDURE).

SELECT Permite ler as linhas de tabela ou visão, e adicionalmente, ler o
valor corrente e o próximo valor para uma seqüência.

INSERT Permite inserir dados em uma tabela ou visão.

DELETE Permite apagar os dados de uma tabela ou visão.

UPDATE Permite atualizar os dados em uma tabela ou visão.

Tabela 5: Alguns privilégios de objeto.
Fonte: (BRYLA & LONEY, 2009):

Exemplo de como conceder privilégios de objeto
GRANT SELECT ON LUCAS.TABELA01 TO J UVENAL;
GRANT SELECT, I NSERT, UPDATE ON LUCAS.TABELA02 TO J UVENAL;

Exemplo de como retirar privilégios de objeto
REVOKE UPDATE ON LUCAS.TABELA02 FROM J UVENAL;

5. ATRIBUIÇÕES
No contexto do banco de dados Oracle 11g, uma atribuição (role em inglês) é conjunto de
privilégios de sistema e/ou privilégios de objeto que podem ser concedidos e revogados com uma
unidade (WATSON, 2010).
Também podemos dizer que uma atribuição é um grupo nomeado de privilégios, sejam eles de
sistema ou de objeto, ou uma combinação de ambos, que facilita a administração dos privilégios em
10

um banco de dados Oracle 11g. Em vez de conceder privilégios de sistemas ou de objeto
individualmente para cada usuário, é possível conceder um grupo de privilégios a uma atribuição e,
por sua vez, a atribuição pode ser concedida aos usuários (BRYLA & LONEY, 2009).
Criamos as atribuições utilizando o comando CREATE ROLE e as removemos através do comando
DROP ROLE. As atribuições não são objetos de um esquema, ou seja, elas não pertencem a
nenhum usuário específico. Uma vez que a atribuição esteja criada, podemos conceder todos os
privilégios que julgamos necessários para a atribuição, os privilégios são concedidos através do
comando GRANT visto anteriormente (WATSON, 2010).
Exemplo para criar uma atribuição
CREATE ROLE DESENVOLVEDORES;

Exemplo para conceder privilégios uma atribuição
GRANT CREATE SESSI ON TO DESENVOLVEDORES;
GRANT CREATE TABLE TO DESENVOLVEDORES;
GRANT CREATE VI EW TO DESENVOLVEDORES;
GRANT CREATE PROCEDURE TO DESENVOLVEDORES;
GRANT SELECT, UPDATE ON I REMAR.TABELA02 TO DESENVOLVEDORES;

Exemplo para atribuir uma atribuição a usuário
GRANT DESENVOLVEDORES TO J OAO;

Exemplo para excluir uma atribuição
DROP ROLE DESENVOLVEDORES;

6. CONCLUSÃO
Um banco de dados Oracle 11g fornece excelentes mecanismos para o gerenciamento da segurança
do usuário, além de permitir controlar, através de perfil, os recursos disponíveis e a política de
senha para os usuários. O mecanismo de privilégios, juntamente com as atribuições, é transparente e
de fácil utilização, permitindo conceder aos usuários os direitos necessários para a execução das
tarefas.
11

REFERÊNCIAS
BRYLA, Bob; LONEY, Kevin. Oracle Database 11g: Manual do DBA. Tradução Altair Caldas
Dias de Moraes. Porto Alegre. Ed. Bookman. 2009.
WATSON, J ohn. OCA Oracle Database 11g: Administração I: guia do exame 1Z0-052.
Tradução Altair Caldas Dias de Moraes. Porto Alegre. Ed. Bookman. 2010.