You are on page 1of 13

Banco de Dados Oracle

Item do Edital: Banco de dados oracle: conceitos e arquitetura, SQL (DML, DDL). Triggers, procedures, functions e packages. PL/SQL. Segurana e gerenciamento de objetos. Conceitos e Arquitetura A arquitetura do oracle subdivide-se em camada fsica e camada lgica. A camada fsica consiste de arquivos armazenados em disco enquanto que a camada lgica mapea os dados da camada fsica. 1 Camada Lgica 1.1 Banco de dados O banco de dados uma coleo de dados em disco gravados em um ou mais arquivos em um servidor de banco de dados que coleta e mantm as informaes relacionadas. O banco de dados possui vrias estruturas fsicas e lgicas sendo a tabela a estrutura lgica mais importante do banco de dados. Alm disso, o um banco de dados fornece mecanismos de segurana para evitar acessos no autorizados e assegurar a confidencialidade dos dados. 1.2 Instncias Os principais componentes tpicos de um servidor comercial so uma ou mais CPU's, espao em disco e memria. No oracle, o banco de dados fica no disco do servidor enquanto que uma instncia existe somente na memria do servidor. Uma instncia composta de um grande bloco de memria alocado em um rea denominada SGA System Global Area, junto com outros processos rodando em background e que interagem com a SGA e o banco de dados (arquivos de banco de dados no disco). Mais uma instancia pode acessar o mesmo banco de dados ou mesmo acessar um banco de dados remoto. /*no misturar os conceitos de banco de dados e instncia */

Estruturas de armazenamento lgico

2.1 Espaos de Tabelas Os arquivos de banco de dados so agrupados no Oracle em um ou mais espaos de tabelas, onde dentro de cada um desses espaos (tablespaces) as estruturas lgicas do banco de dados como tabelas e ndices se subdividem em extenses e blocos. A subdivio em tais estruturas facilita o gerenciamento do espao em disco pelo Oracle. Blocos a menor unidade de armazenamento no banco de dados Oracle. O tamanho do bloco um nmero especfico de bytes geralmente multiplo do tamanho do bloco usado pelo sistema operacional. Atrav dos parametro de inicalizao DB_BLOCK_SIZE , o DBA pode determinar o tamnho do bloco. Extenses Um extenso um agrupamento lgico do banco de dados de vrios blocos. Segmentos um grupo de extenses que abrange um objeto de banco de dados como uma unidade, tabela ou ndice. Essa a menor unidade de armazenamento que o usurio final do banco de dados consegue interagir. Quatro so os tipos de segmentos, vistos a seguir. Segmentos de dados Cada tabela do banco de dados reside em um nico segmento de dados, o que pode ser composto de uma ou mais extenses, mais de um segmento no entanto, podem ser utilizados para armazenar uma tabela no caso se for uma tabela particionada ou clusterizada (mais a frente veremos isso). Segmentos de ndice Cada ndice armazenado em seu prprio segmento de ndice. Mais de um segmento pode ser usando para indices particionados ou clusterizados. Segmento temporrio Quando uma instruo sql executada ela precisa de espeo em disco para completar alguma operao, como um ordenao. Caso isso no possa ser relalizado em memria um segmento temporrio alocado para a instruo poder terminar. Aps a execuo da operao o segmento deixa de existir. Segmento de rollback No oracle 10g o segmento de tabela exite na tabela de espao SYSTEM. Eles servem para guardar o estado do banco de dados antes de completar uma transao ou um operao DML. Se houver falha este segmento usado para restaurar o estado anterior do banco de dados antes da falha.

Estruturas Lgicas do banco de dados Oracle Tabela Uma tabela a unidade bsica de armazenamento em um banco de dados e a tabela relacional o tipo mais comum de tabela utilzado em banco de dados comerciais. Uma tabea organizado por heap, ou seja, as linhas no so armazenadas em um determinada ordem. Cada linha composta de uma ou mais colunas e cada coluna tem um tipo de dados e um comprimento. No oracle, alm do tipo de dados comumente utilizados como varchar, string, date, long, etc.. podemos definir um tipo de usurio ou mesmo uma tabela aninhada. Alm disso, a tabela pode ser definida como uma tabela de objeto, no caso da aplicao usar um banco de dados orientados a objetos. Tabelas Temporrias Tabelas temporrias so temporrias no sentido dos dados armazenados na tabela, no na definio da prpria tabela. O comando create global temporary table cria uma tabela temporria. Desde que os usurio tenham permisso possivel de se fazer um select na tabela ou mesmo uma instruo DML: insert, update, delete. Entretanto, cada usurio v somente seus prprios dados, se ele truncar seus dados, somente as linhas que ele inseriu sero apagadas. A temporariedade dos dados em um a tabela temporria pode ser no escopo de uma transao ou de sesso. No primeiro caso, ao terminar uma transao os dados temporrios sero apagados. No segundo caso, os dados vo sobreviver alm de uma transao, mas qdo acabar a sesso do usurio, os dados sero apagados. Usa-se a clausula on commit, para controlar a longevidade dos dados on commit delete rows: apaga as linhas de uma tabela qdo um commit ou rollback emitido e on commit preserve rows mantm as linhas por mais de uma transao, removendo-as qdo a sesso do usurio acabar. Caso haja ndices associados a linhas da tabela temporria, estas sero removidas juntamente com as linhas da tabela temporria. Tabelas organizadas por ndice O ndice agiliza a procura por uma linha da tabela, tornando as consultas mais eficientes, embora adicione um overhead no banco de dados, pois este deve manter as linhas de dados e as entradas de ndices para a tabela. Se caso a tabela seja acessada somente para um coluna temos a opo de criar uma IOT index organized table, que armazenas as linhas de uma tabela em um rvore B onde cada n contm a coluna chaveada juntos com as demais no indexadas. A vantagem dessa tabela que uma estrutura apenas mantida pelo banco de dados em vez de duas. A desvantagem que uma IOT deve ser uma tabela com uma chave primria, o que no se aplica a todos os casos. As IOT's no podem ser clusterizadas e no so a melhor soluo para tabelas com muitas colunas e com uma frequencia alta de acessos. Tabelas de Objeto O Oracle suporta recursos orientado a objetos no banco de dados, tipos definidos pelo usurio e quais mtodos podem ser executados pelo objetos, facilitando a implementao de banco de dados orientado a objetos. As tabelas de objeto contem linhas que so objtos por si s ou instancias das definies dos tipos. As linhas podem ser referenciadas pelo OID do objeto. Exemplo de criao de um tipo de objeto: create type PERS_TYPE as object (Last_name varchar2(45) First_name varchar2(45)); criando a tabela de objetos create table pers of pers_type;

adicionando dados: insert into pers values(pers_type('Nome', 'Sobrenome')) Tabelas Externas Permitem que o usurio acesse uma fonte externa de dados, como um arquivo texto por exemplo, tratandoo como uma tabela de banco de dados. A criao de uma tabela externa se faz em duas fases. A primeira usa-se o comando create normalmente, definindo os dados que conter a tabela. A segunda fase definido o mapeamento entre as colunas de banco de dados e a fonte externa de dados. A vantagem disso que o usurio pode acessar normalmente os dados de uma fonte externa como se estivesse acessando uma tabela tpica do banco de dados, mas ele no pode alterar, excluir, inserir ou criar ndices. Para o caso de um ambiente de dataware house tais desvantagens talvez no sejam to ruins j que permitem a carga do banco atravs de fontes externas e geralmente os dados no so alterados/deletados. Tabelas Clusterizadas Quando duas ou mais tabelas so frequentemente acessadas juntas pode-se criar uma tabela clusterizada para agilizar as consultas que acessam essas tabelas, ou seja uma tabela contendo todas as colunas resultando da consulta. Tabelas clusterizadas reduzem o espao em disco e a quantidade de I/O numa consulta, pois armazenam uma nica vez as colunas que as tabelas tem em comum conhecidas como valor chave de cluster. O valor chave de cluster tambm armazenado em um ndice de cluster, que opera como um ndice normal. Entretanto, se a tabela cristalizada for alvo de frequentes operaes de insert/delete as vantagens da clusterizao so perdidas. Se houver maior probabilidade de as tabelas que compem o cluster serem acessadas individualmente, tb perde o sentido de se clusterzar essas tabelas. Cluster de Hash Cluster de hash um tipo de tabela clusterizada especial que em vez de usar um indice de cluster, utiliza uma funao de hashing para armazenar e recuperar dados em uma tabela. A quantidade estimda de espao necessrio para a tabela alocada qdo a tabela criada, de acordo com o numero de chaves especificados duranta a criao do cluster:

create cluster order_cluster(order_number number(6)) size 50 hash is order_number hashkeys 1000000; create table cust_order( order_number number(6) primary key order_date date, customer_number number) cluster order_cluster(order_number);
Os cluster de hash tem a vantangem de econominar em I/O qdo uma consulta realizada, pois se os nmeros de hash keys for suficientemente alto poderemos ter somente uma I/O para buscar uma linha da tabela. Cluster de Hash Classificados So semelhante aos cluster de hash que utilizam uma funo de hash para encontrar uma linha. Entretanto, cluster de hash classificados permitem que linhas na tabela sejam armazenadas por uma ou mais colunas da tabela em ordem crescente. Assim, dados de uma aplicao que so processados usando o processamento FIFO (first in first out) se benificiam deste tipo de tabela. A criao do cluster de hash classificado semelhante ao anterior, mas usa-se o parametro SORT em um dos atributos da tabela para ordenar a tabela segundo esse atributo.

Tabelas Particionadas Particionar uma tabela ou ndice justfica-se qdo temos uma tabela ou ndice grandes, e dividir em espaos menores torna esses elementos mais gerenciveis. Uma tabela pode ser particionada em partes menores e essas partes tambm podem ser particionadas. Do ponto de vista da aplio isso transparente, no requerent nenhuma consulta especial para acessar os dados. O nico efeito que consultas com a clusula where so executadas mais rpido. As tabelas particiionadas podem ser de trs tipos: particionadas por intervalo, particionadas por hash, ou particionadas por lista. Cada linha em um tabela particionada pode exister somente em uma partio. A particies onde sero armazenadas as linhas so determinadas pela chave de partio que pode ser uma chve comporta de at 16 colunas na tabela. Partio por Interalo Uma partio por intervalo uma partio cuja chave de partio cai dentro de um certo intervalo. Por exemplo, as vendas de um site podem ser particionadas pela data das vendas e as parties divididas em trimestres. Assim, uma venda pode pertencer a primeira partio, denotando o primeiro trimestre (FY2010Q1), ou seja, dependendo do valor da data (que a chave de partio) a linha ser armazena em uma das quatro parties (4 trimestres tem um ano ehhehe). Partio por Lista Partio por lista uma partio cuja a chave cai dentro de grupos de valores distintos, por exemplo podese ter uma partio para cada estado atendido por uma loja virtual. Uma compra para o Rio Grande do Sul estaria na partio 'RS', para So Paulo em 'SP' e assim por diante. Partio por Hash um tipo de particionamento que a linha vai para uma partio de acordo uma funo de hashing especificando a coluna ou colunas utilizadas na funo de hashing, mas sem atribuir explicitamente a partio, somente especificando quantas parties estaro disponveis. O oracle se encarrega de colocar as linhas da tabela na partio correta e assegurar uma distribuio uniforme de linhas nas parties disponveis. Parties compostas As parties podem tambm serem particionadas. Podes-se particionar um partio em lista em parties por hash, por exemplo. ndices Particionados Os indices em uma tabela podem ser particionados de formar a corresponder o esquema de partio das tabelas as quais eles indexam. ndices particionados locais apresentam a vantagem de um aumento de disponibilidade do ndice qdo ocorrem operaes de partio, por exemplo arquivar e descartar a partio FY2002Q1 e seu indice local no afetar a disponibilidade de ndice para as outras parties da tabela

Restries
Restrio uma regra que podem ser definidas em uma ou mais colunas dentro de uma tabela para implementar uma regra de negcio. O oracle possui seis tipos de restries: Regra do nulo: a restrio NOT NULL evita que NULL sejam inseridos numa coluna. NULL no igual nada nem a outro NULL por que o valor NULL no existe. valores nicos de coluna: a restrio UNIQUE assegura que uma coluna ou grupo de colunas sejam unica por toda a tabela. Por exemplo, em uma tabela USURIO, a coluna CPF no pode ser repetido em mais de uma linha da tabela, o cpf nico por usurio. A restrio UNIQUE pode vir acompanha da restrio NOT NULL. valores de chave primria: o tipo de restrio mais comum de restrio e no mximo uma vez pode ser aplicada uma nica vez em um tabela. A coluna ou colunas que compe a a chave primria no podem ser NULL. Um ndice nico criado para impor essa restrio; se um ndice nico utilizvel existir para a coluna a restrio da chave primria utilizar esse ndice. valores de integridade referencial: a restrio FOREIGN KEY um tipo de restrio mais complexa que as demais, visto que ela conta uma tabela para restringir os valores que podem ser inseridos na coluna com a restrio de integridade referencial. Se uma tabela A tem uma FOREIGN KEY de uma uma tabela B, os valores exitentes em na tabela A devem ter os correspondentes na tabela B. integridade in-line complexa: tipo de restrio que pode ser imposta a uma coluna atravs da palavra reservada CHECK, por exemplo uma coluna no pode ter o valor acima de 99. Mltiplas instrues CHECK podem ser adicionadas em uma colunas e a restrio em si pode tomar outras colunas da linha que est sendo inserida ou atualizada como argumentos. A linha somente inserida no banco de dados se os CHECK retornarem TRUE. integridade baseada em trigger: tipo de restrio destinada para implementar regras de negcios mais complexas que as restries anteriores no conseguem tratar. criada atravs do comando create trigger seguido em um corpo em PL/SQL que so os comandos a serem executados pelo trigger qdo ocorre uma determinada operao no banco de dados. Muito til para operaes de auditoria que armazenam as datas e horrio de alteraes executadas em tabelas por exemplo.

Toda as restries do definidas qdo a tabela criada ou qdo a tabela alterada em nvel de coluna, exceto para triggers que so definidos na operao DML que est sendo realizada na tabela.

ndices
Como dito anteriormente, ndices so utilizados para melhorar a performance de consultas no banco de dados. Um ndice armazena o valor da coluna ou colunas que esto sendo indexadas juntamente como o endereo fsico da linha que contm o valor indexado. Ao encontrar uma correspondncia no ndice o ID da linha aponta para o bloco dentro do arquivo e qual linha dentro do bloco. Eles so criados sobre uma ou mais colunas e armazenados eu uma estrutura de rvore B. Existem vrios tipos de ndices que deve ser usados de acordo com o tipo de tabela e o tipo de acesso. No oracle tems os seguinte tipos de ndices ndices nicos: frequentemente utilizado para impor a restrio de chave primria. ndices nicos asseguram que valores duplicados no existiro na coluna ou colunas que esto sendo indexadas. ndices no-nicos: ajuda a acelerar o acesso a uma tabela sem impor unicidade. Podemos criar um ndice para uma coluna LAST_NAME por exemplo e certamente obteriamos vrias linhas pelo uso desse ndice.

ndice de chave reversa: um tipo especial de ndice amplamente utilizado em ambiente de processamento de transaes on-line OLTP. Nesse tipo de ndice todos os bytes de uma coluna so invertidos. Um ndice reverso, comparado a um ndice convencional, inverte os bytes da chave a ser indexada. Ele particularmente interessante no caso de uma coluna de tabela conter valores de texto que comumente apresentam um longo prefixo. Por exemplo, em uma tabela destinada a armazenar Ordens de Servio, a coluna chave pode possuir uma forma padronizada com 12 caracteres. O primeiro documento do ano 2008 indicado com OS-200800001, o segundo com OS-200800002, e assim por diante. At a tabela atingir alguns milhes de registros, os primeiros sete caracteres sero redundantes e no traro muita contribuio s buscas indexadas. Um ndice reverso armazenaria estes cdigos na ordem inversa, isto , como 100008002-SO, 200008002-SO, 300008002-SO, e assim por diante. Com isso, ele permite que o ltimo caractere da chave, mais altamente varivel, espalhe os valores entre as estruturas de dados do ndice. Tal procedimento aumenta consideravelmente o desempenho no momento da busca.

ndices baseados em funo: semelhante a um ndice B-Tree padro exceto que para armazena-se no ndice, uma expresso no lugas da coluna ou colunas das tabelas. Um exemplo de utilidade desse tipo ndice a criao de um ndice para o endereo ou sobrenome de algum que pode ser gravado com banco de dados em minsculo ou maisculo, onde o indice ter uma expresso que transforma todos os nomes em maisculo:

create index up_name on employee(upper(last_name))


ndice de mapa de bits: armazena uma string de bits para cada valor possvel da coluna que est sendo indexada. O comprimentos dos bits igual ao nmero de linhas na tabela que est sendo indexada. Esse ndice tem como vantagens a economia de espao e o tempo de resposta por que permite ao Oracle remover rapidamente potenciais linhas de uma consulta que contm mltiplos where bem antes da propria tabela precisar ser acessada. Ele mais eficiente qdo utilizado em colundas com baixa cardinalidade.

Vises
Vises permitem que os usurios vejam uma apresentao personalizada dos dados. Uma viso tb conhecida como um consulta armazenada os detalhes da consulta adjacente so ocultadas do usurio. Atravs de vises podemos exibir dados conforme as autorizaes/permisses do usurio, por exemplo, um empregado pode ser dados dos colegas menos seus salrios, enquanto que o supervisor pode ver inclusive o salrio. As vises tb podem ser usadas para impor segurana, por negar acesso de escrita de dados para determinos usurio que no necessitam de tal permisso. Uma viso regular no armazena dados, somente sua definio no dicionrio de dados, e uma consulta sujbacente (tb armazenada no banco de dados) sempre executada qdo esta acessada. A viso materializada um tipo de viso que armazena os resultados de sua consulta adjacente junto com a definio da viso com o intuito de acelerar as consultas. Ela semelhante a viso regular, pois sua definio tambm fica no dicionrio de dados, entretanto, ela ocupa espao no segmento de dados mantendo os dados resultantes da consulta de base. A viso materializada pode ser usada para replicar uma cpia de leitura da tabela para um outro banco de dados. Para manter a viso atualizada o oracle usa um arquivo de log denominada log de viso materializada utilizado para atualizaes incrementais da viso quando a tabela de base alterada evitando que se faa uma atualizao completa da viso por conta de todas as atuzalies feitas na tabela. Em um ambiente de dataware house, a viso materializada pode armazenar dados agregados em um group by rollup ou group by cube. O terceiro tipo viso a viso de objeto, criado para facilitar a implementao de banco de dados orientados a objetos. Mas como muitas empresas ainda possuem sistemas legados baseados em banco de dados relacionais, elas no dispes de recursos ou mesmo tempo para um migrao total para um banco de

dados orientado a objetos. Para resolver este problema o Oracle permite criar uma viso de objeto de forma que facilite essa transio de relacional para objeto permitindo que as aplicaes vejam os dados como objetos que possuem atributos e mtodos, enquanto que os sistemas legados podem executar trabalhos em lote na tabela INVENTORY. As vises de objetos permitem simulas tipos abstratos de dados, identificadores de objetos OID e referncias que um ambiente puramente OO de banco de dados ofereceria. Usurios e Esquemas O acesso ao banco de dados feito por meio de usurios cadastrados, sendo sua autenticao feita pelo banco de dados em si, pelo sistema operacional ou pela rede (baseada em PKI Public Key Infrastructure). Um usurio tambm pode possuir um esquema determinando se ele possui algum objeto no banco de dados como tabelas, ndices, vises, etc. Um usurio pode conceder acesso aos seus objetos a outros usurio, limitado ao seu esquema, ou seja, s concede permisses aos objetos que possui. Perfis Como os recursos do banco de dados no so infinitos o DBA deve gerenciar a alocao de tais recursos, por meio de perfis que armazenam o quanto de recursos podero ser usados (CPU, sesses concorrentes, etc) pelos usurios pertencentes ao perfil. Sequencias Nmero de 38 bits de comprimento gerados automaticamente pelo Oracle e so nicos, mas no necessariamente sequenciais. Se uma sequencia se perder por que qualquer motivo e no for usada, outros nmeros subsequentes sero gerados. Sinnimos simplesmente um alias para algum objeto do banco de dados (tabela, vises, ndices, procedures, etc). O sinnimo no aloca espao no banco de dados alm de sua definio no dicionrio de dados. Um sinnimo pode ser publico ou privado e, se for privado ele ser definido no esquema do usurio, caso contrario ficar disponvel para todos. PL/SQL Linguagem procedura do oracle para implementar extenses DML quando esta no conseguir produzir resultados de maneira fcil. Procedures/Funes So blocos identificador de PL/SQL. Possuem trs partes: 1. seo de declarao de variaveis 2. seo de executvel 3. seo de tratamento de excees A diferena em entre procedures e funes que uma funo retornar um valor nico para o programa chamador enquanto que procedures apenas retornam um cdigo de status. As procedures so compiladas e armazenada s no dicionrio de dados uma vez e, quando mais de um usurio precisar chamar a procedure haver uma cpia da mesma no pool compartilhado. Alm disso, uma procedure reduz o consume de banda de rede do que vrias instruo select e insert sendo executas em sequencia. Pacotes Pacotes PL/SQL agregam vrias funes e procedimentos relacionados, compostos de duas partes:

1. especificao de pacote: onde so expostos os mtodos e atributos 2. corpo do pacote: implementao dos mtodos expostos na especificao de pacote. Os pacotes permitem que os objetos que referem a eles no precisam ser recompilados no caso de alguma mudana no pacote, ao contrrio do que ocorre com procedures e funes independentes. Triggers um tipo especial de bloco PL/SQL ou Java executado qdo um evento especificado acontece, como instrues DML em uma tabela ou viso, instrues DDL e mesmo eventos de banco de dados como start e stop do banco. Os trigger so muito teis para ambiente distribudos para simular um relacionamento de chave estrangeira entre tabelas residindo em banco de dados separados bem como, implementar regras de integridade complexas impossveis de implementar com as restries padro oferecidas pelo oracle.

Estruturas de Armazenamento Fsico do Oracle O banco de dados Oracle utiliza algumas estruturas de armazenamento fsico no disco para conter e gerencias os dados a partir de transaes dos usurios. Alguns arquivos contm dados reais dos usurios: arquivos de dados, arquivos de log de redo, arquivos de log de redo em repositrio de arquivos. Outros arquivos mantm outras informaes como os arquivos de controle que guardam o estados dos objetos do banco de dados(tabelas, ndices, vises, etc), arquivos de rastreamento e alerta, os quais armazenam informaes de registro em log tanto para evento de rotina como para condies de erro que possam ocorrer no banco de dados. Abaixo temos a relao entre as estruturas fsicas de armazenamento e a estruturas lgicas de armazenamento do Oracle.

Arquivos de dados: cada banco de dados deve conter pelo menos um arquivo de dados. Um arquivo de dados no oracle corresponde a um arquivo fsico do sistema de arquivos do sistema operacional. Cada arquivo membro de somente um nico espao de tabelas. Tal arquivo pode ser expandido caso o DBA ache que isso seja necessrio.

Arquivos de Log de redo: sempre que dados so alterados nos banco de dados, tabela, indices, vises, etc, uma entrada no arquivo de log de redo criada. Cada banco de dados possui pelo menos 2 que so preenchidos de maneira circular, ou seja, qdo um est totalmente preenchido o outro comea a ser utilizado como log. O arquivo de log de redo tem sua utilizadade no caso da instancia oracle falhar ou cair por qualquer motivo, pois ao ser reiniciado esse arquivo utilizado para reestabelecer o estado do banco de dados antes da fallha numa operao denominada roll forward. Cabe ressaltar que multiplas cpias de um arquivo de log pode existir em discos fsicos diferentes para assegurar alta disponibilidade e integridade dos dados, e ainda, esses arquivos podem ser multiplexados como o mesmo objetivo. Arquivos de Controle: cada banco de dados possui pelo meno um arquivo de controle, pois este armazena os metadados do banco de dados, ou seja, os dados sobre a estrutura fsica do prprio banco. Contm o nome do banco de dados, qdo ele foi criado, os nomes e as localizaes de todos os arquivos de dados e arquivos de log de redo. Qualquer alterao feita no banco de dados imediatamente refletia nesse arquivo. Como ele crucial para a integridade do banco de dados, ele costuma ser multiplexado, ou seja, o oracle mantm vrias cpias dele em diferentes partes do disco elegendo um como primrio. Alm disso, o Oracle permite fazer backup do arquivo para o caso de alguma catastrofe acontecer, ser possvel de recriar o arquivo de controle.

alter database backup controlfile to trace


Arquivos de log em repositrio: o oracle pode operar em dois modos archivelog e noarchivelog. No modo noarchivelog, o arquivo de log de redo escrito de maneira circular como dito ateriormente. Se uma instncia falhar, as transaes sero reiniciadas no prximo restart e o arquivo de log ser usado para executar as transaes que no conseguiram terminar. Mas, se o disco falhar as informaes sero perdidas. Entretanto, se o oracle estiver funcioando em archivelog, os arquivos de log, qdo totalmente preenchidos, sero guardados em algum destino ou mltiplos destinos e, em caso de falha no disco, eles podem ser resgatados do backup e utilizados para reconstruir o estado do banco de dados no momento da falha. Este recurso crtico para ambientes de alta disponibilidade do oracle conhecido de data guard. Arquivos de log de alerta: arquivos usados para armazenar mensagem de alerta ou no caso de sesses de usurio em background, como trace logs. Alm dos aquivos mencionados, existem os aquivos de backup, arquivos de senha, de inicalizao Multiplexao de arquivos: multiplexar os arquivos de log minimiza o risco de perda de dados devidos a falhas em disco fsico, podendo ser automatizada utilizando-se uma instncia oracle chamada ASM Automatic Storage Management. Alm disso, pode-se fazer a multiplexao de forma manual, sem uma soluo ASM ou RAID, por meio de alguns parmetros de inicializao da instncia oracle.

Estruturas de Memria Oracle


O Oracle utiliza a memria fsica do servidor para armazenar vrias coisas para uma instncia oracle:o prprio cdigo executavel oracle, informaes de sesso, processos associados com o banco de dados e compartilhamento de informaes entre processos, tais como bloqueio em objetos de banco de dados. As estruturas de memrias possuem, tambm instrues SQL de usurio e que sero armazenadas em disco, como blocos de dados em segmentos de banco de dados e informaes sobre transaes completadas no banco de dados. A rea de memria alocada pelo oracle se chama SGA System Global Area.

Existe tamb a chamada PGA Program Global Area que privada para cada servidor e processo em background; um PGA alocado a cada processo. SGA: um grupo de estruturas de memria compartilhadas para uma instncia oracle, compartilhada pelos usurios da instncia do banco de dados. Qdo a instncia iniciada a memria alocada para a SGA baseada nos valores especificados no arquivo de inicalizao ou diretamento no software oracle. Cache de Buffer: o cache de buffer de banco de dados contem os blocos de dados em disco recm-lidos para devido a uma instruo select, ou que contm dados alterados ou adicionados via uma instruo DML. Pool compartilhado: o pool compatilhado possui dois subcaches: o cache de biblioteca e o cache de dicionrio de dados. O cache de biblioteca contm informaes sobre instrues SQL e PL/SQL executadas no banco de dados que podem ser compartilhadas entre os usurio dos banco de dados, visto que potencialmente eles podem acessar os mesmos dados e executar as mesmas consultas. J o cache de dicionrio de dados uma coleo de tabelas de banco de dados, que pertencem aos esquemas SYS e SYSTEM que contm os metadados do banco de dados, suas estruturas, e os privilgios e papis dos usurios do banco de dados. Alm disso, esse cache contm blocos armazenando o dicionrio de dados que so utilizados para ajudar no processamento de instrues DML. Buffer de log de redo: contm as alteraes mais recentes para os blocos de dados nos arquivos de dados. Qdo 1/3 do buffer de log estiver cheio ou a cada 3 segundos os registros de log de redo so

gravados no arquivos de log. Uma transao no considerada completada se as entradas de log no tenham sido gravadas completadamente nos arquivos de log de redo. Large Pool: uma rea opcional da SGA, utilizada para transaes que interagem com mais de um banco de dados, buffers de mensagem para processos que realizam consultas paralelas e operaes de restaurao e backup paralelo (RMAN) Java Pool: utilizado pela JVM Oracle para todos os cdigos e dados java dentro de um sesso de usurio. Streams Pool: contm estruturas dados e de controle que suportam o recurso Oracle Streams, que geerencia o compartilhamento de dados e eventos em ambiente distribudo. Program Global Area: memria alocada e privada para um processo, que depende da configurao de conexo de bando de dados, que pode ser conexo compartilhada ou conexo privada. Se for compartilhada vrios usurios usuaram a mesma conexo para o banco de dados, melhorando o uso de memria mas diminuindo o tempo de resposta. J a conexo privada o contrrio, sendo recomendado o uso e ambientes dedicados. rea de cdigo de Software: armazenam os arquivos executveis oracle que esto em execuo por parte da instncia. So reas estticas de somente leitura e modificadas apenas por uma nova distribuio de software. De acordo com os parmtros de inicializao, esses arquivos podem ser compartilhados entre vrios usurio ou no, claro que isso reflete no uso de memria do servidor.

Processos em segundo plano


Quando uma instncia oracle iniciada, mltiplos processos em background tambm so iniciados. Um processo em background um cdigo rodando em background projetado para um tarefa especfica, conforme listado abaixo e mostrado na figura.

SMON: System monitor: no caso de queda do sistema responsvel por ler os arquivos de log de redo aplicando as entradas lidas no banco de dados para restaurar o banco de dados no momento da falha ocorrida. PMON: Process Monitor: se uma conexo do usurio for descartada por qualquer motivo ele realiza o trabalho de faxina: reverte a transao que estava em progresso no caso de ter havido falha marca blocos da transao como disponveis no cache de buffer remove os locks sobre as linhas afetadas na tabela remo o ID do processo que foi desconectado da lista de processos ativos

DBWn: Database Write, grava os blocos de dados novos ou alterados na cache de buffer de nos arquivos de dados, utilizando um algoritmo de LRU. At 20 processos DBWn podem ser iniciados. LGWr: log writer: responsvel pelo gerenciamento do buffer de log de redo. um dos processos mais ativos em uma instncia que tem atividade DML intensa. Uma transao no considerada bem sucedida se o LGWr no escrever todas as entradas do buffer de log no aquivo de log de redo, incluindo o registro de confirmao. Inclusive, os buffers sujos no cache de buffers no podem ser gravados nos arquivos de dados pelo DBWn at que o LGWr tenha gravado as informaes de redo. ARCn: Archive process: se o banco de dados estivem em modo ARCHIVELOG, ento este processo armazena os logs de redo em um ou mais destinos (diretrios, dispositivos ou endereos de rede) sempre que um arquivo de redo esteja totalmente preenchido e um novo acabou de comear a ser usado. CKPT: checkpoint process: processo de ponto de verificao que ajuda a diminuir a quantidade de tempo necessria para recupero de instncia. RECO: Recovery process: trata falhas de transaes distribudas. Se uma tabela A no banco de dados AA for alterada juntamente com uma tabela B no banco BB e ocorrer uma falha de conexo antes de BB ser atualizado o RECO reverter a transao.

You might also like