Category Archives: Oracle

Matando Sessões KILLED

Algumas vezes sessões ficam “presas” no banco de dados com status KILLED. Elas estão/são mortas e mesmo assim não desaparecem da gv$session, ficam como “zumbis”. Algumas podem até impedir o shutdown do banco de dados. Aqui vamos ver como resolver isso.

Felizmente resolver este problema não é complicado, mas temos que verificar algumas coisas antes de sair matando os processos do Oracle. De forma resumida (e bem resumida) toda a conexão feita pelo usuário ao banco de dados cria um processo no servidor que fica responsável por fazer a comunicação com o kernel do banco de dados. Ao finalizarmos este processo a conexão do usuário é terminada e o Oracle libera a sessão do usuário.

Continue lendo…

Webinar Exadata SIG – Gerenciamento de Recursos

No dia 31/07/2013 apresentei o 2º Webinar do Exadata SIG, este sobre gerenciamento de recursos em um ambiente Oracle. O Webinar cobriu diversos assuntos, incluindo Resource Manager, IORM, Instance Caging e algumas dicas sobre o gerenciamento do Exadata.

A principal idéia que tentei passar no Webinar é que usando o Exadata podemos administrar e gerenciar todos os recursos do ambiente. Podemos gerenciar as conexões através do uso de services do Oracle RAC, número de CPU disponíveis através o instance caging, divisão do CPU através do Resource manager, e gerenciamento do IO através do IORM. O importante é a integração que o Exadta permite.

Claro que não é só o Exadata que pode tirar proveito destas funcionalidades, um Oracle em um ambiente tradicional também pode se beneficiar de algumas delas. A única restrição é em relação ao IORM. Caso você queira ler mais sobre o IORM pode ler alguns posts que fiz sobre ele aqui no site (aqui, aqui e aqui).

O link para download do Webninar é este (Webinar-Gerenciamento-de-Recursos) . Ele está em formato PDF, os arquivos externos que estão na apresentação estão aqui (Anexos-Webinar-Exadata) em formato ZIP.

Caso queira saber mais sobre o Exadata SIG, você pode visitar a página do GUOB e clicar na aba “GUOB Exadata SIG”.

Oracle e Hugepages

Em diversos artigos no MOS encontramos informações importantes resumidas a uma simples nota de rodapé ou a uma única linha no meio do texto. Geralmente isso nos leva a pesquisar mais, nos aprofundar no assunto. Foi isso que aconteceu quando estava começando a trabalhar com o Exadata em 2010. Eu estava garimpando algumas notas no MOS atrás de informações sobre o uso do Exadata com OLTP e encontrei uma breve referência ao uso de Hugepages.

Estava lendo a nota MOS# 1067520.1 (que é uma das principais notas sobre desempenho para o Exadata) e lá estava a seguinte informação: “Hugepages should be used, as this reduces the page table size and also reduces process startup time. Review  MOS Note 361323.1 and Note 401749.1 for details on hugepages”.

Era uma informação literalmente solta no meio do texto e achei melhor investigar. A nota MOS# 361323.1 tinha o sugestivo nome de “HugePages on Linux: What It Is… and What It Is Not…” e era uma ótima introdução ao que é Hugepages. Já tinha ouvido sobre Hugepages e Oracle, mas isso era para Oracle 9 em ambientes 32 bits com mais de 4GB de memória.

Continue lendo…

Exadata X3

Na Oracle Open World San Francisco 2012 ocorreu o lançamento do Exadata X3, estive acompanhando durante estes dias as novidades e fiz um resumo do que podemos encontrar nesta nova versão. Infelizmente não tive a mesma sorte que o Rodrigo Almeida  e o Vinicius que estiveram presentes no evento em São Francisco, mas os documentos liberados pela Oracle estão cheios de informação.

Primeiramente, não podemos pensar no Exadata X3 somente como uma atualização de hardware, ocorreram mudanças significativas no software também. Então, além de um hardware novo temos um software atualizado no Exadata X3.

Continue lendo…

Atualizando o Exadata – DBNODE

Diferentemente da atualização do storage node a do dbnode é mais complexa e não existe nada semelhante ao patchmgr para ajudar, é tudo feito através do passo a passo e manualmente. Prepare-se para um post extenso, com muita informação e com diversos logs de comandos executados. Tentei não poupar informações dos comandos executados para poder compartilhar o máximo, qualquer dúvida é só perguntar. Tudo o que está descrito aqui ocorreu a uns dois meses atrás durante a atualização do Exadata que executei.

Cabe resaltar que na versão 11.2.3.1.0 ocorreram grandes mudanças na forma como dbnode é atualizado. Na realidade esta versão é um divisor de águas no método de atualização. O primeiro local onde isso é citado é na nota 888828.1, que informa que o minimal pack foi descontinuado. O minimal pack era um arquivo que continha todos os pacotes dos aplicativos e bibliotecas do Linux e o kernel do dbnode a serem atualizado.

A partir da 11.2.3.1.0 a atualização passa a ser através da Unbreakable Linux Network (ULN), onde estão disponíveis todos os pacotes e repositórios da Oracle para Linux. Desta forma, você precisa criar um servidor que será um mirror de alguns dos canais disponíveis na ULN. Complicou não é? Calma que isso é só o começo.

Com base no readme do patch 13998727 (versão 11.2.3.1.1) somos informados que o método para criar este mirror está descrito no patch 13741363. Com base no readme deste patch somos apresentados aos requisitos e passos necessários para criar o mirror. A este método chamamos de One-Time Setup, servindo como preparação para a atualização do dbnode.

Infelizmente a documentação começa a ficar confusa neste ponto, se você observar no readme do patch para 11.2.3.1.1 você irá ver que os passos listados no passo 6 parecem incompletos. Na realidade eles estão, pois o passo 1 leva a ao One-Time que deve estar concluído e os outros remetem a passos de outra nota onde você deve trocar algumas informações para prosseguir. Bem complicado e suscetível a falhas, é importante saber ler nas entrelinhas.

Continue lendo…

Trocando o disco

Há uns dois meses recebi um e-mail de madrugada que uma SR nível 2 havia sido aberta para o Exadata e que o acompanhamento do caso estava aberto. De manhã pude observar que um disco de uma célula havia queimado (o segundo em dois anos) e que o ASR havia detectado o problema e aberto uma SR para a troca do disco.

Achei interessante, pois na primeira vez não pude fazer o log dos passos para registro e esta seria a oportunidade. Também na primeira vez não tinha configurado o ASR e só observei que o disco estava com problema quando fui fazer o checkup semanal no Exadata.

Quando um disco falha no Exadata, o primeiro local a detectar é a ILOM, onde o erro é identificado e um evento é gerado. Este evento é lido pelo ASR e uma SR é aberta automaticamente. Após a falha ser detectada pelo ILOM e o disco ser removido, uma alerta é gerado pelo software do Exadata. Além disso, um e-mail é enviado com algumas informações adicionais sobre o erro. Os detalhes deste alerta podem ser verificados através do cellcli da célula.

Continue lendo…

Unboxing Exadata

Sempre vi os posts de unboxing e me perguntava qual o motivo, nunca entendi. Recentemente consegui compreender a alegria do momento.

Recebemos a alguns dia o nosso segundo Exadata e consegui registrar o momento. As imagens falam por si e mostram desde o recebimento (com escolta armada, diga-se de passagem) até o destino ao lado do irmão mais velho.

Recebendo ele, sim escolta armada de tudo. Incluindo a autorização da central para abrir a porta traseira:

Continue lendo…

IORM – Parte III

Ao falar de IORM, deve-se lembrar que ele é somente uma parte do processo. Como já citei em posts anteriores, o IORM é um resource manager semelhante ao encontrado no banco de dados, sendo chamado de interdatabase enquanto o resource manager do banco de dados é chamado de intradatabase. O IORM deve ser somente uma das funcionalidades utilizadas em um projeto para Exadata, um bom projeto começa com preocupações que vão desde a conexão a base de dados, passando pela gerência dos recursos internos da instância e indo até I/O.

A integração do IORM com o resource manager do banco de dado pode ser realizada através de categorias (catPlan). Apesar de o IORM em suas métricas apresentar a distinção por consumer groups não é possível utilizá-los na definição do plano de recursos. Com o uso de categorias, você pode ir além de uma simples delimitação de recursos por bancos de dados, você pode agrupar o I/O independente do banco de origem.

Além do controle através de categorias, o IORM pode utilizar somente bases de dados (dbPlan), mas este não consegue se integrar completamente com o plano de recursos da base de dados. O uso é realizado de maneira indireta, somente através das métricas, sem qualquer possibilidade de gerência ou direcionamento dos recursos.

Antes de começar a definição do plano de recursos do IORM deve-se analisar o conjunto das bases de dados que estarão em execução. Indo além, deve-se verificar quais os tipos de aplicativos e carga de trabalho existente. Com base nesse levantamento será possível traçar quais os serviços que podem ser criados, quais os consumer groups existentes e principalmente, quais as categorias de I/O que são comuns entre as bases de dados.

Continue lendo…

IORM – Parte II

Depois de um breve hiato (mais um), volto a falar sobre o IORM. Acredito que seja interessante a leitura do último post para quem está chegando agora.

Algo importante a ser observado no IORM é a granularidade, qual o nível de controle que você deseja ter sobre o I/O do seu Exadata. Até que nível de controle você deseja chegar, mas lembrando que quanto maior o controle maior a complexidade de gerenciamento.

Como disse no post anterior, o IORM é um resource manager. Desta forma a sua configuração é muito parecida com o Resource Manager do banco de dados, na realidade eles estão intimamente ligados. Devido a esta similaridade, a configuração do IORM baseia-se em níveis e alocação de recursos (cabe um adendo para dizer que pode ser por limite também).

Assim, no IORM você pode exercer este controle de algumas formas, basicamente por dois grupos: catplan e dbplan. O catplan é a distinção de I/O por categorias, estas definidas dentro de cada banco de dados. E o dbplan é a configuração baseada somente em banco de dados.

A definição de catplan vai além do IORM, ela vem diretamente do banco de dados. No catplan o I/O distribuído pelo plano do IORM leva em consideração as categorias definidas para o Consumer Group dentro do banco de dados. Por outro lado o dbplan faz com que a alocação de I/O seja direcionada pelo IORM entre os bancos de dados especificados no plano.

Um ponto importante, e uma das grandes vantagens do IORM para mim, é a possibilidade de utilizar mesmas categorias em bancos de dados distintos. Assim, por exemplo, você pode ter uma categoria batch no IORM para garantir (ou restringir) o I/O independente do banco de origem.

Você pode achar que isso estranho ou que não seja correto, mas em um cenário onde você tem diversos bancos no seu Exadata você não gostaria de ter uma rotina de carga de dados influenciando as consultas de sua aplicação crítica, não é? Se você estivesse utilizando somente o dbplan o batch de um banco poderia estar influenciando (leia-se roubando I/O) de outro banco.

Além disso, você pode utilizar o catplan e dbplan em conjunto, maximizando a granularidade do seu controle. Assim mesmo especificando categorias você pode definir qual o banco que receberá mais I/O daquela categoria. Supondo dois bancos A e B e duas categorias C e D em um plano onde a categoria C tem 70% de I/O e a D tem 20 % (sobrando 10% para qualquer outra) e o banco A com 60% e o B 40%. Isso significa que a categoria C tem garantia de 70% de I/O e o banco A tem garantia de 60% destes 70%.

Isso ocorre, pois o catplan tem prioridade sobre o dbplan. Infelizmente na documentação não existe esta definição clara desta relação, mas em uma SR tive uma conversa com a equipe de desenvolvimento e esta informação foi repassada.

Assim, você pode ter uma idéia básica de como a granularidade do IORM funciona, como você pode garantir a distribuição do I/O entre categorias e bancos de dados. Indo um pouco mais, você pode observar que o plano do IORM pode ser facilmente integrado com o Resource Manager do banco de dados e, indo um pouco mais fundo, integrado com serviços. Fica fácil ver até onde podemos chegar, até que nível de controle você pode ter e qual a granularidade de seu I/O.

Vamos aos fatos, qual o storage hoje em que você pode dizer que o I/O para o serviço que atende conexões web pode ter prioridade sobre o que atende conexões desktop, e isso independente do banco origem da conexão e sem fazer qualquer alteração na estrutura de seu banco? Fica fácil entender porque o Exadata não é somente hardware, e isso que nem falei tudo sobre o IORM (como por exemplo, desabilitar o uso da flashcache ou o tipo de carga).

Nos próximos posts falarei um pouco mais do IORM e, o mais importante, com exemplos.

IORM – Parte I

Recentemente comentei com alguns amigos que escreveria aqui com mais frequência, escreveria sobre assuntos relacionados ao Exadata e afins. Bom, como podem ver, não deu muito certo. Assumo a culpa, foi um mês corrido, problemas para resolver, bugs, o de sempre da vida de um DBA.

Hoje vou começar uma série de posts sobre o que eu acredito ser uma das funcionalidades mais interessantes do Exadata, o I/O Resource Manager (IORM). Resumindo, para quem não sabe, com o IORM é possível priorizar e categorizar o I/O no Exadata. Como o nome já sugere, é um resource manager.

Mas antes de explicar sobre ele, vamos voltar um pouco. Quando você pensa em Exadata uma palavra que vem sempre a mente é consolidação. Consolidar bases de dados em um único local para aproveitar o máximo de recursos. Essa é uma das vantagens, mas vamos encarar os detalhes.

Em um ambiente de banco de dados normal você tem os servidores de bancos de dados (cuidando basicamente do processamento) e o storage, separados. Se você tiver vários bancos, você faz o que? Separa a carga, correto? E com o storage você faz o que, separa os bancos em Raid Groups diferentes? Luns diferentes para cada base?

Você deve estar se perguntando o que isso tem haver com o Exadata, simples. Lembra da palavrinha consolidação de alguns parágrafos acima? No Exadata além de ter servidores para banco de dados (os database servers), você tem o “storage” (os storage servers). Resumindo, estes últimos entregam o “espaço” para o ASM que estão nos database servers. O conceito de luns como em um storage comum desaparece. Falarei com detalhes isso em outro post.

Com a consolidação, você acaba “puxando” todas as bases para um único local tanto em servidores de banco quanto em storage. Você tem que começar a definir as prioridades sobre as bases de dados evitando assim concorrências entre elas. Como no Exadata você não pode trabalhar da mesma forma como um storage normal (acho que nem seja esse o intuito), você utiliza o IORM para administrar o I/O do seu Exadata. Definindo prioridades e catagorias para o I/O das bases que estão no Exadata.

Bem, o IORM é mais do que isso, a granularidade sobre o I/O é bem maior. Como falei acima, esse é o primeiro post de muitos. Na internet você encontra bastantes detalhes sobre o IORM e o Exadata. Se você tem acesso ao Metalink (sim, sou old school) verifique a nota 1187674.1, lá você encontrará um white paper sobre o Storage Server do Exadata, vale a leitura.