Archive for the ‘banco de dados’ Tag

[CC] Ajustando encondig para pg_dumpall

Hoje um cliente me relatou que o backup lógico do seu banco PostgreSQL havia parado com a seguinte mensagem:

pg_dump: Error message from server: ERROR:  character 0xe28093 of
encoding "UTF8" has no equivalent in "LATIN1"

Descobri [1] que seria necessário ajustar a configuração de enconding do client do PostgreSQL. Descobri também que o comando “pg_dump” oferece uma opção para definir o conjunto de caracteres correto (“–encoding=UTF8”, no caso em específico).

No entanto, como eu utilizo um backup completo do banco, esta opção não me servia, já que o comando “pg_dumpall” não oferece suporte para este parâmetro. E foi no manual do “pg_dump” que encontrei minha solução: antes de exportar o banco, basta configurar a variável PGCLIENTENCODING! Segue o exemplo:

export PGCLIENTENCODING=UTF8
pg_dumpall ...

Referências:

[1] http://stackoverflow.com/questions/14525505/postgres-issue-encoding-utf8-has-no-equivalent-in-encoding-latin1

Anúncios

Permitindo execução de tarefas em BATs em ambiente Windows

Como administrador de banco de dados, as vezes encontro alguns Windows Server em meu caminho.

Quem me conhece sabe que minha preferência é explícita para ambiente Linux, ou eventualmente Unix (estes têm se tornado mais raros hoje em dia). Mas como o cliente tem sempre razão, nem sempre conseguimos trabalhar no melhor dos ambientes! 🙂

Por isto, qual não foi minha surpresa em descobrir que não é mais tão simples rodar um .BAT em Windows Server (provavelmente a partir do 2008 – não fiz testes em outras versões, mas no passado rodava sem dificuldades em Windows NT!)

Sim, eu conheci computadores na era do “DOSnossauros”! Não nasci na geração das janelas…

A primeira surpresa, pra mim, foi verificar que o padrão de criação de tarefas é que as mesmas apenas executem com o usuário logado. Se eu quisesse isto, eu mesmo disparava a rotina!

Ao modificar a tarefa para que esta execute tanto quando o usuário esteja logado ou quando não tiver uma sessão, é necessário escolher a opção apropriada. Ao escolher esta opção, é solicitada a senha (até aqui tranquilo, embora desnecessário, no meu ver). Ao definir a senha do usuário, recebo uma mensagem incômoda que preciso ajustar uma policy pois o comportamento padrão não permite execução de arquivos de lote.

Tentei algumas opções via GPO e não obtive muito sucesso. Até que encontrei este blog [1] onde descreviam os passos que reproduzo abaixo. Isto solucionou meu problema! Espero que ajude mais pessoas.

  1. Abrir janela de comando (cmd);
  2. Executar secpol.msc;
  3. Selecionar Local Policies no painel da esquerda;
  4. Selecione User Rights Assignment;
  5. Botão direito em Log on as batch job e escolha Properties;
  6. Clique em Add User or  Group e adicione o usuário que executará a rotina.

Referência:

[1] Keloism. Windows Task Scheduler: This task requires that the user account specified has log on as batch job rights. URL: https://ashishkelo.wordpress.com/2012/09/19/windows-task-scheduler-this-task-requires-that-the-user-account-specified-has-log-on-as-batch-job-rights/

Facilidades proporcionadas pelas ferramentas certas

Eu sempre fui um pouco avesso a ferramentas que facilitam demais nossas atividades. Não, não sou masoquista! Apenas não quero ficar dependente demais de uma ferramenta para executar meu trabalho. Sempre fui adepto do uso de ferramentas básicas para realização de minhas atividades.

No caso de Oracle, penso que devo conseguir realizar a maior parte de minhas tarefas apenas com o SQL*Plus. Pois caso chegue em algum cliente onde não exista a ferramenta que eu necessito, isto não deveria ser um empecilho!

Continue lendo

Opções de compilação PostgreSQL

Hoje eu estava trabalhando na migração de um servidor para um cliente e precisava reproduzir o ambiente de produção. Como entrei no projeto já em andamento, nem tudo tenho controle ou consigo resgatar através da documentação.

Dentre as necessidades, eu precisava levantar as opções de compilação do banco PostgreSQL instalado. O diretório de compilação já não existia mais. Pensei “deve existir uma maneira…”. “Oh poderoso google, responda-me!”. E eis a solução:

http://www.postgresql.org/docs/current/static/app-pgconfig.html

O que eu procurava de mais imediato era a seguinte opção:

$ pg_config --configure

Mas também é possível recuperar o diretório de binários, de configurações, entre outras opções.

Como DBAs matam dragões

Esta quase poderia ser um link, mas não vou classificar assim, pois fica mais para diversão de uma sexta a noite.

Obrigado pela dica Getulio!

Clique aqui para chegar na fonte original: Como DBAs matam Dragões

ERBD (SBC) em Novo Hamburgo

Embora meu amigo, professor Juliano Varella, já tenha me comentado no ano passado, eu não lembrava-me que Novo Hamburgo sediará a VII Escola Regional de Banco de Dados, um evento promovido pela SBC. O evento acontecerá na Feevale entre os dias 13 e 15 de abril.

E o prazo para inscrições com desconto termina amanhã. Aproveitem!

 

Referências:

[CC] Instalador Oracle em ambiente não homologado

As vezes acontece de precisarmos instalar algum produto Oracle em um ambiente não homologado.

Por exemplo, instalar o banco 10g em RedHat 5. Como na época do 10g ainda não existia RH5, o instalador não prossegue com a instalação, dizendo que o ambiente não é certificado, mesmo sendo este um ambiente homologado pela própria Oracle!

Embora existam “macetes” (procure e acharás diferentes soluções), existe uma solução “oficial”:

$ ./runInstaller -ignoreSysPrereqs

Oracle XE em Windows Server 2008

Fazem alguns dias, um cliente pediu-me auxílio na configuração de um Oracle XE em um Windows Server 2008. Em geral as instalações de produtos Oracle são tranquilas, desde que se respeitem os procedimentos e os requisitos.

Os requisitos para instalação do Oracle XE são mínimos, ainda mais para o SO em questão. No entanto, esta instalação tirou-me mais tempo do que eu esperava.

Continue lendo

Shell + MySQL + GNUPlot = gráficos legais

Fazem 11 meses e 1 dia que escrevi o post sobre como gerar gráficos em shell acessando um banco de dados Oracle.

Repare na coincidência do dia e mês dos 2 posts!

Então para último Dia da Liberdade de Software que participei, resolvi montar uma palestra relâmpago sobre este assunto. A ideia era mostrar que era possível gerar gráficos com dados armazenados em um banco de dados a partir do shell.

Como se tratava de um evento sobre liberdade de software, eu não poderia utilizar um banco de dados proprietário! :p Então reescrevi minha função para acessar os dados armazenados em um MySQL.

Vejam as voltas que o mundo dá… Enquanto escrevo este post a Oracle é quase dona do MySQL (falta a união européia decidir)!

Aqui é possível encontrar a versão do programa em shell acessando o MySQL. Também deixo disponível a palestra, caso tenham interesse.

Para o MySQL precisei criar uma função para extração dos dados e geração do arquivo de trabalho (em Oracle, essa execução estava dentro do próprio programa shell). A função criada no MySQL está comentada dentro do próprio .sh.