Pular para o conteúdo principal

Relinking RDBMS Oracle Home

A Oracle recomenda que seja executada o relink dos binários Oracle Home após um patch, atualização, remoção ou qualquer outro procedimento que tenha impacto nas bibliotecas do sistema operacional. Esse artigo irá explicar alguns conceitos relacionado ao relink e no final explicar como realizar o procedimento.

           
O que é o "relinking"?

            O processo de comunicação de hardware em binário ou na linguagem de máquina é algo muito complexo e difícil de entender. Uma vez que os usuários perceberam essa dificuldade em usar a linguagem de máquina, surgio a liguagem de alto nível para facilitar a vida dos programadores com funções e estrutura de dados predefinidas bem mais simples de entender e memorizar.
            As funções predefinidas para qualquer linguagem são definidas dentro da biblioteca de arquivos de cada linguagem e isso é requerido para compilar o código e criar o arquivo no formato binário (object file). Após isto, os objetos são linkados com a biblioteca do SO para criar um arquivo executável. A criação de um link requer que todas as funções definidas sejam encontradas para que o executável seja gerado com sucesso.
            Os termos linking e relinking tem o mesmo significado neste contexto e podem ser usados indistintamente. Em ambos os casos o executável é construído a partir de componentes pré-compilados.
  
   Os tipos de arquivos envolvidos no relink são:
    * .c   (source code file)
    * .o   (object file)
    * .a   (archived file)
    * .so or .sl on HP/UX (PA-RISC) (library files)


Entendendo o que é relink para os binários Oracle.

A Oracle não disponibiliza diretamente o código fonte (escrito em C) nem os executáveis/ binários. O software é entregue como object files (.o files), muitos deles agrupados em archive files (.a files) e então agrupados num formato com compressão jar. Estes objetos são relinkados a nível de sistema operacional durante a instalação para criar executáveis. Isto garante a integração confiável com as funções disponibilizadas pelas bibliotecas do SO.
 Geralmente durante o relink os executáveis atuais são renomeados e salvos, enquanto os novos são gerados. Um vez que os novos executáveis estão no lugar correto e os testes com os novos foram completados com  sucesso, podemos deletar os antigos do diretório ORACLE_HOME/bin. Cada um dos antigos executáveis tem um 'O' incluído no nome do arquivo, por exemplo, 'exp' é renomeado para 'expO'. A vantagem de fornecer os binários (object files) é a redução do tamanho do patch/package; ao invez de prover todas as bibliotecas ou programas, somente object files são entregues para serem linkados com a biblioteca do SO para a criação de executáveis.

Abaixo os diretórios que possuem vários objetc files e archive files no Oracle Home.
  • /lib
  • /usr/lib
  • $ORACLE_HOME/lib
  • $ORACLE_HOME/rdbms/lib
  • $ORACLE_HOME/<product>/lib

Existe um arquivo chamado "sysliblist" que fica no diretório $ORACLE_HOME/rdbms/lib ou $ORACLE_HOME/lib. Ele contém uma lista com outras bibliotecas que precisam ser inclusas.

Como fazer o relink do Oracle Home?
Abaixo estão alguns passos para fazer o relink do binários Oracle.
'Setar' as variáveis de ambiente
Durante o link, as seguintes variáveis precisam ser usadas:
  • DISPLAY
  • TERM or ORACLE_TERM
  • ORACLE_HOME
  • PATH to include $ORACLE_HOME/bin
  • LD_LIBRARY_PATH $ORACLE_HOME/lib:/usr/lib
  • SHLIB_PATH $ORACLE_HOME/lib:/usr/lib (somente para HP-UX)


Executando o relink:
  • Verificar se o valor do umask é 022; caso o valor seja outro user o comanado: umask 022
  • Pare todas as instâncias oracle que estão iniciadas pelo ORACLE_HOME e outros processos como o listener, sqlplus.
  • Somente para o SO AIX: Como root execute: slibclean; depois de 5 minutos execute novamente o comando.
  • Como oracle, execute o seguinte:
    $ORACLE_HOME/bin/relink
    Os parâmetros aceitos para o comando relink são:                                                                         "all ", " oracle " , " network",  "client" , "client_sharedlib" , "interMedia" , "precomp" , "utilities ", "oemagent",  "ldap".

Comentários

Postagens mais visitadas deste blog

Configurando a política de retenção de backups no RMAN

                       Configurando a politica de reten çã o de backups no RMAN        O objetivo deste post é explicar como podemos configurar a reten çã o de backups na poderosa ferramenta de backup do bando de dados Oracle RMAN. Podemos configurar nossa pol í tica tendo por base dois tipos: janela de recupera çã o (recovery window) ou redundãncia (redundancy). Abaixo iremos abordar os dois tipos.       Para identificar qual dos dois tipos o RMAN está usando, use: RMAN> show retention policy; Política baseada em redundância CONFIGURE RETENTION POLICY TO REDUNDANCY 1; Política baseada em janela de recuperação CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS; ·        Política baseada em redund â ncia ( REDUNDANCY )       De uma maneira bem simples e objetiva, o par â metro REDUNDANCY especifica quantos backups full ou incremental level 0 de cada datafile o RMAN vai manter, os demais são considerados obsoletos. Veja o exemplo abaixo

Permissões necessárias para criar triggers no Oracle

Há pouco tempo passei por um problema durante a criação de uma trigger de LOGON na versão 12c do banco de dados Oracle. Estava com alguns problemas em uma aplicação que tinha uma trigger de Logon. A trigger em si era bem simples, vou por o código mais abaixo, o problema é que ela estava criada dentro do usuário SYSTEM. Provavelmente foi a maneira mais fácil e preguiçosa de criar o objeto, uma vez que o SYSTEM já possui todas as permissões necessárias para criação. Porém isso não uma boa prática. Então resolvi tirar do SYSTEM e jogar para o usuário dono dos objetos da aplicação. Quando fui tentar criar o objeto no SCHEMA dono dos objetos da aplicação, recebi um erro com falta de permissões: ORA-01031: insufficient privileges . O erro ocorreu porque estava esquecendo de conceder a role ADMINISTER DATABASE TRIGGER para o usuário. Em resumo, as permissões necessárias para criação de uma trigger: CREATE TRIGGER - para criar uma trigger no seu próprio esquema (SCHEMA) CREATE AN

ORA-01623 ORA-00312 - Removendo redo logs

Após realizar um restore de um ambiente de Oracle RAC para um single instance usando snapshot de storage, tentei recriar os redo logs recebi o seguinte erro durante a exclusão de um grupo de discos. SQL> alter database drop logfile group 2; ORA-01623: o log 2 é o log atual para a instância UOW (thread 1) - não é possível eliminar ORA-00312: thread 2 do log 1 on-line: '+DATA/UOW/ONLINELOG/group_2.1638.1051804433' ORA-00312: thread 2 do log 1 on-line: '+DATA/UOW/ONLINELOG/group_2.981.1051804433' O erro quer dizer que o grupo de redo pertence a outra thread. Quer dizer que ele pertence a outra instância do ambiente RAC. Como no meu caso não precisarei mais dela, basta usar o comando: SAL> alter database disable thread 2; Database altered.   Usei o SQL abaixo para gerar os comandos para excluir os redo logs SQL> select distinct 'alter database drop logfile group '||(group#)||';' from v$log where thread#=2; 'ALTERDATABASEDROPLOGFILEGROUP'||(G