Category: Soluções próprias


Fala pessoal!

E então, índices é um problema e/ou solução? Que dilema hein?!

Pelo que venho estudando, ouvindo e consequentemente adquirindo experiência, quando uma tabela chega a quantidade de cinco índices, é hora de ligar o alerta, pois o desempenho do seu banco de dados e aplicação podem estar comprometidos. Venho confirmando essa “teoria” no treinamento Oracle Database 11g: Performance Tunning.

A regra é: Otimizar sempre!

Bom, para consultar a quantidade de índices nas tabelas do seu schema, basta consultar a View de Dicionário de Dados DBA_INDEXES:

SELECT table_name AS “NOME DA TABELA”, count(1) AS “QTDE. DE INDICES” FROM dba_indexes WHERE owner=’SEU_SCHEMA’ GROUP BY table_name;

Perceba que é tranquilo personalizar a instrução acima.

Até a próxima.

Compartilhando mais uma “pedreira” resolvida no dia-a-dia.

Volta e meia um ou outro cliente reclama que as URLs do registro de navegação (access.log) do SQUID não estão sendo gravadas de forma COMPLETA, ao invés de gravar “https://lhsiqueira.wordpress.com/wp-admin/post-new.php?id=123456?category=25” grava apenas “https://lhsiqueira.wordpress.com/wp-admin/post-new.php“, omitindo as strings de consulta “id=123456?category=25”. Isso acontece devido a uma preocupação dos desenvolvedores do SQUI Proxy Cache com a privacidade dos usuários da rede, e até compreendo tal preocupação, mas no fim das contas, a administração e acesso a esses registros não é de competência dos administradores de rede e/ou gerência de TI? SIM. Então vamos habilitar esse registro completo.

Para tanto, basta editar o arquivo de configuração do SQUID (geralmente em /etc/squid/squid.conf), procurar pela variável strip_query_terms, descomentá-la e definir seu valor como “off“, isso mesmo, “off“! Ficando:

strip_query_terms off

Após isto, basta reiniciar o SQUID (killall -HUP squid).

Para quem utiliza o SARG (Squid Analysis Report Generator) e deseja que o mesmo também grave os registros completos em seu relatório, basta editar seu arquivo de configuração (geralmente em /etc/squid/sarg.conf ou /etc/sarg/sarg.conf), procurar pela variável long_url, descomentá-la e definir seu valor como “yes“, ficando assim:

long_url yes

Após isto, na próxima vez que sua rotina de geração de relatórios for executada (CRONTAB, você tem, certo? :/), já irá gerá-los com a URL completa.

Bom, espero ter contribuído.
Abraço

Aposto que muitos já passaram por este famoso erro: “Microsoft OLE DB Provider for ODBC Drivers error ‘80004005′ | Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified“. Existem algumas possibilidades básicas para que este erro ocorra, mas também existe uma única possibilidade árdua, e é exatamente com a solução desta possibilidade que eu pretendo contribuir.

Quando digo possibilidades básicas, me refiro a:

– Servidor SQL Server negando conexão: Verifique a existem de algum Firewall neste servidor, pois o mesmo pode estar impedindo as conexões ODBC
– Seu Data Source Name (DSN) pode estar com o nome errado, exemplo de um DSN: conexao = “dsn=nome_dns;uid=nome_bd;pwd=senha;”

Quando digo sobre a única possiblidade árdua, me refiro a questão de o servidor de hospedagem de arquivos ser Windows 2003 64x e o servidor SQL Server 2000 ser Windows 2000 32x, ou seja, haverá uma incompatibilidade no momento de estabelecer conexão.

O Windows 2003 64x instala um ambiente completo 64x, com isso, o atalho para o ODBC esta linkado para o arquivo C:\WINDOWS\System32\odbcad32.exe. Para resolver este problema de conexão ODBC de um servidor 64x para um 32x, utilize uma outra versão do ODBC já contida no Windows 2003 64x, sendo encontra em C:\WINDOWS\SysWOW64\odbcad32.exe

Espero que esta contribuição seja proveitosa por longo tempo.

Diante de tantas dificuldades encontradas para virtualizar o Ubuntu e experimentar sua nova versão, é claro que iria compartilhar com todos a solução. Utilizei o Windows XP SP2, Microsoft Virtual PC 2007 e Ubuntu 7.10.

Obs.: Não abordarei detalhes de instalação e configuração de máquina virtual.

Digo tantas dificuldades porque foi necessário muita pesquisa para solucionar um ÚNICO problema. O mesmo acontece quando vamos criar a nova máquina virtual (VM) e dar boot, então, pressionamos logo “ENTER” na opção “Start or Install Ubuntu”, em seguida a instalação começa a processar e inesperadamente surge erro de resolução, conforme imagem abaixo:

ubuntu_vpc_bugresolution

Para solucionar este problema, após instalado o Microsoft Virtual PC 2007 é necessário baixar o ISO do Ubuntu 7.10 e queimá-lo em CD ou DVD.

Crie normalmente uma nova máquina virtual (VM) com no mínimo 256mb (512 ideal) e execute o CD para boot do Ubuntu, logo a tela abaixo será apresentada:

ubuntu_vpc_bugresolution01

Devido a uma limitação de resolução do Microsoft Virtual PC 2007, pressione F4 e selecione a resolução 800 x 600 x 16.

Após isso, leve o cursor até a opção “Start Ubuntu in safe graphics mode”. Na instalação em modo gráfico o mouse costuma não funcionar, e isso fará falta, então pressione a tecla F6 para editar o comando a ser executado e adicione ao fim do comando isto: “- – i8042.noloop”, conforme imagem acima. Execute o boot.

Então, após estes procedimentos, tudo tende a dar certo e a próxima tela será a seguinte:

ubuntu_vpc_bugresolution02

Dê duplo clique no icone INSTALL e siga a instalação do Ubuntu conforme suas preferências.

Pode acontecer de ao fim da instalação o Ubuntu não conseguir se conectar aos seus servidores de atualização e com isso gerar um erro, erro este que não atrapalhará a instalação e a atualização pode ser feita em outro momento.

Após o término da instalação feche a máquina virtual e remova o CD do Ubuntu. Execute novamente a máquina virtual, clique no menu CD e em seguida em “releasing the ISO”, para que o Microsoft Virtual PC 2007 entenda que o sistema operacional irá ser executado diretamente de sua instalação, e não mais do CD.

A tela seguinte será:

ubuntu_vpc_bugresolution03

Lembra do problema com o mouse? O mesmo ainda existe, então edite o comando novamente e insira ao fim: “- – i8042.noloop” e execute. Para solucionar este problema de vez, quando o Ubuntu abrir pela primeira vez, edite o arquivo /boot/grub/menu.lst, encontre a linha onde o Ubuntu é executado no boot e adicione ao fim o que é necessário, conforme imagem abaixo:

ubuntu_vpc_bugresolution04

Salve e pronto!

Espero que ajude a muitos.

Quem nunca precisou remover de um ou mais diretórios, arquivos antigos, que levente os maõs! :). Pois então, como de tempos em tempos também preciso desta solução, resolvi publicar para ajudar nossa comunidade.

A minha situação basicamente é a seguinte. Nos servidores de e-mail existe a fila de envio, onde constantemente algumas mensagens ficam por ali eternamente, pois o servidor não consegue encontrar o destinatário, e torna a tentar enviá-las infinitas vezes (isso também pode ser resolvido configurando o serviço de e-mail). Então, é necessário remover principalmente os arquivos antigos para que não fiquem ocupando espaço em disco e processamento desnecessário.

Supondo que o diretório que armazena arquivos que estão na fila é:

/var/spool/mqueue

Onde a inteção é remover todos os arquivos da fila, mais antigos que 10 dias.

Entre no diretório /var/spool (cuidado, é o diretório anterior mesmo!),  e execute:

find mqueue/ ! -mtime -10 | /usr/bin/xargs rm -rf

Vale lembrar que caso seja viável para sua solução, esta implementação pode trabalhar em conjunto com o CRON.

Abraço

Não é todo sistema ou servidor que dá para automatizar a questão de apagar os logs, ou então, nem sempre é interessante apagá-los automaticamente. Por experiência própria, vez ou outra preciso apagar vários arquivos gigantescos (geralmente logs) de uma única vez e a seguinte mensagem é gerada:

/bin/rm Argument list too long (Lista de argumento muito longa)

Bom, caso este seja o seu caso, basta entrar no diretório onde encontram-se os arquivos e executar algumas das alternativas de comando:

# Para apagar todos os arquivos que contenham “2008″ em seu nome
for a in *2008*; do rm $a; done

# Para apagar todos os arquivos que possuam a extenção .log
for a in *.log; do rm $a; done

Espero que seja útil a muitos.
Abraço

Olá pessoal, dando continuidade a matéria do dia 10/10/2007 (Procmail – Bloqueando por Anexos, URLs e Corpo da Mensagem), algo que sempre vamos precisar é adicionar algumas exceções aos bloqueios, então vamos lá!

Mas, como assim, exceções?

Bom, existe geralmente alguns domínios que são de confiança para a chegada de e-mails em nosso servidores, como o todo .gov.br, gmail.com, brturbo.com.br, entre outros.

Qual a regra que devo implementar?

Primeiro leia a matéria anterior sobre Procmail – Bloqueando por Anexos, URLs e Corpo da Mensagem

Deve-se implementar a regra acima das regras de bloqueios de URLs e Corpo da Mensagem:

:0
* ^From.*gov\.br
$DEFAULT
:0
* ^From.*gmail\.com
$DEFAULT
:0
* ^From.*hotmail\.com
$DEFAULT
:0
* ^From.*yahoo\.com\.br
$DEFAULT
:0
* ^From.*brturbo\.com\.br
$DEFAULT
:0
* ^From.*bol\.com\.br
$DEFAULT

Assim, todos os e-mails vindo dos domínios .gov.br, gmail.com, hotmail.com, yahoo.com,  brturbo.com.br e bol.com.br passaram sem chegar às outras regras.

Abraço.

Fonte:
http://www.panix.com/~elflord/unix/procmail.html

Para quem não sabe, Procmail é um agente de entrega LOCAL que se encarrega de postar a mensagem localmente, ou seja, gravá-la efetivamente na caixa postal do usuário. Não é uma alternativa ao Sendmail, Exim ou Qmail, pois estes servem para enviar mensagens entre máquinas distintas usando SMTP (Simple Mail Transfer Protocol). No Linux, tipicamente, o Sendmail faz uso do Procmail para entregas locais de mensagens.

Devido ao constante crescimento dos SPAMs, o Administrador de Sistema precisa sempre esta atualizado quanto as alternativas para minimizá-lo, e o Procmail pode ajudar bastante nesta luta.

Em agosto quase 90% dos e-mails corporativos eram spams, diz pesquisa

Abaixo publicarei minha última implementação no /etc/procmailrc, a qual bloqueia mensagens com anexos com algumas extensões, URLs e texto no Corpo da Mensagem:

## INICIO

## Bloqueio de e-mails que contenham anexos com algumas extensões
## de arquivos
## Apaga os e-mails bloqueados
## Arquivo
blockmail.pl localizado no diretório /etc/procmail.d/
SHELL=/bin/sh

:0 HB
* ! ? /etc/procmail.d/blockmail.pl

{
:0
/dev/null
}

## Bloqueio de e-mails que contenham URLs no Corpo da Mensagem
## com algumas extensões
## Apaga os e-mails bloqueados
:0 B

* ((ht|f)tp(s?))\://([0-9a-z\-\_]+\.)+([a-z][a-z]|[a-z][a-z][a-z])(\:[0-9]+)?(/+)(([0-9a-z\-\~\_\%\.]+/+)+)?([0-9a-z\-\.\~\_\%]+\.)+(exe|scr|pif|com|cmd|bat)([^0-9a-z\-\.\~\_\%/]|$)

/dev/null

## Bloqueio de e-mails que contenham algumas palavras
## no Corpo da Mensagem
## Envia os e-mails bloqueado para o diretório
## /var/log/emailsrecusados/sefin
:0 B

* (money|three|steps|plugged|enlarge|left|millions|featured|separate|
yourself|exploded|unbeatable|cardinals|stings|going|before|eremetic|
safe|effective|morning|night|pills|only|manster|definitive|
confidence|will|love|other|performance|pleasure|something|bigger|
better|erection|orgasm|sessions|customers|seeing|weeks|months|first|
second|haha|these|girl|dating|penis)

/var/log/emailsrecusados/sefin

## FIM

Importante, cada regra possuí apenas 3 linhas, a primeira indicando o tipo de comando, a segunda indica o que vai ser bloqueado e a terceira indica o destino da mensagem bloqueada. Lembre-se, 3 linhas!

Estas são apenas regras que podem ser implementadas no Procmail, ou seja, somente elas não fazem com que o Procmail funcione perfeitamente, o arquivo procmailrc contém outras linhas.

Até!

O Portal Linux Security Brasil, do nosso amigo de TI, Renato Murilo Langona, vem publicando constantemente atualizações do tutorial sobre Permissões de Arquivos em UNIX, que por sinal, é de ótima qualidade em uma desenvoltura leve. Recomendo a leitura…

Este tutorial é de autoria do MELEU, e tem como principais áreas: 

1. Identificações

2. Permissões de Arquivos
    2.1. Permissões Básicas
    2.2. Permissões Especiais

3. Sobre Alguns Comandos
    3.1. chmod
    3.2. ls
    3.3. find
    3.4. test
    3.5. umask
    3.6. chattr
    3.7. Outros Comandos

4. Usando C
    4.1. Informações sobre Arquivos
    4.2. Mudando Permissões

5. Esquemas Úteis

Acesse aqui o tutorial Permissões de Arquivos em UNIX

Recomendo a leitura!

Olá moçada, antes de passar uma primeira informação de TI para vocês, vale ressaltar que este é o primeiro Post deste Blog, e isso me faz lembrar que a pouco tempo atrás eu próprio criticava a diversos Gibabytes os blogueiros :-), olha no que deu! De qualquer forma, não esperem mágicas aqui no Blog do Luiz Siqueira, utilizarei este espaço simplesmente para compartilhar com vocês, meus colegas de profissão, tudo que EU considero de interessante e é publicado no nosso dia-a-dia. Postarei também algumas soluções de minha autoria, sempre com o intuito de “backupear” informações de grande valia para hoje e futuramente. E é claro, sempre com uma observação e/ou critica construtiva. VAMOS AO QUE INTERESSA!

Mais uma forma de encontrar arquivos grandes e talvez desnecessários

Para encontrar arquivos grandes em seu sistema GNU/Linux, o comando “find” é uma ótima alternativa. Por exemplo, para achar arquivos maiores que 500 MB:

[root@lhsiqueira root]# find . -size +500M

Se o seu HD for gigantesco, como estes que andam vendendo hoje em dia, você pode querer descobrir os arquivos maiores que 1 GB:

[root@lhsiqueira root]# find . -size +1G

Atente-se ao “+”.

Esta dica foi publicada pelo nosso amigo Rubens Queiroz de Almeida no Dicas-L.

Abraço.