Script de tarefas do Oracle no Linux

1

Estou mais familiarizado com o Windows, então o Linux é um lugar bastante estranho para mim no momento, então, por favor, me exponha se essa é uma pergunta idiota.

Basicamente, gostaria de saber se alguém tem alguma sugestão e / ou recomendações para escrever scripts para o desligamento / inicialização, backup e várias outras tarefas regulares de DBA.

Eu também aprovaria qualquer orientação sobre como configurar scripts para alterar ambientes / casas em um ambiente multi-homed.

Uma coisa que fiz foi esquecer de mencionar seu shell padrão para o RHEL 5.

obrigado.

    
por OilyRag 28.06.2009 / 13:46

7 respostas

5

O Oracle é gerenciado usando o sqlplus & ferramentas rman, seja qual for o sistema operacional. Seus scripts não devem exigir muitas mudanças para funcionar no Linux.

Como dito, use o crontab (dê uma olhada na página do cron) e não se esqueça de adicionar a conta que você usa para executar a manutenção no grupo do dba.

Eu costumo trabalhar com 2 scripts: O primeiro define o ambiente e chama o segundo que executará a ação.

Poderia ser assim:

shutdown_DevDB1.sh

#!/bin/sh
set ORACLE_SID=DevDB
set ORACLE_HOME=/opt/oracle/Home1
set ORA_SCRIPTS=/opt/oracle/scripts

if [ -f $ORA_SCRIPTS/$ORACLE_HOME/$ORACLE_SID-shutdown.sql ]; then
    $ORA_SHUT = $ORA_SCRIPTS/$ORACLE_HOME/$ORACLE_SID-shutdown.sql
else
    $ORA_SHUT = $ORA_SCRIPTS/generic/shutdown.sql
fi
$ORA_SCRIPTS/shutdown.sh

shutdown.sh

#!/bin/sh
echo 'date': shutting down $ORACLE_SID.
$ORACLE_HOME/bin/sqlplus /nolog @$ORA_SHUT
if [ $! != 0 ]; then
    echo Impossible to shut down $ORACLE_SID
    exit -1
fi
echo $ORACLE_SID has been shut down.

shutdown.sql

connect / as sysdba
shutdown immediate;
quit;

Na maioria das vezes, você pode simplesmente copiar o primeiro script e alterar as três primeiras linhas. E se você tem um banco de dados com algumas singularidades, coloque o arquivo sql no lugar certo para usá-lo em vez do genérico.

    
por 28.06.2009 / 14:36
0

Eu sugeriria investigar o 'cron' o mais rápido possível, você provavelmente encontrará o / etc / crontab informando algumas coisas "úteis" e há diretórios de atalhos para intervalos regulares:

- /etc/cron.hourly
- /etc/cron.daily

Além disso, 'crontab -u -l' mostrará o crontab para um usuário e isto é normalmente armazenado em / var / spool / cron com o Linux. Nada disso é específico para a Oracle, no entanto, é essencial para que os trabalhos sejam executados de forma automática e confiável, muito útil para a realização de snapshots e backups de bancos de dados, etc etc etc.

Os scripts para inicialização e desligamento normalmente estão escondidos em '/etc/init.d' e geralmente são fornecidos / instalados pelo pacote de software na instalação inicial.

Se você pudesse editar sua pergunta para incluir mais detalhes sobre o seu ambiente, isso permitiria que alguém desse uma resposta mais completa ao seu problema: -)

  • Distribuição do Linux
  • Versões de software
por 28.06.2009 / 13:50
0

Eu recomendaria usar uma linguagem de script em vez de scripts de shell para tarefas mais complexas. Ter uma conexão persistente com o banco de dados por meio de várias tarefas diferentes é muito mais fácil quando você pode estabelecer um identificador de banco de dados. Em scripts de shell, você tende a chamar várias ferramentas de linha de comando, cada uma das quais deve estabelecer uma conexão com o banco de dados, que é subsequentemente demolida quando a ferramenta termina de ser executada.

O'Reilly tem um livro que aborda o Perl e o Oracle especificamente a partir de uma perspectiva de DBA, em oposição aos desenvolvedores de aplicativos:

link

Que você pode achar bastante útil.

    
por 28.06.2009 / 16:19
0

Alterando env. é bem simples, você pode usar alguns aliases para alternar seu ORACLE_HOME e PATH para apontar para diferentes instalações de banco de dados:

alias dbprob='export ORACLE_HOME=/ora/app/10.2/dbprod'
alias dbtest='export ORACLE_HOME=/ora/app/10.2/dbtest'

Quanto a um simples script de início / parada, consulte o URL a seguir , no script 'oracle.sh' que é um script de inicialização nativo do RHEL

    
por 28.06.2009 / 18:17
0

Só para adicionar, pegue um livro sobre script de shell e verifique se você tem um bom conhecimento disso. Sh e suas derivadas são um pouco melhores para scripts do que arquivos windows CMD - o paradigma subjacente não é tão diferente, mas funciona um pouco melhor.

Um dos outros pôsteres mencionados perl, para o qual uma ampla variedade de bibliotecas está disponível para trabalhar com a Oracle. Olhe para cima www.cpan.org e procure. O Python também possui muitas bibliotecas Oracle, das quais talvez a mais interessante seja o CX_Oracle de Anthony Tuninga e suas ferramentas associadas.

Se você quiser conhecer o Linux / Unix, esta postagem do Stackoverflow possui links para muitos recursos e uma lista de bons livros sobre vários aspectos do sistema. Há muitos, muitos livros na Oracle, dos quais eu acho que o Oracle One-on-one Expert da Tom Kyte e o Oracle Effective by Design são um bom começo.

Por fim, se você estiver trabalhando com a Oracle, obtenha um conhecimento prático do dicionário de dados. Isso é extremamente útil e (IMHO) um pouco melhor que o do SQL Server.

    
por 28.06.2009 / 20:16
0

Você também deve consultar o Oracle Enterprise Manager / Grid Control para gerenciar seu ambiente de banco de dados. Ele possui um rico conjunto de recursos de gerenciamento pré-definidos para você (incluindo tarefas como inicialização / desligamento de uma instância). Apenas outro pensamento.

    
por 29.06.2009 / 20:13
0

Dê uma olhada também no oraToolKit - O canivete suíço para o Oracle .

É muito bom, ajuda com tarefas de instalação do Oracle em várias plataformas, inicialização / desligamento usando seu "appctl" e várias tarefas ou opções de backup.

    
por 23.05.2012 / 10:48

Tags