Banco de dados oracle

8,400 views
8,257 views

Published on

Resumo da arquitetura do

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,400
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
312
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Banco de dados oracle

  1. 1. Banco de Dados OracleItem do Edital: Banco de dados oracle: conceitos e arquitetura, SQL (DML, DDL). Triggers, procedures,functions e packages. PL/SQL. Segurança e gerenciamento de objetos.Conceitos e ArquiteturaA arquitetura do oracle subdivide-se em camada física e camada lógica. A camada física consiste de arquivosarmazenados em disco enquanto que a camada lógica mapea os dados da camada física.1 Camada Lógica1.1 Banco de dadosO banco de dados é uma coleção de dados em disco gravados em um ou mais arquivos em um servidor debanco de dados que coleta e mantém as informações relacionadas. O banco de dados possui váriasestruturas físicas e lógicas sendo a tabela a estrutura lógica mais importante do banco de dados. Além disso,o um banco de dados fornece mecanismos de segurança para evitar acessos não autorizados e assegurar aconfidencialidade dos dados.1.2 InstânciasOs principais componentes típicos de um servidor comercial são uma ou mais CPUs, espaço em disco ememória. No oracle, o banco de dados fica no disco do servidor enquanto que uma instância existe somentena memória do servidor. Uma instância é composta de um grande bloco de memória alocado em um áreadenominada SGA – System Global Area, junto com outros processos rodando em background e queinteragem com a SGA e o banco de dados (arquivos de banco de dados no disco). Mais uma instancia podeacessar o mesmo banco de dados ou mesmo acessar um banco de dados remoto./*não misturar os conceitos de banco de dados e instância */ Estruturas de armazenamento lógico
  2. 2. 2.1 Espaços de TabelasOs arquivos de banco de dados são agrupados no Oracle em um ou mais espaços de tabelas, onde dentrode cada um desses espaços (tablespaces) as estruturas lógicas do banco de dados como tabelas e índices sesubdividem em extensões e blocos. A subdivição em tais estruturas facilita o gerenciamento do espaço emdisco pelo Oracle.BlocosÉ a menor unidade de armazenamento no banco de dados Oracle. O tamanho do bloco é um númeroespecífico de bytes geralmente multiplo do tamanho do bloco usado pelo sistema operacional. Atravé dosparametro de inicalização DB_BLOCK_SIZE , o DBA pode determinar o tamnho do bloco.ExtensõesUm extensão é um agrupamento lógico do banco de dados de vários blocos.SegmentosÉ um grupo de extensões que abrange um objeto de banco de dados como uma unidade, tabela ou índice.Essa é a menor unidade de armazenamento que o usuário final do banco de dados consegue interagir.Quatro são os tipos de segmentos, vistos a seguir.Segmentos de dadosCada tabela do banco de dados reside em um único segmento de dados, o que pode ser composto de umaou mais extensões, mais de um segmento no entanto, podem ser utilizados para armazenar uma tabela nocaso se for uma tabela particionada ou clusterizada (mais a frente veremos isso).Segmentos de índiceCada índice é armazenado em seu próprio segmento de índice. Mais de um segmento pode ser usando paraindices particionados ou clusterizados.Segmento temporárioQuando uma instrução sql é executada ela precisa de espeço em disco para completar alguma operação,como um ordenação. Caso isso não possa ser relalizado em memória um segmento temporário é alocadopara a instrução poder terminar. Após a execução da operação o segmento deixa de existir.Segmento de rollbackNo oracle 10g o segmento de tabela exite na tabela de espaço SYSTEM. Eles servem para guardar o estadodo banco de dados antes de completar uma transação ou um operação DML. Se houver falha este segmentoé usado para restaurar o estado anterior do banco de dados antes da falha.
  3. 3. Estruturas Lógicas do banco de dados OracleTabelaUma tabela é a unidade básica de armazenamento em um banco de dados e a tabela relacional é o tipomais comum de tabela utilzado em banco de dados comerciais. Uma tabea é organizado por heap, ou seja,as linhas não são armazenadas em um determinada ordem. Cada linha é composta de uma ou mais colunase cada coluna tem um tipo de dados e um comprimento. No oracle, além do tipo de dados comumenteutilizados como varchar, string, date, long, etc.. podemos definir um tipo de usuário ou mesmo uma tabelaaninhada. Além disso, a tabela pode ser definida como uma tabela de objeto, no caso da aplicação usar umbanco de dados orientados a objetos.Tabelas TemporáriasTabelas temporárias são temporárias no sentido dos dados armazenados na tabela, não na definição daprópria tabela. O comando create global temporary table cria uma tabela temporária. Desde que osusuário tenham permissão é possivel de se fazer um select na tabela ou mesmo uma instrução DML: insert,update, delete. Entretanto, cada usuário vê somente seus próprios dados, se ele truncar seus dados,somente as linhas que ele inseriu serão apagadas.A temporariedade dos dados em um a tabela temporária pode ser no escopo de uma transação ou desessão. No primeiro caso, ao terminar uma transação os dados temporários serão apagados. No segundocaso, os dados vão sobreviver além de uma transação, mas qdo acabar a sessão do usuário, os dados serãoapagados.Usa-se a clausula on commit, para controlar a longevidade dos dados – on commit delete rows: apagaas linhas de uma tabela qdo um commit ou rollback é emitido e on commit preserve rows mantém aslinhas por mais de uma transação, removendo-as qdo a sessão do usuário acabar. Caso haja índicesassociados a linhas da tabela temporária, estas serão removidas juntamente com as linhas da tabelatemporária.Tabelas organizadas por índiceO índice agiliza a procura por uma linha da tabela, tornando as consultas mais eficientes, embora adicioneum overhead no banco de dados, pois este deve manter as linhas de dados e as entradas de índices para atabela. Se caso a tabela seja acessada somente para um coluna temos a opção de criar uma IOT – indexorganized table, que armazenas as linhas de uma tabela em um árvore B onde cada nó contém a colunachaveada juntos com as demais não 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 comuma chave primária, o que não se aplica a todos os casos. As IOTs não podem ser clusterizadas e não são amelhor solução para tabelas com muitas colunas e com uma frequencia alta de acessos.Tabelas de ObjetoO Oracle suporta recursos orientado a objetos no banco de dados, tipos definidos pelo usuário e quaismétodos podem ser executados pelo objetos, facilitando a implementação de banco de dados orientado aobjetos. As tabelas de objeto contem linhas que são objtos por si só ou instancias das definições dos tipos.As linhas podem ser referenciadas pelo OID do objeto. Exemplo de criação de um tipo de objeto:create type PERS_TYPE as object (Last_name varchar2(45) First_name varchar2(45));criando a tabela de objetoscreate table pers of pers_type;
  4. 4. adicionando dados:insert into pers values(pers_type(Nome, Sobrenome))Tabelas ExternasPermitem que o usuário acesse uma fonte externa de dados, como um arquivo texto por exemplo, tratando-o como uma tabela de banco de dados. A criação de uma tabela externa se faz em duas fases. A primeirausa-se o comando create normalmente, definindo os dados que conterá a tabela. A segunda fase é definidoo mapeamento entre as colunas de banco de dados e a fonte externa de dados. A vantagem disso é que ousuário pode acessar normalmente os dados de uma fonte externa como se estivesse acessando uma tabelatípica do banco de dados, mas ele não pode alterar, excluir, inserir ou criar índices.Para o caso de um ambiente de dataware house tais desvantagens talvez não sejam tão ruins já quepermitem a carga do banco através de fontes externas e geralmente os dados não são alterados/deletados.Tabelas ClusterizadasQuando duas ou mais tabelas são frequentemente acessadas juntas pode-se criar uma tabela clusterizadapara agilizar as consultas que acessam essas tabelas, ou seja uma tabela contendo todas as colunasresultando da consulta. Tabelas clusterizadas reduzem o espaço em disco e a quantidade de I/O numaconsulta, pois armazenam uma única vez as colunas que as tabelas tem em comum conhecidas como valorchave de cluster. O valor chave de cluster também é armazenado em um índice de cluster, que opera comoum índice normal.Entretanto, se a tabela cristalizada for alvo de frequentes operações de insert/delete as vantagens daclusterização são perdidas. Se houver maior probabilidade de as tabelas que compõem o cluster seremacessadas individualmente, tb perde o sentido de se clusterzar essas tabelas.Cluster de HashCluster de hash é um tipo de tabela clusterizada especial que em vez de usar um indice de cluster, utilizauma funçao de hashing para armazenar e recuperar dados em uma tabela. A quantidade estimda de espaçonecessário para a tabela é alocada qdo a tabela é criada, de acordo com o numero de chaves especificadosduranta a criação 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 osnúmeros de hash keys for suficientemente alto poderemos ter somente uma I/O para buscar uma linha databela.Cluster de Hash ClassificadosSão semelhante aos cluster de hash que utilizam uma função de hash para encontrar uma linha. Entretanto,cluster de hash classificados permitem que linhas na tabela sejam armazenadas por uma ou mais colunas databela em ordem crescente. Assim, dados de uma aplicação que são processados usando o processamentoFIFO (first in first out) se benificiam deste tipo de tabela. A criação do cluster de hash classificado ésemelhante ao anterior, mas usa-se o parametro SORT em um dos atributos da tabela para ordenar a tabelasegundo esse atributo.
  5. 5. Tabelas ParticionadasParticionar uma tabela ou índice justfica-se qdo temos uma tabela ou índice grandes, e dividir em espaçosmenores torna esses elementos mais gerenciáveis. Uma tabela pode ser particionada em partes menores eessas partes também podem ser particionadas. Do ponto de vista da aplição isso é transparente, nãorequerent nenhuma consulta especial para acessar os dados. O único efeito é que consultas com a cláusulawhere são executadas mais rápido.As tabelas particiionadas podem ser de três tipos: particionadas por intervalo, particionadas por hash, ouparticionadas por lista. Cada linha em um tabela particionada pode exister somente em uma partição. Aparticições onde serão armazenadas as linhas são determinadas pela chave de partição que pode ser umachve comporta de até 16 colunas na tabela.Partição por InteraloUma partição por intervalo é uma partição cuja chave de partição cai dentro de um certo intervalo. Porexemplo, as vendas de um site podem ser particionadas pela data das vendas e as partições divididas emtrimestres. Assim, uma venda pode pertencer a primeira partição, denotando o primeiro trimestre(FY2010Q1), ou seja, dependendo do valor da data (que é a chave de partição) a linha será armazena emuma das quatro partições (4 trimestres tem um ano ehhehe).Partição por ListaPartição por lista é uma partição cuja a chave cai dentro de grupos de valores distintos, por exemplo pode-se ter uma partição para cada estado atendido por uma loja virtual. Uma compra para o Rio Grande do Sulestaria na partição RS, para São Paulo em SP e assim por diante.Partição por HashÉ um tipo de particionamento que a linha vai para uma partição de acordo uma função de hashingespecificando a coluna ou colunas utilizadas na função de hashing, mas sem atribuir explicitamente apartição, somente especificando quantas partições estarão disponíveis. O oracle se encarrega de colocar aslinhas da tabela na partição correta e assegurar uma distribuição uniforme de linhas nas partiçõesdisponíveis.Partições compostasAs partições podem também serem particionadas. Podes-se particionar um partição em lista em partiçõespor hash, por exemplo.Índices ParticionadosOs indices em uma tabela podem ser particionados de formar a corresponder o esquema de partição dastabelas as quais eles indexam. Índices particionados locais apresentam a vantagem de um aumento dedisponibilidade do índice qdo ocorrem operações de partição, por exemplo arquivar e descartar a partiçãoFY2002Q1 e seu indice local não afetará a disponibilidade de índice para as outras partições da tabela
  6. 6. RestriçõesRestrição é uma regra que podem ser definidas em uma ou mais colunas dentro de uma tabela paraimplementar uma regra de negócio. O oracle possui seis tipos de restrições:Regra do nulo: a restrição NOT NULL evita que NULL sejam inseridos numa coluna. NULL não é igual nadanem a outro NULL por que o valor NULL não existe.valores únicos de coluna: a restrição UNIQUE assegura que uma coluna ou grupo de colunas sejam unicapor toda a tabela. Por exemplo, em uma tabela USUÁRIO, a coluna CPF não pode ser repetido em mais deuma linha da tabela, o cpf é único por usuário. A restrição UNIQUE pode vir acompanha da restrição NOTNULL.valores de chave primária: é o tipo de restrição mais comum de restrição e no máximo uma vez pode seraplicada uma única vez em um tabela. A coluna ou colunas que compõe a a chave primária não podem serNULL. Um índice único é criado para impor essa restrição; se um índice único utilizável existir para a colunaa restrição da chave primária utilizará esse índice.valores de integridade referencial: a restrição FOREIGN KEY é um tipo de restrição mais complexa queas demais, visto que ela conta uma tabela para restringir os valores que podem ser inseridos na coluna coma restrição de integridade referencial. Se uma tabela A tem uma FOREIGN KEY de uma uma tabela B, osvalores exitentes em na tabela A devem ter os correspondentes na tabela B.integridade in-line complexa: tipo de restrição que pode ser imposta a uma coluna através da palavrareservada CHECK, por exemplo uma coluna não pode ter o valor acima de 99. Múltiplas instruções CHECKpodem ser adicionadas em uma colunas e a restrição 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 CHECKretornarem TRUE.integridade baseada em trigger: tipo de restrição destinada para implementar regras de negócios maiscomplexas que as restrições anteriores não conseguem tratar. É criada através do comando create triggerseguido em um corpo em PL/SQL que são os comandos a serem executados pelo trigger qdo ocorre umadeterminada operação no banco de dados. Muito útil para operações de auditoria que armazenam as datas ehorário de alterações executadas em tabelas por exemplo.Toda as restrições dão definidas qdo a tabela é criada ou qdo a tabela é alterada em nível de coluna, excetopara triggers que são definidos na operação DML que está sendo realizada na tabela. ÍndicesComo dito anteriormente, índices são utilizados para melhorar a performance de consultas no banco dedados. Um índice armazena o valor da coluna ou colunas que estão sendo indexadas juntamente como oendereço físico da linha que contém o valor indexado. Ao encontrar uma correspondência no índice o ID dalinha aponta para o bloco dentro do arquivo e qual linha dentro do bloco. Eles são criados sobre uma oumais colunas e armazenados eu uma estrutura de árvore B.Existem vários tipos de índices que deve ser usados de acordo com o tipo de tabela e o tipo de acesso. Nooracle tems os seguinte tipos de índicesÍndices únicos: frequentemente utilizado para impor a restrição de chave primária. Índices únicosasseguram que valores duplicados não existirão na coluna ou colunas que estão sendo indexadas.Índices não-ú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 várias linhas pelo uso desseíndice.
  7. 7. Índice de chave reversa: é um tipo especial de índice amplamente utilizado em ambiente deprocessamento de transações on-line OLTP. Nesse tipo de índice todos os bytes de uma coluna sãoinvertidos.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 comumenteapresentam um longo prefixo.Por exemplo, em uma tabela destinada a armazenar Ordens de Serviço, a coluna chave pode possuir umaforma 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 milhões de registros, osprimeiros sete caracteres serão redundantes e não trarão muita contribuição às buscas indexadas. Um índicereverso armazenaria estes códigos 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 altamentevariável, espalhe os valores entre as estruturas de dados do índice. Tal procedimento aumentaconsideravelmente o desempenho no momento da busca.Índices baseados em função: é semelhante a um índice B-Tree padrão exceto que para armazena-se noíndice, uma expressão no lugas da coluna ou colunas das tabelas. Um exemplo de utilidade desse tipo éíndice é a criação de um índice para o endereço ou sobrenome de alguém que pode ser gravado com bancode dados em minúsculo ou maiúsculo, onde o indice terá uma expressão que transforma todos os nomes emmaiúsculo:create index up_name on employee(upper(last_name))Índice de mapa de bits: armazena uma string de bits para cada valor possível da coluna que está sendoindexada. O comprimentos dos bits é igual ao número de linhas na tabela que está sendo indexada. Esseíndice tem como vantagens a economia de espaço e o tempo de resposta por que permite ao Oracleremover rapidamente potenciais linhas de uma consulta que contém múltiplos where bem antes da propriatabela precisar ser acessada. Ele é mais eficiente qdo utilizado em colundas com baixa cardinalidade. VisõesVisões permitem que os usuários vejam uma apresentação personalizada dos dados. Uma visão tb éconhecida como um consulta armazenada – os detalhes da consulta adjacente são ocultadas do usuário.Através de visões podemos exibir dados conforme as autorizações/permissões do usuário, por exemplo, umempregado pode ser dados dos colegas menos seus salários, enquanto que o supervisor pode ver inclusive osalário. As visões tb podem ser usadas para impor segurança, por negar acesso de escrita de dados paradeterminos usuário que não necessitam de tal permissão.Uma visão regular não armazena dados, somente sua definição no dicionário de dados, e uma consultasujbacente (tb armazenada no banco de dados) sempre é executada qdo esta é acessada.A visão materializada é um tipo de visão que armazena os resultados de sua consulta adjacente juntocom a definição da visão com o intuito de acelerar as consultas. Ela é semelhante a visão regular, pois suadefinição também fica no dicionário de dados, entretanto, ela ocupa espaço no segmento de dadosmantendo os dados resultantes da consulta de base. A visão materializada pode ser usada para replicar umacópia de leitura da tabela para um outro banco de dados. Para manter a visão atualizada o oracle usa umarquivo de log denominada log de visão materializada utilizado para atualizações incrementais da visãoquando a tabela de base é alterada evitando que se faça uma atualização completa da visão por conta detodas as atuzalições feitas na tabela. Em um ambiente de dataware house, a visão materializada podearmazenar dados agregados em um group by rollup ou group by cube.O terceiro tipo visão é a visão de objeto, criado para facilitar a implementação de banco de dadosorientados a objetos. Mas como muitas empresas ainda possuem sistemas legados baseados em banco dedados relacionais, elas não dispões de recursos ou mesmo tempo para um migração total para um banco de
  8. 8. dados orientado a objetos. Para resolver este problema o Oracle permite criar uma visão de objeto de formaque facilite essa transição de relacional para objeto permitindo que as aplicações vejam os dados comoobjetos que possuem atributos e métodos, enquanto que os sistemas legados podem executar trabalhos emlote na tabela INVENTORY. As visões de objetos permitem simulas tipos abstratos de dados, identificadoresde objetos – OID – e referências que um ambiente puramente OO de banco de dados ofereceria.Usuários e EsquemasO acesso ao banco de dados é feito por meio de usuários cadastrados, sendo sua autenticação feita pelobanco de dados em si, pelo sistema operacional ou pela rede (baseada em PKI – Public Key Infrastructure).Um usuário também pode possuir um esquema determinando se ele possui algum objeto no banco de dadoscomo tabelas, índices, visões, etc. Um usuário pode conceder acesso aos seus objetos a outros usuário,limitado ao seu esquema, ou seja, só concede permissões aos objetos que possui.PerfisComo os recursos do banco de dados não são infinitos o DBA deve gerenciar a alocação de tais recursos, pormeio de perfis que armazenam o quanto de recursos poderão ser usados (CPU, sessões concorrentes, etc)pelos usuários pertencentes ao perfil.SequenciasNúmero de 38 bits de comprimento gerados automaticamente pelo Oracle e são únicos, mas nãonecessariamente sequenciais. Se uma sequencia se perder por que qualquer motivo e não for usada, outrosnúmeros subsequentes serão gerados.SinônimosÉ simplesmente um alias para algum objeto do banco de dados (tabela, visões, índices, procedures, etc). Osinônimo não aloca espaço no banco de dados além de sua definição no dicionário de dados. Um sinônimopode ser publico ou privado e, se for privado ele será definido no esquema do usuário, caso contrario ficarádisponível para todos.PL/SQLLinguagem procedura do oracle para implementar extensões à DML quando esta não conseguir produzirresultados de maneira fácil.Procedures/FunçõesSão blocos identificador de PL/SQL. Possuem três partes: 1. seção de declaração de variaveis 2. seção de executável 3. seção de tratamento de exceçõesA diferença em entre procedures e funções é que uma função retornará um valor único para o programachamador enquanto que procedures apenas retornam um código de status. As procedures são compiladas earmazenada s no dicionário de dados uma vez e, quando mais de um usuário precisar chamar a procedurehaverá uma cópia da mesma no pool compartilhado. Além disso, uma procedure reduz o consume de bandade rede do que várias instrução select e insert sendo executas em sequencia.PacotesPacotes PL/SQL agregam várias funções e procedimentos relacionados, compostos de duas partes:
  9. 9. 1. especificação de pacote: onde são expostos os métodos e atributos 2. corpo do pacote: implementação dos métodos expostos na especificação de pacote.Os pacotes permitem que os objetos que referem a eles não precisam ser recompilados no caso de algumamudança no pacote, ao contrário do que ocorre com procedures e funções independentes.TriggersÉ um tipo especial de bloco PL/SQL ou Java executado qdo um evento especificado acontece, comoinstruções DML em uma tabela ou visão, instruções DDL e mesmo eventos de banco de dados como start estop do banco. Os trigger são muito úteis para ambiente distribuídos para simular um relacionamento dechave estrangeira entre tabelas residindo em banco de dados separados bem como, implementar regras deintegridade complexas impossíveis de implementar com as restrições padrão oferecidas pelo oracle.Estruturas de Armazenamento Físico do OracleO banco de dados Oracle utiliza algumas estruturas de armazenamento físico no disco para conter egerencias os dados a partir de transações dos usuários.Alguns arquivos contém dados reais dos usuários: arquivos de dados, arquivos de log de redo, arquivos delog de redo em repositório de arquivos. Outros arquivos mantém outras informações como os arquivos decontrole que guardam o estados dos objetos do banco de dados(tabelas, índices, visões, etc), arquivos derastreamento e alerta, os quais armazenam informações de registro em log tanto para evento de rotinacomo para condições de erro que possam ocorrer no banco de dados. Abaixo temos a relação entre asestruturas físicas de armazenamento e a estruturas lógicas de armazenamento do Oracle.Arquivos de dados: cada banco de dados deve conter pelo menos um arquivo de dados. Um arquivo dedados no oracle corresponde a um arquivo físico do sistema de arquivos do sistema operacional. Cadaarquivo é membro de somente um único espaço de tabelas. Tal arquivo pode ser expandido caso o DBAache que isso seja necessário.
  10. 10. Arquivos de Log de redo: sempre que dados são alterados nos banco de dados, tabela, indices, visões,etc, uma entrada no arquivo de log de redo é criada. Cada banco de dados possui pelo menos 2 que sãopreenchidos de maneira circular, ou seja, qdo um está totalmente preenchido o outro começa a ser utilizadocomo log. O arquivo de log de redo tem sua utilizadade no caso da instancia oracle falhar ou cair porqualquer motivo, pois ao ser reiniciado esse arquivo é utilizado para reestabelecer o estado do banco dedados antes da fallha numa operação denominada roll forward. Cabe ressaltar que multiplas cópias de umarquivo de log pode existir em discos físicos diferentes para assegurar alta disponibilidade e integridade dosdados, 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 estearmazena os metadados do banco de dados, ou seja, os dados sobre a estrutura física do próprio banco.Contém o nome do banco de dados, qdo ele foi criado, os nomes e as localizações de todos os arquivos dedados e arquivos de log de redo. Qualquer alteração feita no banco de dados é imediatamente refletia nessearquivo. Como ele é crucial para a integridade do banco de dados, ele costuma ser multiplexado, ou seja, ooracle mantém várias cópias dele em diferentes partes do disco elegendo um como primário. Além disso, oOracle permite fazer backup do arquivo para o caso de alguma catastrofe acontecer, ser possível de recriar oarquivo de controle.alter database backup controlfile to traceArquivos de log em repositório: o oracle pode operar em dois modos archivelog e noarchivelog. Nomodo noarchivelog, o arquivo de log de redo é escrito de maneira circular como dito ateriormente. Se umainstância falhar, as transações serão reiniciadas no próximo restart e o arquivo de log será usado paraexecutar as transações que não conseguiram terminar. Mas, se o disco falhar as informações serão perdidas.Entretanto, se o oracle estiver funcioando em archivelog, os arquivos de log, qdo totalmente preenchidos,serão guardados em algum destino ou múltiplos destinos e, em caso de falha no disco, eles podem serresgatados do backup e utilizados para reconstruir o estado do banco de dados no momento da falha. Esterecurso é crítico 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 sessõesde usuário em background, como trace logs.Além dos aquivos mencionados, existem os aquivos de backup, arquivos de senha, de inicalizaçãoMultiplexação de arquivos: multiplexar os arquivos de log minimiza o risco de perda de dados devidos afalhas em disco físico, podendo ser automatizada utilizando-se uma instância oracle chamada ASM –Automatic Storage Management. Além disso, pode-se fazer a multiplexação de forma manual, sem umasolução ASM ou RAID, por meio de alguns parâmetros de inicialização da instância oracle.
  11. 11. Estruturas de Memória OracleO Oracle utiliza a memória física do servidor para armazenar várias coisas para uma instância oracle:opróprio código executaável oracle, informações de sessão, processos associados com o banco de dados ecompartilhamento de informações entre processos, tais como bloqueio em objetos de banco de dados. Asestruturas de memórias possuem, também instruções SQL de usuário e que serão armazenadas em disco,como blocos de dados em segmentos de banco de dados e informações sobre transações completadas nobanco de dados. A área de memória alocada pelo oracle se chama SGA – System Global Area.Existe també a chamada PGA – Program Global Area – que é privada para cada servidor e processo embackground; um PGA é alocado a cada processo.SGA: é um grupo de estruturas de memória compartilhadas para uma instância oracle, compartilhada pelosusuários da instância do banco de dados. Qdo a instância é iniciada a memória é alocada para a SGAbaseada nos valores especificados no arquivo de inicalização ou diretamento no software oracle.Cache de Buffer: o cache de buffer de banco de dados contem os blocos de dados em disco recém-lidospara devido a uma instrução select, ou que contém dados alterados ou adicionados via uma instrução DML.Pool compartilhado: o pool compatilhado possui dois subcaches: o cache de biblioteca e o cache dedicionário de dados. O cache de biblioteca contém informações sobre instruções SQL e PL/SQL executadasno banco de dados que podem ser compartilhadas entre os usuário dos banco de dados, visto quepotencialmente eles podem acessar os mesmos dados e executar as mesmas consultas. Já o cache dedicionário de dados é uma coleção de tabelas de banco de dados, que pertencem aos esquemas SYS eSYSTEM que contêm os metadados do banco de dados, suas estruturas, e os privilégios e papéis dosusuários do banco de dados. Além disso, esse cache contém blocos armazenando o dicionário de dados quesão utilizados para ajudar no processamento de instruções DML.Buffer de log de redo: contém as alterações mais recentes para os blocos de dados nos arquivos dedados. Qdo 1/3 do buffer de log estiver cheio ou a cada 3 segundos os registros de log de redo são
  12. 12. gravados no arquivos de log. Uma transação não é considerada completada se as entradas de log nãotenham sido gravadas completadamente nos arquivos de log de redo.Large Pool: é uma área opcional da SGA, utilizada para transações que interagem com mais de um bancode dados, buffers de mensagem para processos que realizam consultas paralelas e operações de restauraçãoe backup paralelo (RMAN)Java Pool: utilizado pela JVM Oracle para todos os códigos e dados java dentro de um sessão de usuário.Streams Pool: contém estruturas dados e de controle que suportam o recurso Oracle Streams, quegeerencia o compartilhamento de dados e eventos em ambiente distribuído.Program Global Area: memória alocada e privada para um processo, que depende da configuração deconexão de bando de dados, que pode ser conexão compartilhada ou conexão privada. Se for compartilhadavários usuários usuaram a mesma conexão para o banco de dados, melhorando o uso de memória masdiminuindo o tempo de resposta. Já a conexão privada é o contrário, sendo recomendado o uso eambientes dedicados.Área de código de Software: armazenam os arquivos executáveis oracle que estão em execução porparte da instância. São áreas estáticas de somente leitura e modificadas apenas por uma nova distribuiçãode software. De acordo com os parêmtros de inicialização, esses arquivos podem ser compartilhados entrevários usuário ou não, claro que isso reflete no uso de memória do servidor.Processos em segundo planoQuando uma instância oracle é iniciada, múltiplos processos em background também são iniciados. Umprocesso em background é um código rodando em background projetado para um tarefa específica,conforme listado abaixo e mostrado na figura.
  13. 13. SMON: System monitor: no caso de queda do sistema é responsável por ler os arquivos de log de redoaplicando as entradas lidas no banco de dados para restaurar o banco de dados no momento da falhaocorrida.PMON: Process Monitor: se uma conexão do usuário for descartada por qualquer motivo ele realiza otrabalho de faxina: • reverte a transação que estava em progresso no caso de ter havido falha • marca blocos da transação como disponíveis 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 ativosDBWn: Database Write, grava os blocos de dados novos ou alterados na cache de buffer de nos arquivos dedados, utilizando um algoritmo de LRU. Até 20 processos DBWn podem ser iniciados.LGWr: log writer: responsável pelo gerenciamento do buffer de log de redo. É um dos processos mais ativosem uma instância que tem atividade DML intensa. Uma transação não é considerada bem sucedida se oLGWr não escrever todas as entradas do buffer de log no aquivo de log de redo, incluindo o registro deconfirmação. Inclusive, os buffers sujos no cache de buffers não podem ser gravados nos arquivos de dadospelo DBWn até que o LGWr tenha gravado as informações de redo.ARCn: Archive process: se o banco de dados estivem em modo ARCHIVELOG, então este processoarmazena os logs de redo em um ou mais destinos (diretórios, dispositivos ou endereços de rede) sempreque um arquivo de redo esteja totalmente preenchido e um novo acabou de começar a ser usado.CKPT: checkpoint process: processo de ponto de verificação que ajuda a diminuir a quantidade de temponecessária para recuperção de instância.RECO: Recovery process: trata falhas de transações distribuídas. Se uma tabela A no banco de dados AA foralterada juntamente com uma tabela B no banco BB e ocorrer uma falha de conexão antes de BB seratualizado o RECO reverterá a transação.

×