Arquivos

Archive for julho \24\UTC 2010

Dicionário de Dados

24 de julho de 2010 4 comentários

O dicionário de dados é um metadados, ou seja, dados a respeito de dados. Ele descreve i banco tanto fisicamente como logicamente, além de todo o seu conteúdo. Definições sobre os usuários, segurança, restrições e desempenho está tudo no dicionário de dados. Os segmentos que compõem o dicionário de dados estão no tablespaces SYSTEM e SYSAUX.

Poderemos ver o dicionário de dados de três formas diferentes, de acordo com os prefixos DBA_, ALL_ e USER_.

A visão USER_ da acesso apenas aos objetos de propriedade do usuário que esteja executando. A visão ALL_ não da direito ao usuário de ver todo o dicionário de dados como o nome pode dar a subentender, mas dá direito ao usuário de ver os seus objetos além de ver as linhas criadas por outros usuários que tenha recebido permissão para ver. Já a visão DBA_ da acesso a todas as linhas do dicionário de dados.

CategoriasSem categoria

Estruturas Lógicas

24 de julho de 2010 Deixe um comentário

O Oracle chama de segmento qualquer estrutura que contenha dados. Existe diversos tipos de segmentos, como os segmentos de tabelas, índices e undo. O conjunto de um o mais segmentos é chamado de tablespace.

Alguns segmentos são necessários no momento da criação do banco, que são os que compõem o dicionário de dados. Estes segmentos são armazenados nos tablespaces SYSTEM e SYSAUX.

CategoriasSem categoria Tags:,

Estruturas Físicas

24 de julho de 2010 Deixe um comentário

Um servidor Oracle é composto da instância e do banco de dados. Vimos anteriormente que a instância é composta por estruturas de memória (SGA) e processos. Agora iremos ver um pouco mais sobre o banco de dados. Vamos começar com as estruturas físicas.

Um banco de dados Oracle é composto por três arquivos, que são: controlfiles, arquivo de log de redo online e os arquivos de dados.

O controlfile é vital para o funcionamento do Oracle, ele guarda as localizações dos arquivos do log de redo online e dos arquivos de dados. Armazena também informações necessárias para a integridade do banco.

Todo banco de dados tem que ter pelo menos um banco de dados. Mas, como um bom DBA deveremos sempre criar várias cópias, pois se uma cópia for danificada o banco conseguirá sobreviver. E não precisamos nos preocupar em manter todas essas cópias sincronizadas, o Oracle cuida disso. Apenas precisamos dizer quantas cópias e onde coloca-las e o Oracle se encarregará do resto.

Todo banco deve também ter pelo menos dois arquivos de log de redo online. Mas, no mesmo caso do controlfile, é sempre bom criar várias cópias de cada um dos arquivos.

O arquivo de log de redo online armazena, em ordem cronológica, todas as modificações feitas ao banco de dados. Tornando assim possível que o banco de dados recupere todas as modificações que foram feitas.

O log de redo consiste de grupos de arquivos de log de redo, sendo que cada arquivo é conhecido como membro.

O Oracle requer pelo menos dois grupos com um membro em cada, mas poderemos criar mais grupos por motivos de desempenho e mais membros por motivos de segurança. A razão pela qual o Oracle requer dois grupos é que enquanto um grupo é o “atual”, ou seja, todas as modificações estão sendo realizadas nele, esta sendo feito um backup do outro grupo.

Os arquivos de log de redo online tem um tamanho fixo, assim, quando os membros que compõem um certo grupo estão lotados, o LGWR faz um switch de log. Esse switch de log faz com que o segundo grupo se torne o “atual” enquanto está sendo feito o backup do grupo que estava lotado e assim por diante.

Os arquivos de dados são depósitos para os dados. Precisamos ter pelo menos dois desses arquivos na criação do banco, mas teremos vários outros quando o banco for ao ar e começar a realizar operações nele.

CategoriasSem categoria Tags:, ,

Processos

24 de julho de 2010 Deixe um comentário

Como já foi dito anteriormente, um banco de dados Oracle de ter no mínimo cinco processos que são:

SMON, System Monitor

A sua principal função é abrir a conexão entre a instância e o banco de dados, além realizar funções de monitoramento e organização.

PMON, Process Monitor

Se certifica se as seções de usuários tenha alguma problema. Um exemplo bastante prático disso é se um PC de um usuário reiniciar enquanto estava logado no banco de dados.

DBWn, Database Writer

Lembra-se que as sessões nunca atualizam os dados direto no disco? Então o DBWn é responsável por todas as operações de escrita no disco. O Oracle tenta manter as operações de I/O no disco o mínimo o possível, uma vez que se assume que isso é ruim para o desempenho do banco.

LGWR, Log Writer

O LGWR tem a responsabilidade de aplicar todas as modificações que são realizadas no cache do buffer do banco de dados para o log de redo online. Ao contrário do DBWn, o LGWR faz a escrita no disco sempre que possível, do buffer de log na SGA para o log de redo online. Isso garante com que o Oracle nunca perca quaisquer dados.

CKPT

Em intervalos de tempos regulares o CKPT sincroniza a instância com o banco de dados.

CategoriasSem categoria Tags:, , , , ,

Arquitetura

17 de julho de 2010 Deixe um comentário

Em um servidor com o Oracle instalado existe duas entidades: a instância e o banco de dados.

Em ambientes normais a relação é de um pra um. Mas em ambientes corporativos um pouco mais robustos isso muda. A relação pode ser de muitos para um. Ou seja: existe diversas instâncias em vários servidores usando o mesmo banco de dados em um sistema com disco compartilhado. Isso se chama Real Application Clusters ou apenas RAC. O RAC melhora o desempenho, tolerância a erros e maior escalabilidade. Também é possível que uma instância conectar-se a diversos bancos.

Primeiro vamos falar um pouco da instância. Ela consiste de estruturas de memória e processos. Ela existe na memória RAM e na CPU do servidor, ela pode ser inicializada e finalizada. Já o banco de dados consiste de arquivos físicos no disco e existe indefinidamente até ele seja apagado de propósito.  A relação entre as estruturas físicas e lógicas é gerencia pelo dicionário de dados.

A instância consiste do System Global Area, ou apenas SGA e também de alguns processos. O SGA conterá no mínimo três estruturas, que são: o pool compartilhado, o cache de buffer do banco de dados e o buffer de log. Poderá também ter opcionalmente: pool extenso, pool Java e o pool de streams. Algumas dessas estruturas tem um tamanho fixado assim que você inicia elas. Outras você poderá modificar quando necessário.

Vamos falar agora um pouco sobre as estruturas que compõem a SGA.

Pool compartilhado

Existe duas estruturas principais; o cache da biblioteca e o cache do dicionário de dados. O cache da biblioteca armazena os códigos que são recentemente executados, isso por que o código é algo lento que o Oracle realiza. Ao armazenar então esse código já interpretado o desempenho é aprimorado. O cache do dicionário de dados armazena descrições de tabelas, índices, usuários e etc, ao se armazenar isso também o desempenho é aprimorado.

Cache de buffer do banco de dados

É o onde o Oracle executa SQL. Uma vez que os usuários nunca escrevem diretamente no disco e sim no cache de buffer do banco de dados. Diminuindo assim a necessidade de I/O no disco.

Buffer de log

Armazena todas as modificações no cache de buffer do banco de dados.

O tamanho das estruturas do SGA deve ser grande o suficiente mas, não grande demais para não haver desperdício de memória e nem degradar o desempenho.

Além das estruturas que compõem o SGA a instância do banco terá no mínimo cinco processos que irei falar no próximo post.

CategoriasSem categoria Tags:, , , , ,
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.