• Nenhum resultado encontrado

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE SERGIPE - FANESE NÚCLEO DE PÓS-GRADUAÇÃO E EXTENSÃO NPGE

N/A
N/A
Protected

Academic year: 2021

Share "FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE SERGIPE - FANESE NÚCLEO DE PÓS-GRADUAÇÃO E EXTENSÃO NPGE"

Copied!
12
0
0

Texto

(1)

FACULDADE DE ADMINISTRAÇÃO E NEGÓCIOS DE SERGIPE - FANESE NÚCLEO DE PÓS-GRADUAÇÃO E EXTENSÃO – NPGE

CURSO DE PÓS-GRADUAÇÃO “LATO SENSU”

ESPECIALIZAÇÃO EM BANCO DE DADOS

ESTRUTURA DE MEMÓRIA E DE ARMAZENAMENTO DO

ORACLE 11g

LUCIELMO DE AQUINO SANTOS

ARACAJU – SE 2013

(2)

LUCIELMO DE AQUINO SANTOS

ESTRUTURA DE MEMÓRIA E DE ARMAZENAMENTO DO

ORACLE 11g

Trabalho de Conclusão da disciplina de Preparação para Certificação (OCA), do curso de Especialização em Bancos de Dados – FANESE, submetido como avaliação de conclusão do referido módulo.

Orientação: Fábio Soares

ARACAJU – SE 2013

(3)

ESTRUTURA DE MEMÓRIA E DE ARMAZENAMENTO DO

ORACLE 11g

Lucielmo de Aquino Santos1 Orientação: Fábio Soares²

RESUMO

O tema a ser abordado nesse artigo é a Estrutura de Memória e Armazenamento, o banco de dados a ser mencionado é o Oracle e a versão é a 11g. As informações sobre algumas estruturas e suas divisões, bem como alguns exemplos.

PALAVRAS-CHAVE:

Estrutura de memória; SGA, PGA, Armazenamento.

ABSTRACT

The topic to be addressed in this article is the Structure of Memory and Storage, the database is to be mentioned and the Oracle version is 11g. Information on some structures and its divisions, as well as some examples.

KEYWORDS:

Memory structure, SGA, PGA, Storage.

1.INTRODUÇÃO

O Oracle aloca uma área de memória e executa os processos em segundo plano, sempre que uma instância é iniciada, dentre as informações que são armazenadas temos o código do programa, informações sobre cada sessão, mesmo que não esteja ativa no momento, informações sobre a execução do programa, por exemplo, o status de uma query, bloqueio de dados compartilhados entre processos, dados em cache, blocos de dados e registro de redo existentes no disco. As Estruturas de memórias no Oracle incluem SGA, PGA, UGA e área de software de código. Dentre as novidades de armazenamento, a Oracle vem incluindo diversas funcionalidades, em relação a segurança, desempenho, alta disponibilidade e baixa de custos.

¹ Pós-Graduando em Banco de Dados – FANESE. E-mail: lucielmo@gmail.com

² Mestre em Informática. E-mail: fabsoasilva@gmail.com

(4)

2.SGA (SYSTEM AREA GLOBAL)

A SGA é compartilhada por todos os servidores e processos, nela contem informações e dados de controle de uma instância de banco de dados Oracle. Ao iniciar uma instância no Oracle, a memória para uma SGA é alocada automaticamente e quando a instância é parada a memória é recuperada pelo sistema operacional, a SGA é específica para cada instância. Todos os processos de banco de dados que estejam rodando em segundo plano podem ler informações contidas na SGA da instância.

A SGA possui informações gerais sobre o status do banco e da instância, bem como armazena dados do usuário e comunicações entre processos. Os grupos de memória utilizados para satisfazer uma classe de pedidos de atribuição de memória são conhecidos como componentes PIG.

Os componentes PIG mais importantes são:

2.1.CACHE DE BUFFER DO BANCO DE DADOS

Nesse local contém cópias dos blocos de dados lidos a partir de arquivos de dados.

2.2.REDO LOG BUFFER

No redo contém informações sobre as alterações feitas no banco, dados necessários para reconstruir, ou refazer operações como insert, update, delete, create, alter ou drop. Redo Log são usadas para a recuperação de dados quando necessário. Os processos do banco de dados copiam as entradas para o buffer de redo log dentro da SGA, ocupando um espaço contínuo, sequencial. Logicamente, o processo escreve o redo log buffer para um arquivo.

2.3.SHARED POOL

Na shared pool contém o cache de biblioteca (áreas comuns de SQL, áreas privadas, PL/SQL, procedimentos e estruturas de controle), cache de dicionário (coleção de tabelas e pontos de vista que contêm informações de referência sobre o banco, estruturas e usuários), cache de resultados (guarda os resultados de consultas SQL e PL/SQL), buffers de mensagens de execução paralela e estruturas de controle.

2.4.LARGE POOL

Proporcionam grandes alocações de memória para memória de sessão para o servidor compartilhado e o Oracle XA interface (utilizado quando as transações interagem com mais de um banco de dados), processo de I / O (entrada e saída) do servidor, operações de backup e restore do banco de dados. É interessante observar que para evitar a sobrecarga de desempenho causada pela redução do cache compartilhado, o banco de dados Oracle pode utilizar a shared pool. Além disso, a memória para os processos do servidor de E / S, backup e restore e são alocados em buffers pequenos.

2.5.JAVA POOL

(5)

Usado para toda a sessão específica de código Java e dados dentro da JVM (Java Virtual Machine). Utilizada em diferentes formas, dependendo do modo em que a base de dados estiver executando. Java Pool Advisor provê informações sobre a memória cache da biblioteca que é usado para o Java, bem como prevê as mudanças que o tamanho do Java Pool pode afetar a taxa de análise.

2.6.STREAMS POOL

Streams pool é exclusivamente utilizada pela Oracle Streams, essa área armazena uma fila de mensagens em buffer, disponibiliza memória para os processos de Stream. O valor inicial padrão é zero, e vai crescendo dinamicamente de acordo com o que o Oracle Streams necessita, porém pode ser configurado manualmente pelo administrador.

3.VISÃO GERAL DA PGA

Program Global Area é um local da memória não compartilhada que contêm dados e informações de controle exclusivamente para uso por um processo de Oracle, é alocado quando um processo Oracle é iniciado.

Para cada processo existe um PGA, contudo forma-se uma coleção que é conhecida como total PGA da instância, portanto quando o banco é inicializado o tamanho da instância é definido, não é definido nas PGAs individuais. A memória da PGA é dividida nas seguintes áreas:

3.1.USER GLOBAL AREA (UGA)

A UGA controla os comandos SQL que a sessão está executando e processando e faz parte da SGA, quando em um ambiente compartilhado a UGA é movida para dentro da SGA e compartilhada para todos os processos, pois a infraestrutura da SGA permite que o Shared Pool, Large Pool, Streams Pool, Java Pool e o DB buffer Cache sejam alterados sem a necessidade de baixar a instância.

A criação e gerencia de estruturas de memória são feitas através de parâmetros de inicialização, assim ocorre no banco de dados Oracle, para realizar tal gerenciamento é mais apropriado que o Oracle ajuste-os automaticamente, porém isso pode ser configurado manualmente utilizando os parâmetros MEMORY_TARGET (tamanho inicial de memória), MEMORY_MAX_TARGET (tamanho máximo que pode alcançar).

3.2.MEMÓRIA SESSÃO

Essa memória armazena as variáveis da sessão, como informações do logon, entre outras informações relacionadas à sessão que foi criada. A memória de sessão é compartilhada para um servidor compartilhado.

(6)

3.3.PRIVATE SQL AREA

No private SQL Area, estão contidas algumas informações do estado da execução de consultas, entre outras. Cada sessão que emite uma determinada instrução SQL terá sua private. Entretanto, se o usuário enviar a mesma instrução SQL ele provavelmente terá sua própria private que utiliza uma área de shared sql.

A localização de um Private SQL Area depende do tipo de ligação estabelecida para a sessão, caso a sessão esteja conectada em um servidor dedicado fica em PGA, caso esteja conectado por meio de um servidor comum é mantido na PIG.

Private SQL Area subdivide-se nos seguintes tópicos:

3.3.1.CURSORES E SQL AREAS

Cursores são alças para específicas áreas privadas e são utilizados como um recurso chamado durante toda a execução do programa, os também conhecidos como cursores recursivos que são utilizados para algumas instruções SQL utilizam também o mesmo recurso que os cursores.

A gestão de Private SQL Area é de responsabilidade do processo do usuário. O processo de alocar e desalocar irão depender da ferramenta e aplicação que estiver executando. É importante salientar que existe uma limitação quanto ao número que um processo de usuário pode alocar de Private SQL Area, existe um parâmetro de inicialização OPEN_CURSORES que por default vem setado com o valor 50.

3.3.2.COMPONENTES PRIVATE AREA SQL

A private área sql de um cursor é dividida em duas áreas, onde os ciclos são diferentes:

 The persistent area: contem valores ligados a variáveis, somente libera quando o cursor está fechado.

The runtime área:tempo de execução ainda contem as seguintes estruturas:

o Informações sobre o status de execução de consulta;

o Work Area SQL: são alocadas conforme necessário para uso intensivo de memórias em operações como ordenação.

DML: onde a área de tempo de execução é liberada quando a instrução termina a execução, em consultas a liberação somente ocorre quando todas as linhas forem lidas ou a consulta for cancelada.

3.4.SQL WORK AREAS

São alocados para suportar memória intensiva, em operações como os seguintes:

Sort-based operators (order by, group-by, rollup, window function)

Hash-join

Bitmap merge

(7)

Bitmap create

Por exemplo, um order by utiliza uma área de trabalho específica para efetuar o tipo de memória de um determinado conjunto de linhas conhecida por zona de classificação, bem como uma operação de hash-join utiliza outra área que pode ser chamada de área de hash, para construir uma tabela hash de sua entrada. Caso a quantidade de dados a ser processados pelas duas operações não se encaixarem em uma área o dado de entrada é dividido em pequenos pedaços, permitindo assim que alguns dados sejam processados na memória, e o restante seja derramado para o armazenamento temporário em disco.

O tamanho de um Work Area pode ser controlado e ajustado, o banco de dados ajusta automaticamente quando o gerenciamento de memória PGA está ativado.

4.ARMAZENAMENTO NO ORACLE (ESTRUTURA LÓGICA E FÍSICA)

O Oracle aloca logicamente em data blocks, extents, segments e tablespaces. Fisicamente o Oracle tem os data files.

4.1.DATA BLOCK

Data block, conhecido também por Logical blocks, Oracle blocks ou Pages. Cada data block corresponde a um número específico de bytes fisicamente no disco, portanto eles são o maior nível de granularidade quando se fala em estrutura de armazenamento Oracle.

O data block é composto por:

 Header (cabeçalho)

No header estão às informações gerais de um data block, como tipo de segmento (dados ou índice) e endereço do bloco.

 Table directory (diretório de tabela)

Guarda informações sobre a tabela, tendo linhas no bloco.

 Row directory (diretório de linha)

As informações sobre as rows do block ficam aqui. É importante salientar que o Oracle trabalha da seguinte forma quanto ao espaço alocado pela row, este espaço não é recuperado quando a linha for excluída, exemplo, caso um bloco esteja vazio, mas tinha até 30 linhas, ele continuará alocando os bytes necessário no header para o row directory e esse espaço somente será reutilizado pelo Oracle quando novas linhas são inseridas no block.

 Overhead

O header, table directory e row directory coletivamente são chamados de sobrecarga. Sobrecarga é fixado em tamanho e o overhead é variável.

(8)

 Row data

Contendo informações sobre dados de tabela ou índice.

 Free espace

Usado para inclusão de linhas novas e atualização que necessitam de espaço, pode ser gerenciado automaticamente ou manualmente, é normal se utilizar do gerenciamento automático por seus benefícios oferecidos, tais como a facilidade de uso, a melhor utilização do espaço devido a variação de tamanhos e agilidade na execução a variações de acesso simultâneo. Para habilitar o gerenciamento automático basta especificar quando for criar uma tablespace, sendo assim, todos os segmentos criados posteriormente herdarão essa configuração.

4.2.EXTENTS

O conjunto de blocos de dados gera uma extent, uma extent inicial de um segment é criada e alocada assim que uma tabela for criada no banco de dados, a extent é criada com um determinado número de blocos de dados, caso tais blocos sejam todos utilizados, o Oracle automaticamente aloca uma extent incremental para o segment. As extents poderão ser allocated ou deallocated, vejamos como isso acontece:

o Allocated: dependerá da configuração da tablespace, por exemplo, caso seja gerenciada localmente, o Oracle fará a busca de espaço livre e atribui uma nova extent e em seguida procura o arquivo de dados que tenha um número necessário de blocos livres.

o Deallocated: é recomendado utilizar o Segment Advisor que ajudará a perceber que um objeto tem espaço livre para recuperação com base no nível de fragmentação do espaço. Quando as extents são liberadas o Oracle modifica o bitmap no arquivo de dados (quando tablespace é gerenciado manualmente) ou atualiza o dicionário de dados, assim as extents recuperam o espaço disponível.

4.3.SEGMENTS

Segments é um conjunto de extents contendo todos os dados para estrutura de armazenamento lógico especifico dentro de um tablespace, por exemplo, cada tabela aloca uma ou mais extents que formam um segment table e para cada índice é atribuído uma ou mais extents formando assim um segment index. Como o Oracle trabalha com alocação de extents, quando a mesma está cheia, automaticamente o banco aloca outra extent para o segment.

4.4.TABLESPACE AND DATA FILES

Logicamente os dados são armazenados em tablespace e fisicamente em data files que são associados a uma tabela. Tablespace e data file têm uma relação muito grande, porém diferenciam com suas particularidades e funcionalidades:

Em um banco de dados contem no mínimo duas tablespace (unidade de armazenamento lógica), que armazenam todos os dados do banco, essas duas tablespace default são chamadas de SYSTEM e SYSAUX, porém existe outra

(9)

opcional que é denominada TEMP. Para cada tablespace é referenciado um ou mais data file (armazenamento físico), no entanto os data files armazenam os dados que constituem cada tablespace do banco, ou seja, uma tablespace pode referenciar um ou vários data file, porém um data file somente poderá referenciar uma determinada tablespace.

5.CONSIDERAÇÕES FINAIS

A estrutura de memória e armazenamento no Oracle, basicamente subdivide em SGA e PGA, ambas são áreas globais as quais existem suas características. Dento de cada uma dessas duas, existem as subdivisões, aqui foi descrita cada uma dessas. A Oracle disponibiliza na versão 11g, diversas vantagens quando se trata de armazenamento, pensando sempre no cliente, focando em segurança, desempenho e alta disponibilidade.

6.LISTA DE ABREVIAÇÕES

1. PGA: Program Global Area.

2. SGA: System Global Area.

3. UGA: User Global Area.

4. JVM: Java Virtual Machine.

5. JSR: Java Specification Requests.

6. SLA: Service Level Accord

(10)

7. FIGURAS

Fonte: http://docs.oracle.com/cd/E14072_01/server.112/e10713/memory.htm

Esta imagem mostra um retângulo arredondado canto grande representando o PIG. Dentro do SGA, dispostos em duas linhas de quatro, são arredondados canto-caixas de Java pool, the buffer cache, the redo buffer, the result cache, the shared pool, the Streams pool, e the large pool. A última caixa tem o nome de outros componentes. Fora do SGA, com setas indo e voltando para o SGA, são caixas que representam processos de servidor e de processos de fundo. Cada processo também mostra uma seta que vai para trás e para uma caixa que representa a sua própria PGA. Cada caixa de PGA é para o lado da sua caixa do processo.

Fonte: http://docs.oracle.com/cd/E14072_01/server.112/e10713/img_text/cncpt217.htm

(11)

A imagem acima mostra a Estrutura de Memória do Oracle Database.

REFERÊNCIAS BIBLIOGRÁFICAS

ABNT. NBR 6034: informação e documentação: Índice: apresentação. Rio de Janeiro, 2004.

4 p.

ABNT. NBR 6023: informação e documentação: elaboração: referências. Rio de Janeiro, 2002. 24 p.

Oracle Database 11g DBA Handbook – ISBN 978-0-071-496636, Bob Bryla e Kevin Loney, Techbooks.

(12)

http://dicasdeumdba.wordpress.com/2011/04/19/arquitetura-oracle-database-11g-resumo- estruturas-de-memoria/. Acessado em 24/01/2013

http://docs.oracle.com/cd/E14072_01/server.112/e10713/memory.htm. Acessado em 04/01/2013 http://docs.oracle.com/cd/E14072_01/server.112/e10713/img_text/cncpt217.htm. Acessado em 24/01/2013

http://docs.oracle.com/cd/E14072_01/server.112/e10713/memory.htm. Acessado em 24/01/2013 http://imasters.com.br/artigo/6612/oracle/o-novo-oracle-11g/. Acessado em 28/02/1988

http://docs.oracle.com/cd/B28359_01/server.111/b28318/physical.htm#g21431. Acessado em 01/04/2013

Referências

Documentos relacionados

A Psicologia, por sua vez, seguiu sua trajetória também modificando sua visão de homem e fugindo do paradigma da ciência clássica. Ampliou sua atuação para além da

(grifos nossos). b) Em observância ao princípio da impessoalidade, a Administração não pode atuar com vistas a prejudicar ou beneficiar pessoas determinadas, vez que é

nesta nossa modesta obra O sonho e os sonhos analisa- mos o sono e sua importância para o corpo e sobretudo para a alma que, nas horas de repouso da matéria, liberta-se parcialmente

De seguida, vamos adaptar a nossa demonstrac¸ ˜ao da f ´ormula de M ¨untz, partindo de outras transformadas aritm ´eticas diferentes da transformada de M ¨obius, para dedu-

•   O  material  a  seguir  consiste  de  adaptações  e  extensões  dos  originais  gentilmente  cedidos  pelo 

Com o objetivo de compreender como se efetivou a participação das educadoras - Maria Zuíla e Silva Moraes; Minerva Diaz de Sá Barreto - na criação dos diversos

Neste tipo de situações, os valores da propriedade cuisine da classe Restaurant deixam de ser apenas “valores” sem semântica a apresentar (possivelmente) numa caixa

Figura 4.10 – Fluxo de CO2 para as áreas de footprint de três torres localizadas em unidades experimentais submetidas a diferentes tipos de manejo pastoril Rotativo,