Script facilitador de vida - RAC Edition
Caros amigos leitores.
O trabalho é árduo e o tempo é curto. Aproveitei o carnaval para fazer umas migrações para um ambiente em RAC e como ficaram várias instâncias (por enquanto 7 por nó e vai aumentar depois) fiz um script pra executar comandos em várias bases assim como o post anterior "Script Facilitador de Vidas - Várias bases de dados". Como disse o "Grande Soldador": viu a necessidade, atenda! O script anterior era válido para instância única então fiz esse para quem trabalha com Oracle RAC.
De início o script pede o número do nó no ambiente cluster. Depois pede o utilitário para execução que cadastrei o SQLPLUS e o RMAN. Por último o comando que será executado.
Na execução, o script abaixo criará um arquivo de entrada que é chamado pelo utilitário escolhido. Podem alterar o script para adaptar a alguma necessidade como: catálogo rman, etc. Como o script anterior, usa referências no "/etc/oratab".
Sei que o GRID CONTROL, que também utilizamos, possui um recurso de executar comando em várias bases de dados, mas não fornece output, apenas se o comando deu erro ou não.
Segue abaixo o script e a saída como teste (desculpem a minha mania de colocar em inglês, prefiro pra evitar os problemas com acentos):
O trabalho é árduo e o tempo é curto. Aproveitei o carnaval para fazer umas migrações para um ambiente em RAC e como ficaram várias instâncias (por enquanto 7 por nó e vai aumentar depois) fiz um script pra executar comandos em várias bases assim como o post anterior "Script Facilitador de Vidas - Várias bases de dados". Como disse o "Grande Soldador": viu a necessidade, atenda! O script anterior era válido para instância única então fiz esse para quem trabalha com Oracle RAC.
De início o script pede o número do nó no ambiente cluster. Depois pede o utilitário para execução que cadastrei o SQLPLUS e o RMAN. Por último o comando que será executado.
Na execução, o script abaixo criará um arquivo de entrada que é chamado pelo utilitário escolhido. Podem alterar o script para adaptar a alguma necessidade como: catálogo rman, etc. Como o script anterior, usa referências no "/etc/oratab".
Sei que o GRID CONTROL, que também utilizamos, possui um recurso de executar comando em várias bases de dados, mas não fornece output, apenas se o comando deu erro ou não.
Segue abaixo o script e a saída como teste (desculpem a minha mania de colocar em inglês, prefiro pra evitar os problemas com acentos):
#!/bin/bashSaída:
echo "Provide Node Number (RAC):"
read node_number
if [ -z $node_number ]; then
echo "You have to provide a valid node number (datatype number(1))"
fi
echo "Provide utility:"
echo "SQLPLUS => 1"
echo "RMAN => 2"
read utility
if [ -z $utility ]; then
echo "You have to provide a valid utility number (datatype number(1))"
fi
echo "Provide command(s):"
read commands
#if [ -z $commands ]; then
# echo "You have to provide a valid command (datatype varchar)"
#fi
case $utility in
1) touch commands.sql
echo "prompt -- Output for instance &_connect_identifier:" > commands.sql
echo "$commands" >> commands.sql
for i in `cat /etc/oratab|grep -v "^*"|sed '/^$/d'|sed '/^#/d'|sed '/^+/d'|cut -d ":" -f 1`; do `echo "export ORACLE_SID=$i$node_number"`; sqlplus -S / as sysdba @commands<<EOF
prompt
exit
EOF
done
rm commands.sql
echo "End of SQLPLUS execution.";;
2) touch commands.rman
echo $commands > commands.rman
for i in `cat /etc/oratab|grep -v "^*"|sed '/^$/d'|sed '/^#/d'|sed '/^+/d'|cut -d ":" -f 1`; do `echo "export ORACLE_SID=$i$node_number"`;rman catalog rman/rmancat@rman target / cmdfile=commands.rman<<EOF
exit
EOF
done
rm commands.rman
echo "End of RMAN execution.";;
esac
[oracle@node2]/home/oracle$ ./exec_commands.shFaçam bom uso.
Provide Node Number (RAC):
2
Provide utility:
SQLPLUS => 1
RMAN => 2
1
Provide command(s):
show parameter instance_name
-- Output for instance MICROSOFT2:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string MICROSOFT2
-- Output for instance GOOGLE2:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string GOOGLE 2
-- Output for instance APPLE2:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string APPLE2
-- Output for instance ORACLE2:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string ORACLE2
-- Output for instance DATAMANAGER2:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string DATAMANAGER2
-- Output for instance SAP2:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string SAP2
-- Output for instance AMAZON2:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string AMAZON2
End of SQLPLUS execution.
Comentários
Postar um comentário