Banco de Dados II Administração do SGBD Oracle. Tablespaces, usuários, privilégios, papéis e perfis. Gustavo Dibbern Piva 1
Tablespace Um tablespace é uma unidade lógica onde os dados são armazenados. Os tablespaces padrão de uma instalação Oracle (acima da 10g) são: - USERS: Geralmente o tablespace padrão dos usuários, logo, onde ficam armazenados os dados criados pelos usuários. - SYSTEM: É onde o Oracle armazena todas as informações necessárias para seu próprio gerenciamento. - TEMP: Onde o Oracle armazena as tabelas temporárias. - UNDOTBS1: Onde o Oracle armazena os comandos que podem ser desfeitos (Via rollback, recuperação e consistência). - SYSAUX: Foi criado na versão 10g para compartilhar as execuções no tablespace SYSTEM dividindo com ele as tarefas do banco e seus utilitários, permitindo maior performace ao SGBD como um todo. 2
Tablespaces. Quando não informado em que tablespace deve ser criado uma tabela, a mesma é criada no tablespace default do usuário.(definido na criação do usuário.) Todo tablespace está vinculado a um arquivo físico (datafile). Exemplo: CREATE TABLESPACE SUPERM DATAFILE 'C:\oraclexe\app\oracle\oradata\XE\SUPERM.dbf SIZE 50M EXTENT MANAGEMENT LOCAL AUTOALLOCATE; 3
Usuários. Para se ter acesso a um SGBD e executar qualquer função dentro deste, desde uma consulta até a criação de uma tabela ou a execução de uma StoredProcedure faz-se necessário ser um usuário cadastrado no SGBD e ter os privilégios necessários para poder realizar a ação pretendida.. 4
Comando para criação de usuários em Oracle Os comandos de manutenção de usuários seguem os padrões do SQL e possuem a sintaxe: CREATE USER Cria um usuário. ALTER USER Altera os parâmetros de um usuário. DROP USER Apaga um usuário. 5
Parâmetros da criação um usuário. Os parâmetros da criação de um usuário, são: <Nome> É o nome do usuário dentro do SGBD, tem limite de 30 caracteres e não pode ser uma palavra reservada do Oracle. IDENTIFIED BY <Senha> Especifica a senha de acesso do usuário ao SGBD. DEFAULT TABLESPACE <Nome do Tablespace> Especifica em qual tablespace ficarão armazenados os componentes criados pelo usuário, tais como tabelas, storedprocedures,views etc. 6
Parâmetros da criação um usuário Continuação. TEMPORARY TABLESPACE <nome> Define onde os dados temporários das operações de banco de dados do usuário serão armazenados. QUOTA <tamanho> Especifica o tamanho do espaço que os componentes do usuário podem ocupar em seu tablespace. Podem ser especificados em Kilobytes (K) ou em Megabytes (M). PROFILE <nome> Especifica a qual perfil o usuário estará associado. Existe o perfil Default, mas podemos especificar Quais políticas e quanto dos recursos um grupo de usuários poderá dispor quando estiver utilizando o SGBD. 7
Parâmetros da criação um usuário Continuação. PASSWORD EXPIRE Quantos dias após seu primeiro login o usuário precisará trocar sua senha. ACCOUNT (LOCK/UNLOCK) Se o usuário será criado ativo ou bloqueado. 8
Exemplos de Criação de usuários Exemplo de Criação de usuário: CREATE USER MARCIA IDENTIFIED BY MA123 ACCOUNT UNLOCK DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; 9
Exemplo de Alteração/Exclusão de usuário Exemplo de Alteração de usuário: ALTER USER MARCIA IDENTIFIED BY MARCIA123; Exemplo de Exclusão de usuário: DROP USER MARCIA; 10
Privilégios de usuário. Privilégios de usuário são as ações que um determinado usuário ou grupo de usuários pode executar dentro de um SGBD. Podemos criar usuários que só podem consultar certas tabelas e nelas eles podem apenas consultar seus dados, não podendo incluir, alterar ou excluir qualquer registro dentro da tabela. Podemos ter, também, usuários com privilégios de criar tabelas mas não de inserir ou manter os dados dentro destas tabelas. Resumindo podemos limitar as ações dos usuários dentro do banco, aumentando a segurança e a veracidade das informações lá contidas. 11
Privilégios de usuário (Sistema). ALTER SYSTEM Permite ao usuário a alteração dos parâmetros de inicialização do SGBD. CREATE USER Permite ao usuário criar outros usuários. CREATE SESSION Permite ao usuário criar uma sessão no SGBD. CREATE TABLE Permite ao usuário criar tabelas no SGBD. SYSDBA Permite ao usuário ter total acesso ao SGBD, para efetuar qualquer operação/alteração. 12
Atribuindo/Retirando Privilégios do Usuário GRANT Atribui privilégios ao usuário. Exemplo: GRANT CREATE SESSION TO MARCIA; REVOKE Remove privilégios do usuário. Exemplo: REVOKE CREATE TABLE FROM MARCIA; 13
Privilégios de Objeto do usuário ALTER <Componente> Permite ao usuário alterar determinado componente. EXECUTE <Nome> Permite ao usuário executar <Nome> que pode ser uma função (Stored Function) ou um procedimento (Stored Procedure). SELECT <Componente> Permite ao usuário selecionar informações relativas ao <Componente>. INSERT <Tabela> Permite ao usuário inserir informações em uma tabela. UPDATE <Tabela> Permite ao usuário alterar informações em uma tabela. DELETE <tabela> Permite ao usuário excluir informações em uma tabela. 14
Papéis de Usuários Para agilizar o processo de atribuição de privilégios aos usuários pode-se criar papéis que agrupam estes privilégios e ao invés de se atribuir cada privilégio aos usuários, criam-se papéis, se atribuem os privilégios a estes papéis e depois se associam os papéis aos usuários. Normalmente se faz um estudo para verificar os tipos de privilégios que é necessário se criar, criam-se os papéis e então os usuários. Os papéis também são conhecidos como grupos. 15
Exemplo de criação de papéis. Criação de papeis: CREATE ROLE DESENV; Atribuindo privilégios ao papel: GRANT CREATE SESSION TO DESENV; GRANT CREATE TABLE TO DESENV; GRANT CREATE VIEW TO DESENV; GRANT CREATE PROCEDURE TO DESENV; Atribuindo papel a usuário: GRANT DESENV TO MARCIA; Excluindo um papel: DROP ROLE DESENV; 16
Perfil Um perfil permite agrupar uma série de regras de uso e compartilhamento de recursos dentro do SGBD e do servidor associado. Os parâmetros configuráveis de um perfil se dividem basicamente em 2 tipos: O primeiro que define as políticas de segurança de usuários, definindo senhas, tempo de duração, ações quando há erro de senha no login, dentre outros. O segundo diz respeito ao uso dos recursos de Hardware. Todo o usuário deve ter um perfil associado, quando não definido é atribuído o perfil Default. 17
Parâmetros atribuídos a perfis aplicáveis a usuários. <FAILED_LOGIN_ATTEMPTS> Define o número de erros consecutivos da senha de um usuário antes do usuário ser bloqueado. <PASSWORD_LOCK_TIME> Define o número de dias que um usuário ficará bloqueado depois que o número de tentativas de login (FAILED_LOGIN_ATTEMPTS) for alcançado. <PASSWORD_LIFE_TIME> Define o número de dias de validade de uma senha. Após estes dias a senha deverá ser trocada pelo usuário. 18
Parâmetros atribuídos a perfis aplicáveis a usuários.(continuação) <PASSWORD_GRACE_TIME> Define o número de dias que o usuário poderá logar sem alterar a senha expirada. <PASSWORD_REUSE_TIME> Define o número de dias para que uma senha possa ser reutilizada. <PASSWORD_REUSE_MAX> Define o número de vezes que uma senha pode ser reutilizada. <PASSWORD_VERIFY_FUNCTION> Define uma função para analisar o grau de dificuldade da senha digitada. 19
Parâmetros atribuídos a perfis aplicáveis ao uso de recursos. Para que estes parâmetros de recursos sejam levados em conta faz-se necessário que o parâmetro RESOURCE_LIMIT esteja com o valor TRUE (Seu valor default é false). Este parâmetro pode ser alterado com o comando: ALTER SYSTEM SET RESORCE_LIMIT=TRUE; desde que o usuário tenha permissão para alterar parâmetros de sistema. Estes parâmetros são também chamados de parâmetros de Kernel. 20
Parâmetros atribuídos a perfis aplicáveis ao uso de recursos.(cont.) <SESSIONS_PER_USER> Define o número de logins concorrentes que podem ser feitos pelo usuário. <CPU_PER_SESSION> Define o tempo de CPU, em centésimos de segundo, que um processo de servidor de uma sessão pode ser usada antes de ser terminada. <CPU_PER_CALL> Define o tempo de CPU, em centésimos de segundo, que um processo de servidor de sessão pode ser usado para executar uma instrução SQL, antes de ser terminado. 21
Parâmetros atribuídos a perfis aplicáveis ao uso de recursos.(cont.) <LOGICAL_READS_PER_SESSION> Define o número de blocos que podem ser lidos por uma sessão antes que ela seja finalizada. <LOGICAL_READS_PER_CALL> Define o número de blocos que podem ser lidos por uma única instrução SQL antes de ser finalizada. <PRIVATE_SGA> Define o número de Kbytes que usa sessão em (System Global Area (Servidor compartilhado)) pode ser usado por sessão. <CONNECT_TIME> Define o número de minutos máximos de duração de uma sessão. 22
Parâmetros atribuídos a perfis aplicáveis ao uso de recursos.(cont.) <IDLE_TIME> Define o número de minutos máximos que uma sessão pode ficar ociosa antes de ser terminada. <COMPOSITE_LIMIT> Define uma soma ponderada dos parâmetros informados e dos recursos disponíveis tentando criar uma flexibilização do uso dos recursos disponíveis. 23
Exemplo de manutenção de perfis. Criação de um perfil: CREATE PROFILE COMUM LIMIT CONNECT_TIME 120 FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LIFE_TIME 30 PASSWORD_LOCK_TIME 1; Alteração de perfil: ALTER PROFILE COMUM CONNECT_TIME 180; Exclusão de perfil: DROP PROFILE COMUM; 24