bd_administracao.doc

25
Banco de Dados - Administração de Banco Dados Administrar um banco é, de maneira simplista, instalar, configurar, monitorar e solucionar problemas de um SGBD (Sistema Gerenciador de Banco de Dados). Esmiuçando este conceito, um Administrador de Banco de Dados tem as seguintes responsabilidades: Projeto lógico do banco de dados: criação do esquema lógico usando a DDL; Definição de checagem de segurança e integridade; Decisão de como os dados são representados na base de dados armazenada; Projeto físico da base de dados; Definição de procedimentos de recuperação; Monitoração do desempenho; Contato com usuários para averiguação de disponibilidade dos dados por eles requisitados e ajuda na determinação e resolução de problemas; Ajustes apropriados à medida que ocorram mudanças de requisitos Organização de Arquivos TIPOS DE ACESSO

Upload: fabianorodrigo

Post on 11-Dec-2014

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BD_Administracao.doc

Banco de Dados - Administração de Banco Dados

Administrar um banco é, de maneira simplista, instalar, configurar, monitorar e solucionar problemas de um SGBD (Sistema Gerenciador de Banco de Dados). Esmiuçando este conceito, um Administrador de Banco de Dados tem as seguintes responsabilidades:

Projeto lógico do banco de dados: criação do esquema lógico usando a DDL; Definição de checagem de segurança e integridade; Decisão de como os dados são representados na base de dados armazenada; Projeto físico da base de dados; Definição de procedimentos de recuperação; Monitoração do desempenho; Contato com usuários para averiguação de disponibilidade dos dados por eles requisitados e

ajuda na determinação e resolução de problemas; Ajustes apropriados à medida que ocorram mudanças de requisitos

Organização de Arquivos

TIPOS DE ACESSO

TIPOS DE ORGANIZAÇÃO DE ARQUIVOS

Page 2: BD_Administracao.doc

Serial (Heap): Tipo de organização em que os registros estão armazenados lado a lado. O único modo de acesso possível é o seqüencial, ou seja, para acessarmos o registro N, temos que fazer N - 1 acessos. O número médio de comparações é na ordem de (N + 1)/2. A única técnica utilizada para atualizar um arquivo seqüencial é a técnica de balanced-line.

Sequencial (Heap Ordenado): Nos arquivos sequenciais os registros estão dispostos ordenadamente, classificados pela chave primária ou chave de ordenação, isto é, a sequência física e lógica dos registros coincide conforme o critério estabelecido para classificação. Portanto, há um custo adicional das operações que modificam o arquivo para mantê-lo ordenado. A vantagem é a facilidade de recuperar registros cujos argumentos de pesquisa coincidam com a chave de ordenação. Este tipo é empregado quando o principal modo de processamento é o sequencial e quando as modificações podem ser adiadas até o momento em que se faz o processamento sequencial dos registros.

Quando a área reservada para armazenamento do arquivo é exatamente a que se precisa para guardar todos os seus registros, a ocupação do espaço é ótima, ou seja, não há desperdício. Quando é necessário alocar uma área maior, existe uma perda que corresponde à diferença de posições ocupadas

Page 3: BD_Administracao.doc

na área, causada pelos mecanismos de inclusão de registros, com a blocagem de registros, e de alocação de área para arquivo.

Indexados: Tipo de organização em que os registros são identificados por um índice, chamado de chave do acesso ou chave do registro ou chave principal, que representa o valor com que as demais informações são identificadas no arquivo. Esta chave de acesso deverá ser única para cada registro, ou seja, não é possível ter dois registros com o mesmo valor de chave.

ESTRUTURA INTERNAO arquivo de organização indexada possui duas áreas:

Área de Índices: Contém a chave de acesso e o endereço de cada registro na área de dados. Todo acesso aos registros será feito através desta área, que é mantida sempre ordenada, pela chave de acesso, pelo Sistema Operacional.

Área de Dados: Armazena os demais campos de todos os registros do arquivo, independente de qualquer ordenação ou seqüência.

MODO DE ACESSO NA ORGANIZAÇÃO INDEXADA Seqüencial: É feito através da leitura seqüencial da área de índices do arquivo. Para cada

ocorrência desta área (equivalente a um índice), será obtido o endereço físico do registro deste índice na área de dados e com este endereço lido o registro. Na recuperação seqüencial de um arquivo, os dados serão lidos sempre ordenados pela chave.

Aleatório ou Randômico: Caracteriza-se por não existir uma seqüência lógica na recuperação dos registros, ou seja, após a leitura do último registro, pode ser lido o quinto ou primeiro, ou qualquer outro, uma vez que, esta seqüência é determinada pelo programa de aplicação. No processo de leitura, o Sistema Operacional localiza o valor da chave desejada na área de índices, identificando o endereço do registro correspondente na área de dados, possibilitando o acesso, por este endereço, para a recuperação do registro.

PRINCIPAIS OPERAÇÕES PARA ATUALIZAÇÃO DOS DADOS Inclusão: O Sistema Operacional localiza na área de índice o local onde será armazenado a

chave a ser incluída, reorganizando se necessário as demais chaves mantendo-as sempre ordenadas. Após este processo, ele procura na área de dados, um endereço disponível para armazenamento do registro. Identificado o endereço, o registro será incluído e o valor do seu endereço, atualizado na área de índices.

Alteração: O Sistema Operacional localiza na área de índices, o valor da chave de acesso que se deseja atualizar, identificando o endereço do registro na área de dados. Após esta operação, ele atualiza os dados do registro no endereço correspondente.

Exclusão: O Sistema Operacional remove fisicamente da área de índices a chave de acesso do registro que será deletado e realiza uma exclusão lógica do registro na área de dados.

Seqüencial Indexado: É o tipo de organização em que, semelhante à organização indexada, os registros são identificados por um indice, chamado de chave do acesso ou chave do registro ou chave principal, que representa o valor com que as demais informações do registro será identificado no arquivo. Esta chave de acesso deverá ser única para cada registro, ou seja, não é possível ter dois registros com o mesmo valor de chave. ESTRUTURA INTERNA: O arquivo de organização seqüencial-indexada possui duas áreas:

Área de Índices: Contém o valor da maior chave de acesso existente em cada bloco de registros da área de dados e o endereço deste bloco nesta área.

Área de Dados: Contém, agrupados em blocos, os registros que compõem o arquivo, sendo mantidos ordenados dentro de cada um desses blocos.

MODOS DE ACESSO NA ORGANIZAÇÃO SEQÜENCIAL INDEXADA Seqüencial: É feito através da leitura seqüencial dos dados na área de dados.

Page 4: BD_Administracao.doc

Aleatório ou Randômico: É feito a localização, através do valor da chave de acesso na área de índices, do bloco onde deverá estar armazenado o registro desejado, identificando o seu endereço na área de dados. Após a localização do bloco nesta área, é feita uma procura seqüencial nos registros nele existentes até a localização do registro desejado.

PRINCIPAIS OPERAÇÕES PARA ATUALIZAÇÃO DOS DADOS Inclusão: O Sistema Operacional localiza na área de índice o bloco onde será armazenado a

chave a ser incluída. Após esta operação ele localiza na área de dados o bloco desejado e inclui o registro na posição correta, isto é, ordenado.

Alteração: O Sistema Operacional localiza na área de índices o endereço do bloco onde poderá estar armazenado a chave desejada. Localizando-o, na área de dados, é feita a procura seqüencial do registro a ser atualizado.

Exclusão: O Sistema Operacional remove fisicamente da área de dados o registro desejado, após a localização do bloco na área de índices.

Relativa ou Direta: É o tipo de organização que contém, apenas, uma área de dados para armazenamento dos registros. Estes registros são identificados por uma chave principal, cujo endereço físico para armazenamento é dado através do valor desta chave ou de um valor calculado a partir dela. Um arquivo de organização relativa tem que possuir chave de conteúdo numérico, para possibilitar o cálculo do endereço e localização do registro na área de dados.

Para encontrar o endereço de um registro o Sistema Operacional utiliza uma função que, através de um algoritmo qualquer, transforma o valor da chave em um endereço físico, onde está armazenado o registro solicitado. Eventualmente, esta função gera para dois ou mais valores de chave diferentes o mesmo endereço físico. Neste caso, o primeiro registro incluído ficará na área de dados e os demais em uma área auxiliar, chamada área de colisão, interligados através de uma lista simples. A área de colisão é uma área de dados auxiliar, onde fica armazenado todos os registros cujo cálculo do endereço é igual a de outros já armazenados.

MODOS DE ACESSO NA ORGANIZAÇÃO RELATIVA Seqüencial: É feito através da leitura seqüencial dos dados na área de dados, obedecendo a

seqüência das chaves. Aleatório: É feito a localização do registro através do endereço físico calculado através de

uma função a partir do valor da chave de acesso. Caso haja mais de um registro para o mesmo endereço, o Sistema Operacional fará pesquisa seqüencial dos registro na área de colisão do arquivo.

PRINCIPAIS OPERAÇÕES PARA ATUALIZAÇÃO DOS DADOS Inclusão: O Sistema Operacional calcula o endereço do registro, através do valor de sua

chave, incluindo-o no local especificado, caso já exista registros neste endereço ele fará a inclusão na área de colisão.

Alteração: O Sistema Operacional calcula o endereço do registro, através do valor de sua chave, atualizando-o no local especificado ou na área de colisão, dependendo de onde ele esteja armazenado.

Exclusão: O Sistema Operacional calcula o endereço do registro, através do valor de sua chave, removendo-o logicamente da área de dados ou da área de colisão, dependendo de onde ele esteja armazenado.

Invertido: É o tipo de organização que permite o acesso direto aos registros de dados através de chaves secundária (chave que não é primária), de um arquivo de dados. Esta arquivo é formado pelo conteúdo das chaves secundária e da relação das chaves primárias dos registros que a contém.

Exemplo: Arquivo Principal: FuncionárioChave primária ou principal: Cod. funcionário

Page 5: BD_Administracao.doc

COD. FUNCIONÁRIO NOME SALÁRIO 10 A 110.000 15 D 150.000 20 E 180.000 23 C 110.000 28 F 180.000 32 B 150.000 35 G 180.000

Arquivo invertido por salário:SALÁRIO CHAVES PRIMÁRIA 110.000 10, 23 150.000 15, 32 180.000 20, 28, 35

Este tipo de organização auxilia a recuperação de registros através de uma consulta, sendo bastante utilizado pelos Sistemas de Gerenciamento de Banco de Dados (SGBD) existentes. Ele está sempre associado a um arquivo principal, onde está armazenado o registro completo. O processo de atualização de um arquivo invertido ocorre simultaneamente à do arquivo principal, devendo o mesmo ser feito pela própria aplicação ou pelo SGBD.

Técnicas de Armazenamento

ÍndicesIndicadoresListasHashingAVLB-TreeRAIDStorage Area NetworksPrimary (memória)

Secondary Hard Disks

Tertiary Mecanismo robótico que irá montar/inserir e desmontar/remover mídia de massa em um dispostivo

Off-Line A mídia é gravada normalmente em um sedundário ou terciário, e então removida fisicamente. Ao contrário do terciário, não pode ser acessado sem interação humana.- Fácil transporte- Em caso de desastre estando longe não será afetada- Incrementa segurança uma vez que é fisicamente inacessível por um computador.- Menos caro

Métodos de Acesso

SAM - Sequencial Access Method

Page 6: BD_Administracao.doc

Indexed Access Method

Direct Access Method ou Hashing

EspaciaisK-d-Tree, Quad-tree, R-tree

Na seleção dos métodos de acesso a registros físicos, deve-se considerar a forma como os dados serão utilizados pelas diversas aplicações.

Técnica de Organização de Campos

Page 7: BD_Administracao.doc

Métodos de Acesso (???)

DDL: especificação do esquema do BD (dados e seus tipos de dados, índices, …)

DML: manipulação de dados (I, A, E, C)

Processamento eficaz de consultas: considerar relacionamentos, predicados de seleção, volume de dados, índices, ...

Tipos de Banco de Dados

Hierárquico

Page 8: BD_Administracao.doc

Rede

Relacional

Orientado a Objetos

Page 9: BD_Administracao.doc

Ex: Jasmine, O2, Versant, ObjectStore, Objectivity/DB...

Geográfico/SIG/Espacial

Dedutivo

Page 10: BD_Administracao.doc

Temporal

Distribuído

É uma coleção de várias Base de Dados logicamente inter-relacionadas, distribuídas por uma rede de computadores. Existem dois tipos de banco de dados distribuídos, os homogêneos e os heterogêneos. Os homogêneos são compostos pelos mesmos bancos de dados, já os Heterogêneos são aqueles que são compostos por mais de um tipo de banco de dados.

Num banco de dados distribuídos os arquivos podem estar replicados ou fragmentados, esses dois tipos podem ser encontrados ao longo dos nós do sistema de BDD's. Quando os dados se encontram replicados, existe uma cópia de cada um dos dados em cada nó, tornando as bases iguais (ex: tabela de produtos de uma grande loja). Já na fragmentação, os dados se encontram divididos ao longo do sistema, ou seja a cada nó existe uma base de dados diferente se olharmos de uma forma local, mas se analisarmos de uma forma global os dados são vistos de uma forma única, pois cada nó possui um catálogo que contém cada informação dos dados dos bancos adjacentes.A replicação dos dados pode se dar de maneira síncrona ou assíncrona. No caso de replicação síncrona, cada transação é dada como concluída quando todos os nós confirmam que a transação local foi bem sucedida. Na replicação assíncrona, o nó principal executa a transação enviando confirmação ao solicitante e então encaminha a transação aos demais nós.

Page 11: BD_Administracao.doc

Projeto de Banco de Dados

O projeto de banco de dados apresenta-se com uma atividade essencial na fase de desenvolvimento de sistemas, pois todos os dados de uma cooperação estarão de alguma forma organizados e mantidos em bancos de dados. O projeto de banco de dados é decomposto em Projeto Conceitual, Projeto Lógico e Projeto Físico.

Projeto Conceitual: inicia a partir das especificações e abstrações do mundo real e resulta no esquema conceitual de banco de dados. Dessa forma, dada uma coleção de requisitos de dados, o projetista de banco de dados tem o papel de criar um esquema conceitual que satisfaça os requisitos. Um esquema conceitual é uma descrição em alto nível (geralmente gráfica) da estrutura do banco de dados e, independente do SGBD adotado para implementação.

Um diagrama que represente os requisitos de dados do problema em questão é elaborado nessa fase. Esse diagrama possui o nome de Diagrama de Entidade e Relacionamento (DER) e, vários são os conceitos utilizados na sua elaboração: entidade, relacionamento, agregação, entidade fraca, atributos, entre outros.

Projeto Lógico: consiste no mapeamento do esquema conceitual para o modelo de dados do SGBD adotado, resultando em um esquema lógico.Um esquema lógico é uma descrição da estrutura do banco de dados que pode ser processada por um SGBD. Os modelos lógicos mais utilizados pertencem a três classes: relacional, redes e hierárquico, sendo amplamente utilizado o modelo relacional.

O projeto lógico depende do modelo de dados escolhido, mas não do SGBD a ser utilizado. Muitas vezes a escolha do SGBD é feita muito antes do projeto ter iniciado, na fase de definição do projeto. Quando o modelo de dados escolhido é o modelo relacional, na passagem do esquema conceitual para o esquema lógico, um novo diagrama é elaborado, denominado Diagrama de Estrutura de Dados (DED). Esse diagrama representa os dados modelados segundo o modelo relacional e sua implementação pode ser realizada através de uma ferramenta CASE.

Uma das vantagens em se trabalhar com projeto conceitual está na possibilidade de se adiar a escolha do SGBD (mesmo a sua classe).

Para auxiliar o projetista na tarefa de modelar os dados, existem os mecanismosde abstração de dados que permitem melhor representar a semântica da informação envolvida na aplicação. As abstrações comumente usadas no projeto conceitual são: classificação, agregação e generalização.

Abstração de Classificação: é usada para agrupar objetos similares, caracterizadospor propriedades comuns, em classes de objetos. Ex: classe EMPREGADO - instancias : (João, Pedro, ..., Maria). A classificação estabelece um relacionamento É-INSTANCIA-DE entre cada elementoda classe e a classe.

Abstração de Agregação: é um conceito de abstração para construir objetos compostos a partir de seus objetos componentes. Essa abstração estabelece um relacionamento É-PARTE-DE entre os componentes e a classe

Abstração de Generalização: define um relacionamento de subconjunto entre os elementos de duas ou mais classes. Ex: classes CARRO e BICICLETA são subconjuntos da classe VEÍCULO. Essa

Page 12: BD_Administracao.doc

abstração estabelece um relacionamento É-UM entre a classe pai (chamada superclasse) e cada classe filha (subclasse).

Propriedades de Cobertura da generalização Cobertura TOTAL ou PARCIAL: A cobertura de uma generalização é total(t) se cada elemento da classe genérica é mapeada para pelo menos um elemento das classes especializadas. Ex: A generalização formada pela classe PESSOA e as subclasses HOMEM e MULHER possui cobertura total. A cobertura é parcial (p) se existe algum elemento da classe genérica que não é mapeado para nenhum elemento das subclasses. Exemplo: Suponha que VEÍCULO é uma classe que contém outros tipos de veículos além de carros e bicicletas. A generalização nesse caso é parcial.

Cobertura EXCLUSIVA (DISJUNÇÃO): A cobertura de uma generalização é exclusiva (e) se cada elemento da classe genérica é mapeado para no máximo um elemento das subclasses. Ex: Um Veículo só é um Carro ou só é uma bicicleta (nunca os dois ao mesmo tempo)

SOBREPOSIÇÃO (OVERLAPPING): A cobertura é de sobreposição (s) se existe algum elemento da classe genérica que é mapeado para elementos de duas ou mais subclasses diferentes. Ex: Aluno Graduação e Aluno Pós Graduação (caso um aluno possa fazer graduação e pós ao mesmo tempo, tem-se uma cobertura de sobreposição)

Restrição de Cobertura: Restrição de Cobertura - uma superclasse (E2) não pode ser diretamente instanciada (abstrata), somente suas subclasses (E7 ou E8).

NotaçãoPara denotar o tipo de cobertura de uma hierarquia de generalização será usada a seguinte notação: (t,e), (t,s), (p,e), (p,s) e será indicado como na figura ao lado. Quando numa generalização a cobertura não está especificada, admite-se que é (t,e)

Projeto Físico: o inicia-se a partir do esquema lógico e resulta no esquema físico. Um esquema físico é uma descrição da implementação do banco de dados e é direcionado para um SGBD específico. Decisões tomadas nessa fase para melhorar o desempenho podem alterar o esquema lógico. Uma vez que o projeto físico é completado, os esquemas lógico e físico são expressos usando linguagem de definição de dados do SGBD adotado. O banco de dados é criado e populado e pode ser testado para se tornar operacional.

O projeto físico de banco de dados consiste na criação de tabelas que representam a implementação do modelo lógico, NÃO NECESSARIAMENTE preservando todos os atributos e entidades.

Em operação de junção (join), atinge-se maior eficiência quando os registros físicos estão ordenados pelo atributo usado na junção

Transformando o Esquema Conceitual em Esquema Lógico

O mapeamento do esquema conceitual para o esquema físico pode ser visto como sendo um processo em duas fases: a primeira, independe do SGBD e não considera nenhuma característica especifica que se aplica á implementação do SGBD escolhido; a segunda, consiste no ajustamento do esquema lógico às suas particularidades.

Várias regras de tradução do esquema conceitual para o esquema lógico são adotadas. Essas regras são simples e diretas. As entidades e agregações do DER (Diagrama de Entidade e Relacionamento) são

Page 13: BD_Administracao.doc

mapeadas e originam tabelas no DED (Diagrama de Estrutura de Dados). Os atributos identificadores das entidades correspondem às chaves primárias das tabelas derivadas.

No caso de relacionamentos, podem ser aplicadas as seguintes regras: Relacionamento 1:1 e 1:n não originam tabelas. A representação do relacionamento é feita

com a inclusão na tabela derivada da entidade do lado n de um atributo correspondente à chave primária da entidade do lado 1, com a função de chave estrangeira.

Cada relacionamento n:m dá origem a uma nova tabela. A sua chave primária é derivada da concatenação dos atributos identificadores das entidades relacionadas.

Cada relacionamento com grau 3 (ternário) ou superior também pode dar origem a uma nova tabela. Da mesma forma observada para os relacionamentos n:m, a chave primária é derivada da concatenação dos atributos identificadores das entidades relacionadas.

A figura abaixo mostra um DED resultante de um mapeamento DER. Os retângulos representam as tabelas. Os atributos acima da linha divisória representam a chave primária das tabelas, e os as abaixo da linha divisória representam os atributos não chaves. A circunferência cheia denota a migração das chaves primárias das tabelas. As linhas cheias denotam que as chaves primárias tornam-se parte da chave primária na tabela alvo, enquanto que as linhas tracejadas indicam que as chaves primárias tornam-se chaves estrangeiras na tabela alvo.

Conceitos de Administração

Esquema de Banco de Dados: É uma coleção de objetos de um banco de dados que estão disponíveis para um determinado usuário ou grupo. Os objetos de um esquema são estruturas lógicas que se referem diretamente aos dados do banco de dados. Eles incluem estruturas, tais como tabelas, visões, seqüências, procedimentos armazenados, sinônimos, índices, agrupamentos e links de banco de dados. (Não há nenhum relacionamento entre um tablespace e um esquema; os objetos do mesmo esquema podem estar em tablespaces diferentes, e um tablespace pode conter objetos de esquemas diferentes).O esquema de um sistema de banco de dados é uma estrutura descrita em uma linguagem formal suportada pelo sistema de gerenciamento de banco de dados (SGBD). Em um banco de dados relacional, o esquema define as tabelas, os campos em cada tabela e os relacionamentos entre os campos e tabelas.

Esquemas geralmente são armazenados em um dicionário de dados. Apesar de um esquema ser definido em linguagem texto de banco de dados, o termo é frequentemente utilizado para referir-se a uma representação da estrutura do banco de dados.

Tablespace: Objeto lógico que guarda os arquivos de dados do BD Oracle. Convém, antes de definir o tamanho da Tablespace, fazer uma estimativa do quanto de espaço em disco será necessário para alocar os objetos (tabelas, índices, ...). Entretanto, podemos aumentar o tamanho da Tablespace, adicionando datafiles (arquivos de dados) à mesma.

Page 14: BD_Administracao.doc

Database Buffer Cache: No Database Buffer Cache dados do BD Oracle são armazenados. O processo DBWR (database writer) grava os blocos de dados que as transações modificam na memória (database buffer cache) de volta para os arquivos de dados do BD. Os buffer do Database Buffer Cache são compartilhados por todos os processos de usuário do Oracle conectados à instância (instance). O tamanho do bloco do database buffer cache e quantidade de blocos são parametrizados. Com a atuação do Database Buffer Cache as E/S de disco são reduzidas, armazenando dados que as transações solicitaram recentemente. Exemplo: Quando uma transação inclui uma instrução pra atualizar uma linha o Oracle manda para o database buffer cache o bloco que contém a linha, atualizando a linha logo em seguida. Se outra transação quiser atualizar a mesma linha, ou outra que está no mesmo bloco, não será necessário outro acesso a disco, pois a linha já está no database buffer cache (memória).

Controle de Acesso: É todo controle feito quanto ao acesso ao BD, impondo regras de restrição, através das contas dos usuários. O Administrador do BD (DBA) é o responsável superior por declarar as regras dentro do SGBD. Ele é o responsável por conceder ou remover privilégios, criar ou excluir usuários, e atribuição de um nível de segurança aos usuários do sistema, de acordo com a política da empresa.

Controle de Inferência: É um mecanismo de segurança para banco de dados estatísticos que atua protegendo informações estatísticas de um individuo ou de um grupo. Bancos de dados estatísticos são usados principalmente para produzir estatísticas sobre várias populações. O banco de dados pode conter informações confidenciais sobre indivíduos. Os usuários têm permissão apenas para recuperar informações estatísticas sobre populações e não para recuperar dados individuais, como, por exemplo, a renda de uma pessoa específica.

Controle de Fluxo: É um mecanismo que previne que as informações fluam por canais secretos e violem a política de segurança ao alcançarem usuários não autorizados. Ele regula a distribuição ou fluxo de informação entre objetos acessíveis. Um fluxo entre o objeto A e o objeto B ocorre quando um programa lê valores de A e escreve valores em B. Os controles de fluxo têm a finalidade de verificar se informações contidas em alguns objetos não fluem explicita ou implicitamente para objetos de menor proteção. Dessa maneira, um usuário não pode obter indiretamente em B aquilo que ele ou ela não puder obter diretamente de A.

Criptografia de Dados: É uma medida de controle final, utilizada para proteger dados sigilosos que são transmitidos por meio de algum tipo de rede de comunicação. Ela também pode ser usada para oferecer proteção adicional para que partes confidenciais de um banco de dados não sejam acessadas por usuários não autorizados. Para isso, os dados são codificados através da utilização de algum algoritmo de codificação. Assim, um usuário não autorizado terá dificuldade para decifrá-los, mas os usuários autorizados receberão chaves para decifrar esses dados. A criptografia permite o disfarce da mensagem para que, mesmo com o desvio da transmissão, a mensagem não seja revelada.

Usuários: Abrange usuários e esquema do banco de dados onde cada banco de dados Oracle tem uma lista de nomes de usuários. Para acessar um banco de dados, um usuário deve usar um aplicativo desse tipo e tentar uma conexão com um nome de usuário valido. Cada nome tem uma senha associada para evitar o uso sem autorização.

Devem ser implementados ainda diferentes perfis de usuário para diferentes tarefas no Oracle, tendo em vista que cada aplicação/usuário tem a sua necessidade de acesso. Existe ainda a possibilidade de proteger os perfis com senha, o que é uma excelente medida. Além dessas medidas, o uso de cotas aumenta a restrição de espaço em disco a ser utilizado por usuários/aplicativos.

Domínio de Segurança: Onde cada usuário tem um domínio de segurança, um conjunto de propriedades que determinam coisas como ações (privilégios e papeis) disponíveis para o usuário; cota de tablespaces (espaço disponível em disco) do usuário; limites de recursos de sistema do usuário. As

Page 15: BD_Administracao.doc

tabelas (tablespaces) do sistema, como a system, devem ser protegidas de acessos de usuários diferentes dos usuários de sistema.

Autoridade: As autoridades fornecem um método de agrupar privilégios e controlar o nível de acesso dos administradores e operadores da base de dados com relação à manutenção e operações permitidas. As especificações da base de dados estão armazenadas em catálogos da própria base de dados. As autoridades do sistema estão associadas a membros de grupos e armazenados no arquivo de configuração administrativa do banco de dados. Este arquivo define as concessões de acesso e o que poderá ser executado de acordo com cada grupo.

Privilégios: Os privilégios são permissões únicas dadas a cada usuário ou grupo. Eles definem permissões para tipos de autorização. Pelos privilégios é possível autorizar o usuário a modificar ou alcançar determinado recurso do Banco de Dados. Os privilégios também são armazenados em catálogos do próprio Banco de Dados, visto que os grupos de autoridade por já possuírem grupos predefinidos de privilégio concedem implicitamente privilégios a seus membros.Tipos de privilégios discricionários: O SGBD deve oferecer acesso seletivo a cada relação do banco de dados baseando-se em contas específicas. As operações também podem ser controladas; assim, possuir uma conta não necessariamente habilita o possuidor a todas as funcionalidades oferecidas pelo SGBD. Informalmente existem dois níveis para a atribuição de privilégios para o uso do sistema de banco de dados:

O nível de conta: Nesse nível, o DBA estabelece os privilégios específicos que cada conta tem, independente das relações no banco de dados.

O nível de relação (ou tabela): Nesse nível, o DBA pode controlar o privilégio para acessar cada relação ou visão individual no banco de dados.

Revogação de privilégios: Em alguns casos, interessa conceder um privilégio temporário a um usuário. Por exemplo, o proprietário de uma relação pode querer conceder o privilégio SELECT a um usuário para uma tarefa específica e depois revogar aquele privilégio quando a tarefa estiver completada. Por isso, é necessário um mecanismo para a revogação de privilégios. Em SQL, um comando REVOKE é introduzido com o intento de cancelar privilégios.

Controle de acesso obrigatório e para segurança multi-nível: Neste método, o usuário não tem um meio termo, ou ele tem ou não tem privilégios, sendo utilizado normalmente em BD que classificam dados de usuários, onde é necessário um nível a mais de segurança. A maioria dos SGBDs não oferecem esse tipo de controle de acesso obrigatório, ficando com os controles discricionários ditos anteriormente. Normalmente são utilizados em sistemas governamentais, militares ou de inteligência, assim como industriais e corporativas.

As classes de segurança típicas são altamente sigilosas (top secret, TS), secreta (secret, S), confidenciais (confidential) (C) e não Classificada (unclassified, U), em que TS é o nível mais alto e U é o mais baixo. De uma forma geral, os mecanismos de controle de acesso obrigatório impõem segurança multinível, pois exigem a classificação de usuários e de valores de dados em classes de segurança e impõem as regras que proíbem o fluxo de informação a partir dos níveis de segurança mais altos para os mais baixos.

Controle de acesso baseado em papéis: É uma abordagem para restringir o acesso a usuários autorizados e uma alternativa aos sistemas de controles de acesso do tipo MAC e DAC. O conceito de controle de acesso baseado em papéis surgiu com os primeiros sistemas computacionais multiusuários interativos. A idéia central do RBAC é que permissões de acesso são associadas a papéis, e estes papéis são associados a usuários. Papéis são criados de acordo com os diferentes cargos em uma organização, e os usuários são associados a papeis de acordo com as suas responsabilidades e qualificações. Vários indivíduos podem ser designados para cada papel. Os privilégios de segurança comuns a um papel são concedidos ao nome dele, e qualquer indivíduo designado para esse papel automaticamente teria esses privilégios concedidos.

Page 16: BD_Administracao.doc

A separação de tarefas é um requisito importante em diversos SGDBs. É necessária para impedir que um usuário realize sozinho o trabalho que requer o envolvimento de outras pessoas. A exclusão mútua de papéis é um método que pode ser implementado com sucesso.

Outro aspecto relevante nos sistemas RBAC são as restrições temporais possíveis que podem existir nos papéis, como o tempo e a duração das ativações de papéis e o disparo temporizado de um papel por uma ativação de outro papel. O uso se um modelo RBAC é um objetivo altamente desejado solucionar os principais requisitos de segurança das aplicações baseadas na web.

Controle de acesso utilizando Triggers: Com a utilização das Triggers é possível criar mecanismos de segurança mais complexos que podem ser disparados cada vez que um evento é chamado. O comando Insert na tabela é exemplo de um evento que pode ser usado para disparar uma Triggers, além disso, as mesmas podem ser disparadas antes ou depois de comando especificado com o objetivo de prover maior rigor no controle de segurança. Se o comando executado pelo usuário não for validado pela Triggers, um erro é sinalizado do corpo da própria Triggers para impedir que a tabela seja modificada indevidamente.

Controle de acesso utilizando Views: As views constituem um outro método de controle de acesso, normalmente utilizadas para restringir o acesso direto aos dados. Com a view é possível permitir acesso de usuário concedendo privilégios, ocultar linhas e colunas de informações confidenciais ou restritas residentes na tabela original das indicações do SQL. Os privilégios e concessões são definidos somente na view e não afetam a tabela base sendo o acesso dos usuários delimitado pela view, a qual é gerada criando um subconjunto de dados na tabela referenciada.

A opção With Verification provê maior segurança porque não permite ao usuário modificar as linhas de tabela sem ter privilégios de leitura dentro da view.

Perfil: refere-se a uma coleção de atributos que são aplicados a um usuário, permitindo um único ponto de referência para qualquer um dos muitos usuários que compartilham dos mesmos atributos.

http://www.diegomacedo.com.br/conceitos-sobre-seguranca-em-banco-de-dados/http://www.cce.puc-rio.br/sitecce/website/website.dll/folder?cOferec=2174

Tunning de Banco de Dados

Tuning diz respeito ao ajuste do SGBD para melhor utilização dos recursos deste, provendo um uso eficaz e eficiente do SGBD, maximizando seu desempenho e estabilidade. Os objetivos da sintonia (ou tuning) são os seguintes:

fazer com que as aplicações sejam executadas mais rapidamente, diminuir o tempo de resposta de consultas/transações e melhorar o desempenho geral das transações.

A linha divisória entre o projeto físico de um banco de dados e sua sintonia é muito pequena. As mesmas decisões de projeto são revisadas na fase de sintonia, que é um ajuste continuado do projeto. As informações de entrada para o processo de sintonização incluem estatísticas relacionadas a diversos fatores. Em particular um SGBD pode coletar internamente as seguintes estatísticas:

tamanho de tabelas individuais, número de valores distintos em uma coluna, número de vezes que uma consulta ou transação em particular é submetida/executada em um

intervalo de tempo. Os tempos necessários para as diferentes fases de processamento de consultas.

Page 17: BD_Administracao.doc

Essas e outras estatísticas criam um perfil do conteúdo e do uso de banco de dados. Outras informações obtidas a partir do monitoramento das atividades do sistema de banco de dados incluem as seguintes:

estatísticas de armazenamento: dados a respeito da alocação de armazenamento para espaço de tabelas, espaço de índices e portas de buffer.

estatísticas de desempenho de entrada/saída: atividade total de leitura/escrita (paginação) do disco.

estatísticas de processamento de consultas: tempos de execução de consultas, tempos de otimização durante a otimização de consultas.

estatísticas relacionadas a bloqueios/registro de log: taxas de definição de diferentes tipos de bloqueios, taxas de desempenho de transações e registros de log de atividades.

Muitas dessas estatísticas acima se referem a transações, ao controle de concorrência e a recuperação de dados. Mas a sintonia de bancos de dados envolve tratar diretamente os seguintes tipos de problema: como evitar excessivas disputas por bloqueios, aumentando, de modo, a concorrência entre as transações, como minimizar a sobrecarga de registrar logs e o armazenamento desnecessário de dados, como otimizar o tamanho do buffer e o escalonamento de processos e, finalmente, como alocar recursos tais como discos, memória e processos para uma utilização mais eficiente.

A maioria desses problemas mencionados pode ser resolvida por meio de ajuste apropriado de parâmetros físicos do SGBD, da alteração das configurações de dispositivos, da alteração de parâmetros do sistema operacional e de outras atividades similares.

Sintonia de Índices: A escolha inicial de índices pode precisar de uma revisão pelas seguintes razões: certas consultas podem demorar demais para serem executadas por conta da ausência de um índice, certos índices podem, absolutamente, não ser utilizados e certos índices podem estar causando sobrecarga excessiva porque são baseados em um atributo que constantemente sofre alterações. O objetivo da sintonia é avaliar dinamicamente os requisitos, os quais variam durante diferentes períodos do mês ou da semana, e reorganizá-los de forma a proporcionar melhor desempenho global. A exclusão e a criação de novos índices são sobrecarga que pode ser justificada em função de melhorias de desempenho. A atualização de uma tabela geralmente é suspensa enquanto um índice estiver sendo excluído ou criado

Sintonia de Consultas: O otimizador constrói o plano de execução a partir da consulta SQL, tendo uma margem limitada de opções sobre os operadores utilizados. Uma consulta SQL mal escrita leva o otimizador a utilizar um caminho que nem sempre é o mais adequado, o que gera um plano de execução que normalmente compromete o desempenho. Em ambientes nos quais existem inúmeras consultas construídas dessa forma e que são executadas freqüentemente, a conseqüência acaba sendo drástica, dificultando o uso eficiente da maior parte dos recursos disponíveis e deixando de atender em tempo outros processos críticos cujas execuções são rápidas e necessitam de prioridade. A justificativa para se usar a técnica de reescrita de consultas como uma das primeiras a ser utilizada, é que essa técnica afeta apenas uma consulta específica, não se propagando para outras aplicações que acessam as tabelas envolvidas na instrução SQL.

Ajuste de Alocação de Memória: Alocação apropirada de recursos de memória para as estruturas do SGBD pode trazer efeitos posistivos na performance. A alocação devida de recursos de memória melhoram a perfomance do cache, reduzindo a paginação, definindo corretamente o buffer do Banco de Dados (shared_pool, buffer cache, log buffer, etc.). Observe o buffer hit ratios. Coloque os objetos grandes e muito acessados em memória para prevenir freqüente reloads.

Ajuste dos caminhos de acessos: A base de dados tem que encontrar os dados em ordem para retorná-lo para o usuário realizar a pesquiza. A chave para afinar as pesquisas é manter os registros e os indices da base de dados contiguos.

Page 18: BD_Administracao.doc

Ajustes de I/O e Estrutura Física: I/O de disco tende a reduzir a performance de várias aplicações de software. O ajuste de I/O e estrutura fisíca envolve a distribuição de dados em discos diferentes, evitando assim a contenção de dados. Arquivos de Banco de Dados precisam estar com o tamanho correto e em um local que prove um mínimo de I/O. Verifique também freqüentes sorts de disco, full table scans, falta de índices, row chaining, fragmentação de dados, etc. Estude os eventos que acontecem no banco relativo à locks, latches e wait com cuidado e elimine-os quando possível.

Ajustes das Plataformas (S.0.): Monitore e defina com cuidado os parâmetros de CPU, I/O e memória de forma a melhorar a performance do Banco. Pois conforme a versão do gerenciado para um determinado sistema operacional pode haver parâmetros diferentes de ajustes.

Ajustes da Topologia de Acesso: Depois dos ajustes referentes aos bancos de dados e plataformas operacionais, será necessário realizar ajustes na topologia de acesso as aplicações para se obter o desempenho desejado necessário para a camada cliente ( aplicações com estrututras em 3 camadas).

O Tuning do Projeto de Banco de Dados: Uma má performance geralmente é resultado de uma modelagem ruim. É importante se preocupar com a modelagem, pelo menos até a 3FN. Tabelas existentes podem ser juntadas (Desnormalizadas) porque determinados atributos de duas ou mais tabelas são freqüentemente necessárias ao mesmo tempo.

Otimizadores

RBO – Otimizadores Baseados em Regras

Otimizadores com base em regras (RBO) abandonam o processo de otimização uma vez que tenham encontrado uma primeira forma aplicável das regras, sem verificar se outros mecanismos podem ser aplicados. Uma das regras, por exemplo, determina que é preferível utilizar um índice do que fazer ler cada linha da tabela, chamada varredura de tabela (full table scan – FTS). Essa regra não levava em conta os dados em si, por exemplo, suponha que haja um índice em uma coluna e todas as 100.000 linhas dessa tabela contenham o mesmo valor exato nessa coluna. Ler os blocos de um índice e, então, ler cada linha na tabela exigiria mais trabalho que simplesmente ler cada linha na tabela. O problema do RBO é que ele não considera distribuição de dados. (obsoleto)

CBO – Otimizadores Baseados em Custo

Otimizadores com base em custos (CBO) utiliza estatísticas sobre os dados para ajudar a tomar melhores decisões fundamentadas do que um conjunto predefinido de regras poderia tomar.