Sei que esta é uma questão um pouco mais subjetiva, mas estou procurando orientação da comunidade.
Nossa empresa é relativamente nova em ter DBAs. Costumávamos usar o DB2 para i nos servidores iSeries da IBM, então realmente não havia necessidade de um DBA (pelo menos operacionalmente), pois o sistema operacional praticamente gerenciava tudo para nós. Nos últimos anos, começamos a mudar para DB2 LUW no AIX. Assim nasceu a necessidade de DBAs. Três de nós estávamos interessados em fazer a mudança de carreira de desenvolvedores para DBAs (dos quais eu sou um deles).
Como estamos no AIX, adotamos como padrão o uso de ksh como nossa linguagem de script para funções de gerenciamento de banco de dados (criação, implantação, operações, etc.). Eu descobri que o ksh é bastante poderoso, mas algumas das funções que preciso executar são bastante complexas. Um exemplo disso é minha pergunta sobre Unix e Linux StackExchange .
Com base nessa pergunta, assim como na leitura de blogs de outros administradores do DB2, vejo uma sugestão geral de que o Perl é mais adequado para scripts de administração do que o ksh.
Eu percebo que o fórum Unix/Linux teria seus próprios pensamentos sobre tal coisa, mas desejo abordar isso do ponto de vista da administração do banco de dados.
Independentemente do DBMS, qual linguagem de script parece mais adequada para administração na plataforma Unix/Linux? Perl? Ksh? (ou talvez outro?). Quais pontos fortes e fracos em seu uso de linguagens de script você encontrou como DBA e por que escolheu a linguagem que escolheu?
O que eu não quero é uma guerra altamente subjetiva sobre "Minha linguagem é melhor que a sua!" tipo de coisa, como eu costumava ver na comunidade de desenvolvimento sobre, digamos, Java vs Ruby, etc. Estou procurando informações honestas, tão objetivas quanto possível, sobre o que melhor atende às necessidades dos administradores de banco de dados.
O final do seu post é realmente a parte importante:
Então vamos começar por aí.
Quais são suas necessidades como DBA? Você geralmente tem dois domínios de operação: manutenção no nível do sistema e manutenção no nível do banco de dados (em que todas as ações são meramente manutenção do sistema para melhor desempenho ... olha, não seja pedante, vá comigo aqui). Então você tem dois domínios a considerar.
ksh - O Korn Shell é um dos shells operacionais mais antigos do Unix, usado para controlar o servidor. O objetivo do ksh é gerenciar um servidor e permitir fazer todas as coisas que o shell Bourne tradicional (não o Bourne Again SHell com o qual a maioria das pessoas está familiarizada, este é um vintage mais antigo) permitia, com algumas diferenças (esse shell tinha melhor suporte para coisas como aritmética e arrays, facilitando a programação em alguns aspectos). É o shell padrão no AIX.
perl - Perl é uma linguagem de programação de propósito geral de alto nível. Ele foi projetado para ser executado em cima de um shell e foi projetado principalmente com relatórios em mente. Ele combinou recursos de shell script e C, bem como tecnologias regex para tentar torná-lo melhor do que todos os anteriores. Muitos administradores em todo o planeta gostam do perl porque facilita o gerenciamento do sistema, devido à combinação de recursos do shell e aceleração da geração de relatórios (sendo uma linguagem de programação). Os scripts Perl podem ser executados tão simplesmente quanto os scripts shell, e existe até uma convenção no mundo Unix de ter a primeira linha indicando o que executará o script (a familiar linha hashbang). Portanto, executar scripts perl é tão fácil quanto executar um script de shell.
A diferença, então, é que você precisa de uma linguagem de programação completa ou precisa de um shell script básico? A resposta então é usar aquele que dá o que você precisa, pois ambos são muito úteis para você . Se você quer estatísticas, isso é impossível, cada um de nós tem seu próprio estilo. Basta concordar com algo internamente e chamá-lo assim (se você for definir um padrão, torne-o perl, pois tem mais recursos e você nunca quer ser pego porque definiu um padrão irrealista. Perl também é mais extensível no futuro). Melhor restringir-se a dois ou três idiomas neste caso.
No início, mencionei que você tem duas opções: nível do sistema e nível do banco de dados.
Se o seu objetivo for principalmente o nível do sistema, respondemos a todas as perguntas aqui (use a que melhor se adapta às suas necessidades). Se você também precisa programar no banco de dados, então você realmente precisa apenas padronizar em perl ou se acostumar com as sintaxes de linha de comando, porque o Perl tem módulos para todos os bancos de dados concebíveis no planeta em algum lugar e, se não existir, pode ser escrito (exemplo: DBI -> DBD:DB2 -> cliente DB2).
Como um aparte, eu uso Microsoft SQL Server e C#, então vivo no mundo do Windows e uso o PowerShell em arquivos DOS Batch. O PowerShell é em muitos aspectos semelhante ao perl e me dá muito mais flexibilidade do que a programação em lote do DOS (mas há muitos administradores no mundo que ainda usam scripts antigos do DOS para gerenciar seus sistemas). Embora o sistema DOS Batch permita arrays, loops, variáveis e todo o resto, é muito mais fácil programar em uma linguagem de programação em vez de um script de shell, então posso ser muito mais produtivo.
No final das contas, a verdadeira questão é quais recursos você precisa em seu ambiente de script e não podemos ajudá-lo com isso. Mas sempre optarei por mais clareza, facilidade de manutenção e extensibilidade, em vez de "isso é o que vem na caixa".
ksh ou bash permitem criar scripts de itens por meio do SQL*Plus, e você pode fazer coisas bastante complexas com isso. No entanto, scripts de shell tendem a ser um pouco 'somente para gravação' e sh e seus derivados não são muito bons para desenvolver lógica de programa complexa. Para executar tarefas automatizadas, eles estão OK. Para manipulação complexa de dados do lado do cliente, não é tão bom (apesar do sed/awk).
Perl tem várias bibliotecas Oracle, como DBD:Oracle, disponíveis através do CPAN, e é um pouco melhor para trabalhos que envolvem processamento complexo do lado do cliente, pois seu sistema de tipo é um pouco mais sofisticado do que 'linha de texto'. Outra opção muito boa para isso é python e cx_Oracle.