por Casimir Saternos
Publicado em novembro de 2005
Aprenda alguns scripts shell básicos para instalar, executar e fazer a manutenção dos Oracle Databases no Linux.
Há aproximadamente sete anos, a Oracle lançou o primeiro banco de dados comercial no Linux. Desde então, Oracle, Red Hat e Novell/SUSE têm colaborado constantemente com as alterações no kernel do Linux relacionadas ao desempenho do banco de dados e da aplicação. Por esse motivo, o Oracle Database 10g para Linux inclui aprimoramentos intimamente relacionados ao sistema operacional. Mais do que nunca, os DBAs precisam conhecer e ter prática nessa plataforma, para conseguirem administrar melhor os sistemas sob sua responsabilidade.
Há uma tradicional posição de responsabilidades entre administradores de sistema e DBAs. No entanto, essa distinção na prática nem sempre fica clara. Muitas lojas de TI empregam indivíduos que abordam preocupações no banco de dados, bem como nos níveis do sistema operacional. Sem dúvidas, o Oracle Database por si só usa os recursos do sistema operacional, além de ser projetado para interagir de perto com seu próprio ambiente.
Ademais, muitos administradores de sistemas e DBAs acham necessário, ou até conveniente, automatizar as tarefas relacionadas a suas tarefas. A instalação de software, o monitoramento dos recursos do sistema e o gerenciamento de sistemas envolvem tarefas repetitivas e propensas a erros e são melhor abordados através de processos automatizados do que procedimentos manuais.
Um método usado para automatizar essas tarefas é a criação de shell scripts. Os shell scripts desempenham uma função significativa no Sistema Linux a partir do momento em que são instalados. Diversos scripts são chamados quando o sistema é iniciado ou desligado. Os utilitários da Oracle e de outros fornecedores de terceiros são chamados por meio de shell scripts. Como eles podem ser desenvolvidos rapidamente, foram historicamente usados para prototipar aplicações. Os administradores de sistemas aproveitaram a funcionalidade disponível por meio de scripts de shell para fornecer soluções adequadas para os requisitos e idiossincrasias específicos dos sistemas sob seu monitoramento.
Neste artigo, apresentarei a funcionalidade disponível por meio do shell script "bash" relevante para instalar, executar e manter bancos de dados Oracle em uma plataforma Linux. Observe que esse artigo é destinado para iniciantes em scripts no Linux, ou para DBAs que tenham chegado agora no Linux; esse conteúdo pode não ser interessante para administradores Linux mais avançados.
O que é um Shell Script?
Um shell script é simplesmente um arquivo de texto que contém uma sequência de comandos. Quando você executa o arquivo - ou script -, ele executa os comandos contidos nele. O termo shell refere-se simplesmente à interface do usuário da linha de comando que você usa para se comunicar com o kernel do Linux. Diferentes shells estão disponíveis, incluindo C shell (csh), Korn shell (ksh), Bourne shell (sh) e Bourne-Again shell (bash). O shell por si só é um comando para ler linhas - seja de um arquivo, ou pelo terminal - interpretá-los, e, de forma geral, executa outros comandos. O shell Bourne-Again incorpora características das outros shells mencionados e é aquele que foi usado para os scripts que este artigo demonstra.
A primeira linha do arquivo do script pode ser usada para descrever qual shell será usado durante a execução do script. Este é o significado da primeira linha encontrada em todos os exemplos de script:
#!/bin/bash
Por que usar shell scripts?
Dependendo de seu plano de fundo, talvez você não veja nenhum valor imediato no shell script relacionado ao trabalho do DBA. Se você não possui experiência com sistemas UNIX ou baseados em UNIX, a imensidão de comandos sem semântica com a nossa língua pode causar certo desconforto. Além de ser um banco de dados relacional, o Oracle 10g oferece uma plataforma robusta para processamento de dados dentro do banco de dados, bem como diversos métodos para interagir com o SO fora do banco de dados.
No entanto, existem várias razões pelas quais você pode se deliciar com o mundo dos shell scripts, incluindo o seguinte:
Quando não usar shell scripts
Oracle Database inclui recursos que se estendem para além da definição tradicional de RDBMS. Como qualquer outro software, ele usa recursos fornecidos pelo sistema operacional, porém tem a capacidade maior de "ver" e "alterar" do qualquer outro software. As visualizações fixas do SQL e da Oracle fornecem uma imagem do sistema de dentro do banco de dados, enquanto o shell script fornece uma visualização do sistema de fora do banco de dados. Shell script não é a solução para cada problema.
É importante reconhecer que muitos aspectos do sistema operacional podem ser monitorados e modificados dentro do banco de dados. As visualizações fixadas da Oracle (visualizações com prefixo v$) podem ser usadas para determinar o nome do host da máquina (v$instance) ou o nome da plataforma sobre a qual o banco de dados está sendo executado (v$database). O local e outros atributos dos arquivos associados com o banco de dados podem ser determinados dessa forma. A localização e outros atributos dos arquivos de dados (v$datafile, dba_data_files), arquivos temporários (v$tempfile, dba_temp_files), logs redo (v$logfile), logs de arquivamento (v$archived_log) e arquivos de controle (v$controlfile) pode ser feita diretamente do banco de dados. Você pode determinar as informações sobre a área de recuperação flash ($recovery_file_dest) a partir desta visualização, bem como a partir dos parâmetros init.ora (db_recovery_file_dest, db_recovery_file_dest_size). A situação dos processos (v$process) e da memória (v$sga, v$sgastat, etc.) também podem ser consultados. Esses inúmeros pacotes PL/SQL predefinidos, bem como a capacidade de criar objetos de bancos de dados em Java e C oferecem acesso adicional ao SO adjacente.
Caso esteja considerando usar scripts para uma tarefa que exija um grande número de acessos ao banco de dados, talvez o script não é a sua melhor opção. Mais adiante neste artigo, há uma descrição de como acessar o banco de dados usando o SQL*Plus, mas, em muitos casos, é melhor você se aproximar do problema usando outra linguagem.
As tabelas abaixo resumem as informações acessíveis a partir do banco de dados:
Identificação do servidor | Consulta de representante | Observações> |
---|---|---|
Nome do Host onde a instância está sendo executada |
|
Você também pode obter essas informações executando os seguintes comandos no bash:
ou
|
Plataforma do sistema operacional |
|
Ao executar uname –s, informações similares são retornadas |
Locais de arquivos da Oracle | Consulta de representante | Observações |
---|---|---|
Arquivos de controle |
|
Local dos arquivos de controle do banco de dados. O parâmetro control_files do init.ora também carrega essa informação. |
Arquivos de dados |
|
Local dos arquivos de dados do banco de dados |
Arquivos temporários |
|
Local dos arquivos temporários do banco de dados |
Arquivos de log |
|
Local dos logs redo |
Logs arquivados |
|
Local dos logs redo arquivados. Os parâmetros log_archive_dest_n do init.ora também carregam essas informações. Essa consulta não retornará resultados caso o banco de dados não esteja no modo Archivelog. |
Área de recuperação flash |
|
O diretório usado em uma instalação Oracle 10g para a área de recuperação flash. O parâmetro db_recovery_file_dest do init.ora também carrega essa informação. |
Outros pontos de acesso no sistema de arquivo indicado por parâmetros. |
|
Os resultados podem variar significativamente, dependendo da sua instalação e versão do Oracle Database. Os parâmetros que podem ser retornados incluem: spfile standby_archive_dest utl_file_dir background_dump_dest user_dump_dest core_dump_dest audit_file_dest dg_broker_config_file1 dg_broker_config_file2 |
Acesso programado ao sistema de arquivo | select directory_path from dba_directories |
O parâmetro Oracle UTL_FILE_DIR e o objetos de banco de dados DIRECTORY podem ser usados para acessar os arquivos que não façam parte do funcionamento padrão do banco de dados. |
Processador/Processos | Consulta de representante | Observações |
---|---|---|
Processos de sessão |
|
O spid pode sere correlacionado aos resultados do ps –ef para comparar as informações disponíveis para comparar dentro do banco dados às informações do SO para um dado processo. |
Processos relacionados ao paralelismo |
|
Muitos aspectos do Oracle Database, como o carregamento, consultas, criação de objetos, recuperação e replicação podem se aproveitar do paralelismo para acelerar as atividades que podem ser divididas. O parâmetro parallel_threads_per_cpu define o grau padrão de paralelismo de uma instância. |
Memória | Consulta de representante | Observações |
---|---|---|
Área global do programa | select * from V$PGASTAT |
O parâmetro pga_aggregate_target é usado para configurar a memória para todas as conexões dedicadas dos servidores. Ferramentas do Linux, como vmstat e top, podem ser usadas para monitorar o uso da memória. |
Área global do sistema | select * from v$sga |
Os parâmetros SGA_MAX_SIZE e SGA_TARGET são usados para configurar recursos de alocação de memória dinâmica do Oracle Database 10g. Outros parâmetros podem ser usados para alocar memória manualmente para outros propósitos. Novamente, diversas ferramentas do Linux existem para monitorar a alocação da memória. |
Scripts BASH
Os scripts são chamados como parte de um processo automatizado - sem nenhuma intervenção humana - ou são executados de forma interativa, com um usuário respondendo aos prompts. Enquanto houver permissão de execução para um arquivo, você poderá executá-lo a partir da linha de comando diretamente pelo nome do arquivo. Caso você não tenha permissão de execução para o arquivo, mas tenha permissão de leitura, você pode executar o script começando com sh
.
Existem diversas opções, caso um script seja projetado para executar sem uma entrada do usuário. Você pode executar um script de fundo e continuar mesmo se estiver desconectado, inserindo a seguinte linha de comando:
nohup /path_to_dir/myscript_here.sh &
Isso pode ser útil para executar scripts que demoram muito tempo para serem finalizados. O comando at
pode ser usado para executar um script no futuro, e o comando cron
pode ser usado para agendar scripts para serem executados de forma recorrente.
Os exemplos a seguir cobrem os aspectos essenciais para oferecer resultados à visualização (usando echo
), loops, lógica condicional e atribuição de variáveis.
print_args.sh. Argumentos são palavras à direita do nome do comando que são repassados para o script. Para acessar o primeiro parâmetro você deve usar a variável$1
. A variável $0
contém o nome do script em si. A variável $#
contém a quantidade de argumentos dentro do script. Uma forma simples de iterar através de todos os parâmetros usados envolve o uso de um loop while
e o comando shift. Esse comando é o que permite iterar através de todos os argumentos na matriz de argumentos, em vez de ficar em um loop infinito.
while [ $# -ne 0 ]
do
echo $1
shift
done
Caso um script tenha um nome de arquivo como argumento, ou peça um nome de arquivo ao usuário, e o arquivo seja lido mais tarde pelo script, recomendamos verificar se o arquivo em questão é acessível e legível. Por exemplo, um script de recuperação que precise de um arquivo de controle restaurado pode solicitar ao usuário escolher um arquivo que será usado mais tarde pelo script para restaurar o arquivo em questão.
if [ ! -r $1 ]; then # not exists and is readable
echo "File $1 does not exist or is not readable."
exit;
fi
A sequência de caracteres
if [ ! -r $1 ];
é responsável por executar o teste de fato. Caso os conteúdos entre colchetes sejam verdadeiros, os comandos entre if and if serão executados. O teste real aparece entre colchetes. O ponto de exclamação serve para negar o teste sendo realizado. A opção -r
verifica se o arquivo tem permissão de leitura. Neste caso específico, o teste é o primeiro argumento sendo enviado ao script. Ao usar um teste diferente (-d
), você pode verificar se uma determinada entrada é um diretório (vide is_a_directory.sh).
do_continue.sh. Esse exemplo é sequência representativa simples de comandos que pode ser usada para ler a entrada do usuário por diversos motivos. Antes de executar um processo que pode resultar em perda de dados ou outros resultados indesejáveis sob certas condições que não são determináveis a partir do script, é aconselhável incluir um prompt perguntando se o usuário realmente deseja que o script execute o(s) próximo(s) comando(s). O exemplo a seguir pergunta se o usuário deseja continuar, ler uma variável chamada doContinue
a partir da linha de comando, e avalia a entrada feita pelo usuário. Se o usuário informar algo diferente de "y", essa pessoa será informada de que o script está "fechando" e sairá sem executar o restante do script após o fim do bloco if ( fi
).
doContinue=n
echo -n "Do you really want to continue? (y/n) "
read doContinue
if [ "$doContinue" != "y" ]; then
echo "Quitting..."
exit
fi
É mandatório que apenas usuários com as permissões e ambientes corretos executem determinados scripts. Uma verificação útil em um script testa o usuário que está tentando executar o script. Se você colocar um comando em caracteres de aspas simples ( '), os resultados do comando poderão ser retornados ao script. O exemplo a seguir retorna o usuário ativo na sessão atual, ao usar whoami
ele exibe a data, com a ajuda do comando de data no script.
echo "You are logged in as ‘whoami‘";
if [ ‘whoami‘ != "oracle" ]; then
echo "Must be logged on as oracle to run this script."
exit
fi
echo "Running script at ‘date‘"
Algumas vezes, os scripts escritos para interagirem com o Oracle Database exigem a entrada de informações confidenciais, como a senha de acesso do banco de dados. O comando stty –echo
desabilita o echo. Dessa forma, todas as informações inseridas no comando de leitura subsequente não serão mostrados na tela. Assim que a informação confidencial for inserida e armazenada em uma variável ( pw
no exemplo a seguir), o echo pode ser reabilitado com stty echo.
stty -echo
echo -n "Enter the database system password: "
read pw
stty echo
Oracle Scripts
Alguns arquivos ficam armazenados em um local fixo para certa instalação da Oracle. Você pode localizar o inventário da Oracle visualizando o arquivo /etc/oraInst.loc. O arquivo /etc/oratab identifica os bancos de dados, entre outros programas da Oracle, instalados no servidor.
get_inv_location.sh. Esse script é um pouco menos intuitivo do que os exemplos anteriores. Ao dividir o script em seus comandos de componentes, você entenderá melhor o objetivo do script.
Para determinar o local do estoque, é preciso listar os resultados do comando cat (responsável por exibir os conteúdos do arquivo) com o grep (recurso que imprime as linhas que correspondam a um dado padrão). Você está procurando por linhas que contenham inventory_loc.
de forma literal.
cat /etc/oraInst.loc | grep inventory_loc
Se existir mais de um local do inventário, devido a diversas instalações, talvez você queira excluir as linhas com um #, transformando-as em comentários. A opção –v exclui as linhas que contém determinado padrão.
cat /etc/oraInst.loc |grep -v "#"|grep inventory_loc
O resultado desse comando será algo como:
inventory_loc=/u01/oraInventory
Você pode redirecionar o padrão para um arquivo usando o redirecionamento >. Caso o arquivo não exista, ele será criado. Caso já exista, será substituido.
cat /etc/oraInst.loc|grep -v "#"|grep inventory_loc > tmp
Depois de ter o registro que indica o local do inventário, você deseja remover a parte do registro antes do sinal de igualdade. Desta vez, você cria os resultados do comando cat para awk (uma linguagem de verificação de padrões e processamento frequentemente usada para dividir campos de tamanho variável), que basicamente tokeniza a string. A opção –F
direciona o awk para usar o sinal de igual como delimitador. Em seguida, você imprime o segundo token da string ( $2
), isto é, tudo que estiver à direita do sinal de igual. O resultado é o local do nosso inventário (/u01/oraInventory).
cat tmp | awk -F= '{print $2}'
Não existe motivo específico para permitir que o arquivo temporário (tmp) permaneça no servidor, sendo assim, ele pode ser removido.
rm tmp
list_oracle_homes.sh. Você tem várias opções caso queira definir o ORACLE_HOME para um banco de dados específico. Você pode fazer logon como o usuário do banco de dados e echo
(ecoar) a variável $ORACLE_HOME. Você também pode procurar no arquivo /etc/oratab e escolher o nome associado à instância em questão. As entradas do banco de dados neste arquivo são exibidas no formato
$ORACLE_SID:$ORACLE_HOME:<N|Y>:
O cabeçalho único a seguir imprime o ORACLE_HOME de uma entrada com um ORACLE_SID de TESTDB:
cat /etc/oratab | awk -F: '{if ($1=="TESTDB") print $2 }'
No entanto, e se você tiver um requisito de que a operação precisa ser realizada em cada ORACLE_HOME listada no arquivo /etc/orainst? Você pode iterar através da lista, utilizando o trecho de código a seguir.
dblist=‘cat /etc/oratab | grep -v "#" | awk -F: '{print $2 }'‘
for ohome in $dblist ; do
echo $ohome
done
A variável dblist
está sendo usada como matriz. Todos os diretórios ORACLE_HOME são armazenados nesta variável. Um loop for
é usado para iterar através da lista, e cada entrada é atribuída à variável ohome
e, em seguida, é exibida como padrão.
search_log.sh. Vários logs são gerados pelos produtos Oracle e você pode estar interessado em monitorá-los. O log de alerta do banco de dados contém as mensagens críticas à operação do banco de dados. Os arquivos de log são gerados quando os produtos são instalados, desinstalados, ou quando alguma correção é aplicada. O script a seguir é iterado através de um arquivo passado na forma de argumento. Se qualquer uma das linhas contiver ORA-, um email é enviado para o destinatário.
cat $1 | grep ORA- > alert.err
if [ ‘cat alert.err|wc -l‘ -gt 0 ]
then
mail -s "$0 $1 Errors" administrator@yourcompany.com < alert.err
fi
O teste específico que está sendo executado é uma contagem do número de palavras existentes no arquivo alert.err, que é gravado quando você redireciona para alert.err. Caso a contagem de palavras (wc
) seja maior do que (-gt
) zero, o conteúdo dentro do bloco if será executado. Neste caso, você está usando mail
( send mail
também pode ser usado) para enviar mensagens. O título da mensagem contém o script em execução ( $0
), o nome do log pesquisado ( $1
) e as linhas que correspondem à pesquisa inicial ( ORA-
) como corpo da mensagem.
Variáveis ambientes como ORACLE_HOME, ORACLE_BASE e ORACLE_SID podem ser usadas para localizar recursos que não estejam em um local fixo dentro do ambiente Linux. Se você estiver administrando uma instância do aplicação Oracle E-Business Suite 11i, terá várias outras variáveis ambientais que podem ser usadas para localizar recursos. Elas incluem APPL_TOP, TWO_TASK, CONTEXT_NAME e CONTEXT_FILE, para citar algumas. Para ver uma lista completa no seu ambiente, execute o seguinte comando e examine o arquivo resultante (myenv.txt):
env > myenv.txt
Várias combinações dessas variáveis ambientais podem ser usadas como a localização de um arquivo que está sendo pesquisado. Por exemplo, um local de log de alerta pode ser definido como
$ORACLE_BASE/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log
Com base nos princípios apresentados neste script, um outro script maior pode ser escrito e agendado para ser executado periodicamente, procurando os conteúdos no log de alerta (ou outro arquivo de interesse), além de enviar um email caso algum erro seja encontrado. Em seguida, os conteúdos do log podem ser migrados para outro arquivo, para que as mensagens de erro mais recentes sejam enviados por email.
Oracle Recovery Manager Scripts. O Oracle Recovery Manager (RMAN) é uma ferramenta que pode ser usado para administrar o backup e a recuperação do banco de dados. Isso simplifica muito a administração em várias plataformas, porque todos os scripts de backup podem ser gravados para serem executados pelo RMAN, reduzindo a quantidade de código específico da plataforma. O RMAN pode ser chamado pelo sistema operacional adjacente e passar o script. Por exemplo, um backup frio (cold.sh) pode ser feito pelo seguinte script:
#!/bin/bash
rman target / <<EOF
shutdown immediate;
startup mount;
backup spfile;
backup database;
alter database open;
delete noprompt obsolete;
quit;
EOF
A linha 1 indica que você está usando o bash shell. A Linha 2 chama o Oracle Recovery Manager e especifica o login do usuário do SO no banco de dados de destino (especificado na variável de ambiente $ORACLE_SID). O <<EOF
em seguida indica que os comandos subsequentes serão passados pelo RMAN para processamento. O EOF na última linha indica que você atingiu o fim da série de comandos a serem passados para o RMAN. Em seguida, o RMAN é usado para desligar o banco de dados, iniciá-lo e montá-lo novamente, e prosseguir com o backup do arquivo de parâmetros do servidor, junto dos conteúdos do banco de dados. Em seguida, o banco de dados é aberto. Quaisquer backups que sejam mais antigos do que os especificados na política de retenção serão excluídos. Consulte a documentação do RMAN para construir um backup que seja relevante para a sua situação.
Os backups noturnos são geralmente programados e ocorrem automaticamente. O script acima poderia ser chamado e o conteúdo do padrão enviado para um endereço de email com o seguinte comando:
sh cold.sh | mail -s"Backup ‘date‘" administrator@yourcompany.com
Outros utilitários da Oracle também podem ser executados em shell scripts. A ferramenta tnsping pode ser usada para ver se um identificador específico de conexão da Oracle pode contactar o listener. Você pode executar essa ferramenta para verificar problemas com a conexão:
tnsping ptch04 |grep TNS-
As exportações e importações de banco de dados (tradicional e data pump) também são bons candidatos para a criação de scripts de processos recorrentes.
Instalação do Banco de Dados. Muitas das etapas da configuração do banco de dados podem ser automatizadas. Antes de instalar o Oracle 10g no Linux, você precisa executar vários testes para verificar a versão mínima exigida dos pacotes e as configurações dos parâmetros do kernel. Você pode consultar a versão do pacote usando o comando rpm
junto da opção –q
.
rpm -q compat-libstdc++
Você pode determinar diversos aspectos do sistema olhando para o arquivo de sistema /proc “virtual” ou “pseudo”. Ele contém arquivos não reais, mas, em vez disso, informações do sistema de runtime que podem ser vistas como se residissem nos arquivos. Por exemplo, /proc/meminfo carrega as informações de memória do sistema e grep MemTotal /proc/meminfo
exibe a memória total do sistema. Ao usar awk
como já fizemos anteriormente, é possível isolar a quantidade de memória em kilobytes com:
grep MemTotal /proc/meminfo | awk '{print $2}'
Tal comando pode ser usado no contexto de um script que faça comparações e responda de acordo (mesmo ao atualizar o sistema em si). Os scripts de amostra 10gchecks_kernel.sh e 10gchecks.sh simplesmente exibem versões e definições atuais e recomendadas com base na documentação da Oracle.
Monitoramento do Banco de Dados. O comando ps
pode ser usado para relatar a situação do processo e verificar se um banco de dados, listener, script ou qualquer outro processo de interesse está em execução. Se quiser listar todos os bancos de dados que estão atualmente em execução em um servidor, você poderá executar o seguinte comando:
echo "‘ps -ef | grep smon|grep -v grep|awk '{print $8}'| awk -F \"_\" '{print$3}'‘"
Embora seja funcional, é um pouco difícil de entender de primeira. O primeiro comando, ps
(com as opções -ef
para obter uma lista completa de todos os processos), encontra todos os processos em execução no servidor. O próximo, grep
, procura por SMON (processos de fundo do Oracle System Monitor), o qual indica que o banco de dados está em execução. Você quer remover as entradas que se referem ao próprio comando grep, que está sendo executado. Em seguida usamos awk
para localizar a oitava coluna na listagem, a qual contém o nome dos processos de monitoramento no seguinte formato ora_smon_<oracle_sid>. Em seguida, a última instância de awk usa o caractere de sublinhado como delimitador para pesquisar e imprimir o nome do banco de dados que possui o processo SMON. O underline precisa estar entre aspas, e a barra invertida é usada antes de cada aspa para que elas não sejam processadas, já que toda string aparece dentro de um conjunto de aspas duplas.
exec_sql.sh. Como mencionado anteriormente, é possível consultar o banco de dados a partir de um shell script, desde que o usuário tenha acesso ao sqlplus. O exemplo a seguir retorna uma lista (delimitada por espaço) de máquinas que estão com sessões ativas no banco de dados:
#!/bin/bash
output=‘sqlplus -s "/ as sysdba" <<EOF
set heading off feedback off verify off
select distinct machine from v\\$session;
exit
EOF
‘
echo $output
Esse script é similar ao script RMAN anterior ao qual você está inserindo comandos para outro programa. Uma conexão autenticada ao SO local é feita ao banco de dados como sysdba. Para evitar que mensagens estranhas sejam retornadas, esse script desativa o título, o feedback e as opções de verificação do SQL*Plus. A consulta é feita e o SQL*Plus é encerrado.
Observe às barras invertidas duplas antes do sinal de cifrão no nome de visualização. Elas são sequências de escape exigidas na string: A primeira barra escapa a segunda, a qual, por sua vez, escapa o sinal de cifrão. Novamente, não é muito apresentável, mas é funcional.
Como mencionado anteriormente, se você estiver escrevendo algo que requer acesso extensivo a banco de dados, a criação de shell scripts não é a melhor opção. Talvez seja melhor reescrever o script em PL/SQL, Perl (que usa sintaxe semelhante à usada em shell scripts), Python, Java ou outra linguagem de sua escolha.
Conclusão
O shell script pode ser uma ferramenta eficaz para automatizar rapidamente tarefas de administração repetitivas e propensas a erros. Os exemplos neste artigo apresentam uma introdução às possibilidades disponíveis, porém são muito mais abrangentes. Cada sistema tem suas pecualiaridades e uma configuração única. Um administraor irá desenvolver soluções exclusivas para atender às necessidades particulares de um sistema.
Casimir Saternos é um Oracle Certified DBA, IBM Certified Enterprise Developer e Sun Certified Java Programmer baseado em Allentown, Pensilvânia.