Pedro F. Carvalho Analista de Sistemas [email protected] www.pedrofcarvlho.com.br Aula 2 – Arquitetura Oracle Instancia Oracle Uma instância Oracle é composta de estruturas de memória e processos. Sua existência é temporária na memória RAM e nas CPUs. Quando você desliga a instância em execução, todos os vestígios de sua existência desaparecem. O banco de dados é composto de arquivos físicos no disco. Esteja ele em execução ou parado, os arquivos permanecem. Assim, o tempo de vida da instância é apenas o período de usa permanência na memória: ela pode ser iniciada e parada. Por outro lado, o banco de dados, uma vez criado, persiste indefinidamente até que você deliberadamente exclua os arquivos que estão associados ao banco de dados. Os processos que compõem a instancia são conhecidos como processos de segundo plano BACKGROUND, porque estão presentes e em execução o tempo todo enquanto a instancia esta ativa. Esses processos são autoadministrado, embora em alguns casos o DBA possa influenciar alguns deles. • • • • Um usuário interage com um processo de usuário Um processo de usuário interage com um processo de servidor (PGA) Um processo de servidor interage com uma instância (SGA) Uma instância interage com o Banco de Dados SGA – System Global Area Essa é a área alocada na inicializção da instância e liberada no desligamento, ela é compartilhada e seus elementos poderm ser redimensionados enquanto a instância esta em execução, tanto automaticamente ou com a intervenção de um DBA. Dinâmica e definida pelo parâmetro SGA_MAX_SIZE PGA – Program Global Area OU Area Global de Sistema É uma área privada da sessão, ela inicia-se quando um processo de servidor é estabelecido, nela são armazenados variáveis, endereços de rotinas e etc. Pedro F. Carvalho Analista de Sistemas [email protected] www.pedrofcarvlho.com.br Database Buffer Cache É uma area de trabalho no Oracle para de armazenamento de dados. Ao atualizar os dados, as sessões dos usuários não atualizam diretamente o no disco. Os blocos que conêm os dados de interess são primeiramente copiados no cache de Buffer. As alterações como inserção, exclusão e alteração são feiras primeiro nesta área. É uma área compartilhada a todos os usuários, seu tamanho pode ser ajustado dinamicamente e pode ser gerenciado automaticamente. O pocesso LRU(qual o meno utilizado) define em qual bloco de memória será copiado as informações do disco. Seus blocos de memórias podem ser : • • • • DIRTY (SUJO) quando a imagem do cache não é a mesma imagem do disco CLEAN (LIMPO) quando a imagem do cache é igual a do disco PINNED (FIXO) quando sessões tentam escrever no mesmo bloco, a uma espera FREE or UNUSED os blocos ainda não foram atualizados Suas informações são gravadas em disco pelo processo DBWRITER e tambem uando há muitos blocos sujos, existe outros casos em que os blocos são gravados em disc mas isso veremos mais isso a frente. Redo Log Buffer É uma área de memória que armazena todas as modificações relizadas em dados (instruções DM), essa área é a garantia de que os dados nunca serão perdidos, suas informações são gravadas nos arquivos de regolgs(veremos mais a frente). Essa área é pequena em relação a outras, pois eu armazenmento dura muito pouco tempo, por padrão é escolhido seu tamanho pelo numero de processadores na CPU. É ma area circular de armazenamento. O processo LOGWRITER grava informações nos arquivos de REDOLOG. A instrução commit faz com que seus dados sejam gravados nos arquivos de REDOLOG, quand seus arquivos estão com 1/3 cheios e antes de um DBWRITER gravar. Shared Pool A shared pool é uma porção de memória compartilhada que contém as áreas chamadas shared SQL, estruturas de memória compartilhadas que contêm os comandos SQL que estão sendo executados pelos múltiplos usuários conectados a um banco de dados. Essas áreas compartilhadas shared SQL contêm informações como o texto e a forma interpretada dos comandos SQL, a fase de análise dos comandos SQL e seus planos de execução, informações do dicionário de dados e de geradores de números seqüenciais. Uma única área shared SQL pode ser compartilhada por diversas aplicações que usam o mesmo comando definido na área compartilhada de comandos SQL, deixando assim mais área em memória disponível para os outros usuários e melhorando a performance de execução de um comando, já que o plano de execução já está definido e o ORACLE não precisa defini-lo novamente. A shared pool contém ainda o data dictionary cache, com as informações do dicionário de dados, e o sequence cache, com as informações dos geradores de números seqüenciais. Um cursor é um nome ou ponteiro para a memória associada a um comando específico. Muitas aplicações ORACLE tiram proveito dos cursores. Pedro F. Carvalho Analista de Sistemas [email protected] www.pedrofcarvlho.com.br Large Pool (opcional) Utilizado para armazenar grandes estruturas de memória que não estão relacionadas diretamente ao processamento de instruções SQL, como por exemplo blocos de dados copiados durante operações de backup e recovery. Seu tamanho é dinamico e pode ser gerenciado automticamente. Java Pool Utilizado para armazenar código Java, somente é necessário se sua paplicação for exectar procedures javas armazenadas no banco de dados Streams Pool Utilizado para manter estruturas de dados e controle do recurso Oracle Streams Servidores Compartilhados PROCESSOS DE SEGUNDO PLANO – BACKGROUND Processos em Segundo Plano - Os processos em segundo plano (background processes) de uma instância executam funções comuns que são necessárias para atender as solicitações de serviço de usuários simultâneos, sem comprometer a integridade e o desempenho do sistema. - Eles consolidam funções que, de outra forma, seriam tratadas por diversos programas Oracle executados para cada usuário. - Ele executam tarefas de I/O e monitoram outros processos Oracle para oferecer maior paralelismo, o que aumenta o desempenho e a confiabilidade. - Dependendo da configuração, uma instância Oracle pode incluir vários processos de segundo plano, no entanto cada instância inclui cinco processos de segundo plano fundamentais. São Eles: O Database Writer (DBW0) é responsável por gravar dados alterados do buffer cache do banco de dados nos arquivos de dados. O DBWriter grava quando possuir nenhum buffer livre, muitos buffer sujos, um checkpoint e m time de 3 segundos. Quando uma transação realiza um comit ele não faz nada. O Log Writer (LGWR) grava as alterações registradas no buffer de redo log nos arquivos de redo log. Sera usado quando um commit for emitido quando os arquivos de red estão 1/3 cheios e antes do DBWRITER ser utiliado O Monitor de Sistema (SMON, System Monitor) verifica a consistência no banco de dados e, se necessário, inicia a recuperação do banco de dados quando ele é aberto. O Monitor de Processo (PMON, Process Monitor) disponibiliza recursos se um dos processos Oracle falhar. Se sua sessão terinar de forma anormal, ele executará um processo de rollback O Checkpoint Process (CKPT) é responsável pela atualização das informações de status do banco de dados nos arquivos de controle e nos arquivos de dados, sempre que as alterações efetuadas no cache de buffer ficam registradas no banco de dados de forma permanente. Pedro F. Carvalho Analista de Sistemas [email protected] www.pedrofcarvlho.com.br O Recovery Process (RECO) Uma transação ditribida é uma transação que envolve atualização em dis u mais banco de dados, este processo viabiliza isso ex SQL > UPDATE EMPLOYEES SET SALARY = 900 UPDATE EMPLOYYES@EV SET SALARY = 800 Archive (Arch) processo que grava os arquivos de redolog nos arquivos de archive, ele grava quando um redolog esta cheio. ARQUIVOS DE DADOS *Arquivos de Dados (Data Files) - Os arquivos de dados contém os dados do banco, e eles são armazenados em tabelas definidas pelo usuário. Além disto, nos arquivos de dados também são armazenados o dicionário de dados, as imagens anteriores de dados alterados, índices e outros tipos de estruturas. Um banco de dados Oracle deve conter no mínimo um arquivo de dados. *Características dos Arquivos de Dados - Os arquivos de dados podem estar associados a apenas um banco de dados Oracle. Um ou mais arquivos de dados formam uma unidade lógica chamada tablespace. *Redo Logs - Os redo logs armazenam as mudanças efetuadas no banco de dados para possibilitar a recuperação dos dados em caso de falhas. Um banco de dados Oracle deve possuir no mínimo dois arquivos de redo log. *Arquivos de Controle (Control Files) - Os arquivos de controle contém as informações necessárias para manter e verificar a integridade do banco de dados. Por exemplo, o arquivo de controle é utilizado para identificar os arquivos de dados e os arquivos de redo log. Um banco de dados Oracle deve possuir no mínimo um arquivo de controle. *Outros Arquivos Importantes - O servidor Oracle também faz uso de outros arquivos que não fazem parte do banco de dados: Arquivo de Parâmetros (Parameter File) -define as características da instância Oracle. Por exemplo, ele contém parâmetros que definem o tamanho das estruturas de memória da SGA Arquivo de Senhas (Password File) -faz a validação de quais usuários tem permissão de fazer start up e shutdown na instância Oracle + Arquivos de Redo Log Arquivados (Archived Redo Log Files) -são cópias off-line dos arquivos de redo log, que podem ser necessários em um processo de recuperação de falhas de mídia Pedro F. Carvalho Analista de Sistemas [email protected] www.pedrofcarvlho.com.br ESTRUTURAS LOGICAS E FISICAS DE UM BANCO Tablespaces: – Um tablespace pertence a apenas um database – Cada tablespace consiste de um ou mais arquivos do sistema operacional – Tablespaces podem ser colocados online enquanto o database está sendo executado – Exceto pelo tablespace SYSTEM, um tablespace pode ser colocado offline enquanto o database está sendo executado – Tablespaces podem trocar seu status entre read-write e read-only Segments: – Um segmento é um espaço alocado para um tipo específico de uma estrutura lógica em um tablespace – Exemplos de segmentos: • Table segment • Index segment • Temporary segment • Rollback segment – Segmentos de dados podem se espalhar por múltiplos arquivos que pertencem a um mesmo tablespace Extents: – Um extent é um número contíguo de blocos – Cada tipo de segmento é composto de um ou mais extents – Um extent deve estar em um data file Data Blocks: – A menor porção de dados de um database é um bloco – Um bloco de dados corresponde a um ou mais blocos do sistema operacional – O tamanho de um bloco pode ser especificado pelo parâmetro de inicialização DB_BLOCK_SIZE quando o banco de dados é criado Execícios Auxiliares 1 – Determine se a instância esta em RAC : SQL> SELECT PARALLEL FROM V$INSTANCE 2 – Determine o banco de dados esta protegido por um banco em StandBy SQL> SELECT PROTECTION_LEVEL FROM V$INSTANCE 3 – Determine se os recursos de Streams foi configurado no banco de dados SQL> SELECT * FROM DBA_STREAMS_ADMINISTRATOR 4 – Determine o tamanho atual dos componentes de sua SGA SQL> SELECT COMPONENT, CRRENT_SIZE, MIN_IZE, MAX_SIZE FROM V$SGA_DYNAMIC_COMPONENTS; 5 – Determine quais os processos em execução SQL> SELECT PROGRAM FROM V$SESSION ORDER BY PROGRAM 6 –Faça consulta nas views V$DATABASE V$CONTROLFILE V$LOG V$LOGFILE Pedro F. Carvalho Analista de Sistemas [email protected] www.pedrofcarvlho.com.br V$TABLESPACE V$DATAFILE