Sábado, 10 Julho 2010

Arrombamento e Roubo de Bicicleta

Há duas semanas comprei uma bicicleta para poder ir pedalando ao trabalho. Já escrevi sobre isso no passado, que inclusive é top no google results.

Comprei uma bicicleta nova, quadro pro-shock, grupo de cambio shimano altus/acera, 24 marchas. Uma bicicleta muito boa para meus propósitos, de pedalar 16 KM diários (ida/volta ao trabalho).

Mas essa vontade de ir pedalando ao trabalho, vai ter de esperar um pouco mais, pois minha casa foi arrombada nesta madrugada e levaram 2 bicicletas aro 26, minha e da minha esposa.

Fiquei acordado até as 2:30, assisti o 5o capítulo de "The Pacific", e fui dormir, minha esposa ficou acordada até as 3:00, fazendo o que ela adora. As 3:30 ela me acordou dizendo que escutou barulhos de estalos de ferro, que poderia ser em nosso portão eletrônico da garagem (é um portão vertical). Meio sonolento levantei-me, então escutei um estampido mais forte de metal sendo forçado, corri até a sala onde estava tudo escuro e pela claridade da rua, percebi um vulto (FDP, para ser exato) DENTRO DE MINHA VARANDA. Neste momento senti uma raiva como dificilmente lembro de sentir antes. Se eu tivesse super-poderes iria transformar aquele indivíduo em vácuo.

Neste momento não tem plano B, tratei de trancar as portas, fui até o fundo, peguei meu facão de mato e outro punhal de cortar peixe, lembrei-me de quando era faixa-marrom de kung-fu e aos gritos de polícia, FDP, disque 190, fiquei na espera. A Eliane e as crianças ficaram no quarto.

Felizmente os deliquentes foram embora, fui até a frente de casa e percebi a ausência das duas bicicletas. Raiva total. Dali a pouco surge a polícia e diz para fazer um B.O. e fazem algumas perguntas e vão embora.

Ficou eu, desmoralizado total, impossibilitado de fazer nada, sem correr algum risco de vida.

Neste momento surge o sentimento de raiva, o que poderia ter sido feito para evitar, etc. Depois de um tempo, é o sentimento de tristeza, sobre um bem que nem terminei de pagar.

Felizmente minha família, a casa e o carro não foram tocados, mas o sentimento de raiva e desmoralização é terrível.

Pesquisei sobre roubo de bicicletas e verifiquei que no DF é alarmante a quantidade de casos deste crime.

Fica a recomendação, se você guarda sua linda bike, guarde-a bem, e tranque todos os portões com cadeados, fique espero ao chegar em casa.

Eu estava com um rascunho de um 2o posto sobre usar a bicicleta como meio de transporte, mas agora vou ter de esperar até conseguir ter outra bike e ter os desafios de ir trabalhar de bicicleta.

Obrigado por lerem até aqui e sensibilizado-se com este problema.

Vejam um vídeo que mostra um pouco do dia a dia com bicicletas na cidade de Utrecht, Holanda. Interessante, não ?

Escrito por claudio at 5:48 PM categorizado por

Quarta-feira, 7 Julho 2010

Dicas Thunderbird

Duas dicas sobre o cliente de email thunderbird

Mensagens de notificação em preto

Fiz o upgrade para a versão 3.1 e as mensagens de alerta do thunderbird no linux, aparecem sem conteúdo, tudo preto, como abaixo.


Vi que é um bug do thunderbird, onde o problema é enviar mensagens de notificação sem um título.

Para corrigir, abra o arquivo thunderbird-3.1/modules/activity/alertHook.js e altere a linha abaixo, para incluir a palavra "Alert" (2o argumento)

this.alertService.showAlertNotification("chrome://branding/content/icon48.png", "Alert",aMessage);

Reinicie o thunderbird, para valer a alteração.

Então as mensagens irão aparecer corretamente.


Indexação de mensagens

O thunderbird tem uma opção que realiza a indexação de todas as mensagens, onde é possível efetuar buscas nos textos de todas as mensagens e exibir de uma maneira mais organizada em uma tela  só.

No entanto o arquivo de índice vai ficando bem grande e percebi que o thunderbird dá um crash toda vez que saio dele. Seguindo uma recomendação que vi em alguns fórums, desabilitei esta indexação e não ocorreu mais crash e o arquivo de índice não é usado mais.

Note que isso não prejudica em nada a pesquisa que o thunderbird já faz.

Para desabilitar vá na opção abaixo e desative-a.

Preferências -> Avançado -> Geral -> Ativar pesquisa global e indexação

Escrito por claudio at 11:20 PM categorizado por

Tags: linux dicas

Travamentos na conexão SSH

Recentemente instalei um Red Hat Enterprise Linux 5.5 (RHEL) headless, um servidor para servir de experimentos.

Este é um servidor headless, keyboardless, mouseless, a única maneira de trabalhar com ele é pela rede, onde uso o SSH.

Logo após a instalação percebi que as conexões ora congelavam, o terminal travava, qualquer output de dados maior do que um pagedown, já travava, não era possível que um problema deste tipo ocorria com o RHEL, mas me irritava muito, isso era tanto para conexões SSH, como para HTTP, etc.

As configurações do SSH, rede, sem firewall, sem SELinux, o que poderia ser...

Nas investigações, percebi que o driver da placa de rede estava incorreto.

A minha placa de rede é uma "Realtek Semiconductor Co., Ltd. RTL8111/8168B" e a versão do driver instalado pelo RHEL era para outro modelo.

Então a solução foi copiar o driver do fabricante, compilar e instalar.

Dicas adicionais podem ser vista no website do CentOS.

Fica a dica, se o seu servidor linux remoto começar a congelar no resultado dos comandos, após uma instalação ou atualização, verifique se o driver da placa de rede confere com a placa real.


Cortesia de XKCD.com

Escrito por claudio at 11:06 PM categorizado por

Tags: linux dicas

Quinta-feira, 17 Junho 2010

RedHatter convicto

Estou de casa nova !

Vejam meu novo email



Estou no time JBoss / Red Hat do Brasil com um super time, e para mim isso representa uma viagem que começou há mais de 12 anos, quando peguei o cd de incríveis 650 MB para instalar no meu Pentium (comprado com muito suor), o Sistema Operacional Red Hat Linux Marumbi da Conectiva. Depois comprava CDs na cheapbytes.com, tempos interessantes.

E foi em 1998 que começei a estudar e trabalhar com Java e Linux, tudo linha de comando, aquele programa gerenciador gráfico X, uau que fantástico, tinha o xeyes de entretenimento. E isso era um UNIX servidor rodando no meu Pentium. Opa, claro que tinha o windows NT server, que é acompanhado por alguns virus e falhas de segurança homéricas. E eu com meu linux, compilando meu próprio kernel, altos desafios para fazer o winmodem funcionar no linux. Isso após migrar serviços de FTP, SMTP, POP, etc de clientes que usavam novell para linux. Yeah !

Em 2000 em um projeto com EJB precisava testar o projeto, mas não tinham licença do weblogic 5 na época, então achei um tal de EJBoss com um logo de ET no site, que depois de muita configuração de xml funcionou na minha maquininha. Esse EJBoss (Coding the future) é bom mesmo.

E agora estou nesta companhia, fundada com os princípios de código livre e com tecnologias que uso há muito tempo (I am NOT the Mac guy).

O estado atual, a Red Hat é uma das empresas de TI no mundo que mais crescem, com 18% em 2008, 46% em 2009 e neste 1o trimestre cresceu mais do que no 1o trimestre de 2009.

Jim Whitehurst (Red Hat CEO) escreveu "Show me the money" onde diz que uma das maiores contribuições que a Red Hat fez é mostrar que é possível ganhar dinheiro com open source. Afinal de contas, todos temos contas para pagar.

Acredito que tenho um bom caminho a trilhar na Red Hat, com seus projetos e produtos líderes de mercado.

Tenho amigos com quem já trabalhei na Summa que estão na Red Hat como o Clebert Suconic, Edgar Silva, Bruno Rossetto e Rafael Benevides.

Falando em Summa, quero dizer o quanto particpar desta companhia foi gratificante para mim. Pude participar ativamente de trabalhos que hoje são projeção nacional e exemplos do uso de Java no mundo. Projetos como loterias (sistema de processamento de lotérico e financeiro), ADSL Brasil Telecom, DDA (Débito Direto Autorizado), entre outros.

Foram 8 anos onde trabalhei com um time de profissionais competentes e dedicados, onde fiz amigos e partilhei tantos bons momentos e happy hours :)

Digo muito obrigado por terem me aceitado a participar deste incrível time e acredito que consegui contribuir para alavancar não só novas oportunidades, mas também conquistar amigos.



Escrito por claudio at 3:17 AM categorizado por Linux e F/OSS

Tags: linux java

Segunda-feira, 5 Abril 2010

Análise e melhoria de um teste com GC

Motivado pela liberação do teste de threads, quiz fazer um pequeno teste, que ajude a analisar o funcionamento do Garbage Collector e como algumas alterações podem melhorar o desempenho.

Quando se fala em teste, existe muita discussão sobre a validade dos resultados.

Então já digo que este é um teste caseiro, para ter sua opinião, faça o teste em seu ambiente.

1) Teste

O teste de threads (NumThreads.java, projeto completo), lança todas as threads enumeradas no parametro, em que cada thread faz uma série de processamento matemático, cada thread pode repetir o processamento em uma quantidade determinada.

o fluxo de criaçao, coloca em um array, depois faz o start de cada thread, depois faz um join para esperar o processamento de todas as threads.

O start de cada thread não começa imediatamente, existe um barreira (CyclicBarrier) que aguarda o contador de todas as threads que foram iniciadas para que todas possam de fato entrar em operação juntas.

Em uma configuração default da JVM não consegui inicar com mais de 2700 threads, 2000 operações matemáticas por thread, ocorriam erros da JVM (OOME, ThreadDeath, Stackoverflow, etc.)

A minha máquina é um laptop toshiba, Core2 Duo T2400 1.83 GHz com 3 GB de RAM.

2) Monitoramento

O monitoramento foi feito usando o vmstat, jvisualvm, jmap
No caso do vmstat, coloquei a data como prefixo.

3) Resultado (1a bateria)

O teste foi iniciado com os seguintes parametros, que geralmente é o comum, onde configura-se apenas o tamanho máximo do heap. Depoi veremos o que se pode melhorar neste teste.

$ time java -Xmx2g -classpath build/WEB-INF/classes/:src/conf/:src/java/ br.com.claudius.threads.NumThreads 2700 5000 60

O tempo total, deve ser descontado 60s que usei como pausa antes das threads começarem de fato (3o parametro)

real 3m11.948s
user 2m14.612s
sys 1m40.354s

O tempo total foi de 2min11s ou 131s O que chama a atenção na configuração default é o tamanho do Stack de 320 kb, bem grande.

$ jinfo -flag ThreadStackSize 18610
-XX:ThreadStackSize=320

A configuração do heap (apenas a parte importante)

$ jmap -heap 18610
Server compiler detected.
JVM version is 16.0-b13

using thread-local object allocation.
Parallel GC with 2 thread(s)

Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 2147483648 (2048.0MB)
NewSize = 4194304 (4.0MB)
MaxNewSize = 4294901760 (4095.9375MB)
OldSize = 4194304 (4.0MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 16777216 (16.0MB)
MaxPermSize = 67108864 (64.0MB)

Um pedaço do vmstat durante a execução

2010-04-02 20:47:16 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
2010-04-02 20:47:16 r b swpd free buff cache si so bi bo in cs us sy id wa
...
2010-04-02 20:48:44 51 0 0 283440 81520 1825480 0 0 0 0 1131 934 61 36 3 0
2010-04-02 20:48:48 50 0 0 286032 81528 1811856 0 0 0 11 1230 1291 64 30 5 0
2010-04-02 20:48:52 109 0 0 259780 81528 1811324 0 0 0 5 1133 1579 58 36 5 0

Percebe-se que a "run queue" (coluna r) possui um alto número de tarefas aguardando um tempinho da CPU para processar alguma instrução.

Vejam um screenshot do visualgc ao fim do teste


<info>

O VisualGC é um plugin do VisualVM. Na versão atual do Java, o visualvm faz parte do download do java, mas é chamado de jvisualvm.

Durante o teste ocorreram 115 ações do GC na área YOUNG que duraram 3.306 ms, enquanto a área OLD com seus 1,3 GB ociosos.


VisualGC 1

4) Análise

O objetivo do teste é a JVM e não a aplicação, então nem vamos olhar na aplicação.

Sempre em uma análise do GC, é importante diminuir o impacto do tempo do GC na aplicação. Sempre que puder diminuir o tempo total do GC ajuda o throughput da aplicação.

Em uma análise óbvia, percebe-se que a área OLD está ociosa, enquanto existe atividade intensa na área YOUNG, então seria natural aumentar a área YOUNG para um tamanho grande. Aqui que costuma ocorrer um erro comum também, onde aumentar uma área é proporcional ao tempo de GC, pelo tamanho maior a ser varrido.

Por esta applicação ser orientada a CPU (muitas threads), processamento matemático, sem sincronização, sem rede, sem banco de dados, então é uma análise orientada para menor consumo de CPU e otimização do funcionamento do Garbage Collector.


5) Resultado (2a bateria)

Será feito uma otimização na invocação do comando java

$ time java -server -XX:+AlwaysTenure -XX:+UseConcMarkSweepGC -Xss64k -Xms2g -Xmx2g -classpath build/WEB-INF/classes/:src/conf/:src/java/ br.com.claudius.threads.NumThreads 2700 2000 10
Parametros adicionais:

Parametro
Explicação
-server Usa otimizações específicas para o modo de aplicações servidoras.
-XX:+AlwaysTenure Não usa espaços Survivors da área YOUNG, a promoção vai direto da YOUNG para OLD.
-XX:+UseConcMarkSweepGC Usa o algoritmo concorrente na área OLD e Paralelo na área YOUNG (-XX:+UseParNewGC)
-Xss64k Reserva 64 kb para o tamanho do stack de thread.
-Xms2g Aloca inicialmente o tamanho do heap para 2 GB
     
real 1m5.618s
user 0m51.967s
sys 0m38.598s

Percebe-se a melhoria no tempo de 66s.

Descontar 10s deste tempo final, pois na aplicação tem uma pausa de 10s antes de começar o teste.

O visualgc mostra uma melhoria significativa, onde ocorreram 86 ações do GC com duração da atividade de  GC em 836 ms.

VisualGC 2

Ao efetuar a mesma medição com o jstat, percebe-se uma melhoria marginal no tempo total do GC, mas com boa diminuição na quantidade de GC.

$ jstat -gcutil 1451 3s
S0 S1 E O P YGC YGCT FGC FGCT GCT
0,00 0,00 54,22 0,08 11,30 71 0,799 0 0,000 0,799
0,00 0,00 81,01 0,08 11,30 75 0,808 0 0,000 0,808
Ao diminuir o tamanho do stack para 48k (o mínimo aceito pela JVM), o tempo do GC melhorou bem.
Com -Xss48k
$ jstat -gcutil 4265 3s
S0 S1 E O P YGC YGCT FGC FGCT GCT
0,00 0,00 44,52 0,08 11,30 75 0,670 0 0,000 0,670
0,00 0,00 97,33 0,08 11,30 79 0,685 0 0,000 0,685

O comportamente da CPU mostrado pelo vmstat, mostra um uso bem mais modesto da CPU, veja a coluna r (run queue)

2010-04-05 00:40:14 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
2010-04-05 00:40:14 r b swpd free buff cache si so bi bo in cs us sy id wa
...
2010-04-05 00:40:53 24 0 0 1386056 249416 953668 0 0 0 0 1190 631 52 32 16 0
2010-04-05 00:40:56 7 0 0 1390532 249424 953660 0 0 0 4 1199 645 59 32 10 0
2010-04-05 00:40:59 18 0 0 1395652 249424 953500 0 0 0 0 1196 609 54 34 12 0

Nota 2: o VisualGC é um plugin do VisualVM (Tools -> Plugins -> Available Plugins)

5) Conclusão

No 2o teste foi percebido uma melhoria significativa no tempo total e com menos impacto na utilização da CPU.

Não foi feito um super mega tunning para este exemplo, mas mostrar que com uma boa análise, alguns testes, é possível observar o comportamento da aplicação e aplicar as otimizações no lugar certo.

Tente executar um teste e análise em seu ambiente.

6) FAQ ?

6.1) Você usou o G1 ?

Usei o algorítimo G1 mas o resultado foi inferior ao concorrente, mas o pior neste caso foi que a ferramenta jstat não consegue exibir os resultados das áreas de memória.

Warning: Unresolved Symbol: sun.gc.generation.0.space.1.capacity substituted NaN
Warning: Unresolved Symbol: sun.gc.generation.0.space.1.used substituted NaN
...
Warning: Unresolved Symbol: sun.gc.collector.0.time substituted NaN
Warning: Unresolved Symbol: sun.gc.collector.1.time substituted NaN
S0 S1 E O P YGC YGCT FGC FGCT GCT
� � � � 30,33 � � � � �

6.2) Porque aumentar o stack size da aplicação de teste para monitorar ?

Parece que as ferramentas gráficas jconsole e visualvm exigem um stack de tamanho maior para monitorar, caso contrário ocorre um erro

*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at ../../../src/share/instrument/JPLISAgent.c line: 806
Segmentation fault

isso é assunto para outro blog

6.3) Porque não aumentar o tamanho da área YOUNG (-XX:+NewSize)

Ao aumentar o tamanho da área YOUNG diminuiu a quantidade de GC, mas o tempo total do GC aumentou e isso trouxe uma performance inferior ao teste final. Nem sempre aumentar o tamanho da YOUNG beneficia a aplicação. Cada caso tem de ser analisado diferente.

Escrito por claudio at 11:23 AM categorizado por Java

Tags: java performance

Quinta-feira, 1 Abril 2010

Voltando para Brasilia + DOTNET Certified Instructor

Ahhh, finalmente posso dizer isso agora.

Depois de um ano na ponte aérea Brasília/São Paulo, estarei voltando a firmar meu trabalho em Brasília.

Nestas viagens frequentes a SP, aprendi muitas tecnologias e novas fronteiras para o potencial técnico. Mas o meu dever familiar falou mais alto e tenho de voltar para Brasília.

E veio ao encontro desta necessidade um desafio na minha carreira, onde vou participar de um novo time em Brasília de evangelistas DOTNET no time da Microsostet, onde irei atuar com clientes governamentais e com a comunidade FSF.

Fiquei contente de ver que tenho outros colegas com quem já trabalhei, que tenho certeza vão agregar muito no time do c# e tenho certeza que esse empreendimento tem tudo para dar certo.

Aproveitando, quero parabenizar neste primeiro de abril o aniversário de meus amigos Marcelo Ribeiro e Alexandre Jeong, saúde e sucesso.

Escrito por claudio at 12:14 AM categorizado por Diversos

Tags: java noticias

Segunda-feira, 29 Março 2010

Instalação Oracle 10.2.0.1 no Kubuntu 9.10 (32bits)

Segue um tutorial de instalação do banco de dados Oracle 10.2.0.1 no Ubuntu 32 bits. Apesar de existir uma versão Express Edition, precisei instalar o 10.2.0.1 no meu laptop. Veja que este é um artigo que visa linux 32 bits, para 64 bits os parametros podem ter outros valores. Esta instalação é apenas para desenvolvimento, se você procura por uma instalação do oracle que irá servir muitos usuários, procure por maiores informações na internet.

O Ubuntu não é listado como uma distribuiçao suportada, mas isso não quer dizer que não pode instalar no ubuntu. Tem alguns ajustes manuais, veja quais são.

Como o Oracle DB não é uma instalação next, next, nem é um serviço trivial, recomendo ler o Quick Install Guide onde é explicado em detalhes algumas instruções.

1) Pre-requisitos e preparação do ambiente

 1.1) SWAP

Na instalação o oracle deverá checar o tamanho da área de swap de acordo com as regras abaixo:

 Memória RAM
Tamanho do SWAP
 Até 1 GB
2 x RAM
 De 1 a 2 GB
1,5 x RAM
 De 2 a 8 GB
Igual a RAM
 Maior que 8 GB
0,75 x RAM
 

 


 


No meu caso, tenho 3 GB RAM e 1 GB de swap, para não precisar redimensionar o tamanho do swap e gastar muito tempo, é possível criar um arquivo de swap e adicionar isso no kernel em runtime, quando a instalação terminar, pode remover o arquivo. Veja como fazer isso.

1.2) Criação de grupos e usuário, diretório 

sudo groupadd oinstall
sudo groupadd dba
sudo groupadd nobody

sudo usermod -g nobody nobody
sudo mkdir -p /opt/oracle
sudo useradd -g oinstall -G dba  -d /opt/oracle -s /bin/bash oracle
sudo chown -R oracle:oinstall /opt/oracle

Coloque uma senha para o usuário oracle

sudo passwd oracle

1.2) Atualização dos parametros do kernel

Preste muita atenção nesta tarefa.

Antes faça um backup dos valores atuais do kernel

sudo sysctl -a > ~/sysctl_bkp

Edite o arquivo /etc/sysctl.conf e altere os seguintes parametros

# Oracle
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 32768 65000
kernel.shmmax=1073741824
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
Coloquei apenas 1 GB para memória compartilhada no Oracle, apesar da documentação pedir a metade.

Chame o comando abaixo, para colocar em efeito os parametros alterados.

sudo sysctl -p

1.3) Alterar os limites

sudo vi /etc/security/limits.conf
# Oracle
oracle           soft    nproc   2047
oracle           hard    nproc   16384
oracle           soft    nofile  1024
oracle           hard    nofile  65536

1.4) Instalação de pacotes adicionais

É necessário instalar alguns programas adicionais

m4
autoconf
autotools-dev
automake
gsfonts-x11
lesstif2
libaio1
sysstat
zlibc
libstdc++5
dpkg-dev
html2text
gettext
intltool-debian
po-debconf
debhelper
librpmio0
librpm0
librpmbuild0
rpm
alien
libstdc++6-4.4-dev
g++-4.4
g++
build-essential
fakeroot
libsys-hostname-long-perl
libmail-sendmail-perl

É necessário instalar o libstdc++5, que pode ser copiado de

http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-17ubuntu1_i386.deb

O Oracle espera alguns comandos em um caminho que não existe no ubuntu, então vamos arrumar

sudo ln -s /usr/bin/awk /bin/awk
sudo ln -s /usr/bin/rpm /bin/rpm
sudo ln -s /usr/bin/basename /bin/basename

Crie um arquivo de profile para o usuário oracle

su - oracle
vi ~/.bashrc

Informe

umask 022

Esteja certo de que o hostname responde com um IP, faça um ping no nome do computador.

Reinicie o seu sistema operacional 

2) Instalação do Oracle

Configure a permissão para que outros usuários possam iniciar programas gráficos

xhost +
Faça o login com o usuário oracle
su - oracle
export DISPLAY=:0

Chame o instalador do oracle

./runInstaller -ignoreSysPrereqs

A opção  -ignoreSysPrereqs desabilita a verificação de compatibilidade do sistema operacional.

Durante a instalaçã

3) Pós instalação

A instalação GUI aconteceu sem maiores problemas,  demorou cerca de 20min.

Segue alguns ajustes para bom funcionamento do ambiente

3.1) /etc/oratab

Foi gerado um arquivo em /etc/oratab, mas não foi colocado o local da instalação do oracle, e isso é importante para iniciar e parar o oracle.

Coloque uma linha como o formato. Se desejar que o oracle seja iniciado com o sistema operacional, deixeo Y caso contrário, coloque N

$ORACLE_SID:$ORACLE_HOME:Y

No meu caso é assim:

APPS:/opt/oracle/oracle/product/10.2.0/db_1:Y 

3.2) Ambiente oracle

Configure no /etc/profile as váriaveis de ambiente. As variáveis serão globais para o sistema operacional.

export ORACLE_HOME=/opt/oracle/oracle/product/10.2.0/db_1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=english

Coloquei o NLS_LANG para inglês para as mensagens de interface do sqlplus serem em inglês, o que facilita muito o trabalho. Veja minha opinião sobre a tradução de sistemas.

Edite o $ORACLE_HOME/bin/dbstart e altere a declaração da variável ORACLE_HOME_LISTENER  (linha 78 aproximadamente) para $ORACLE_HOME, como o exemplo

ORACLE_HOME_LISTNER=$ORACLE_HOME

3.3) Inicialização do oracle

Faça o login como usuário oracle e inicie o servidor

lsnrctl start
dbstart

 

3.4) rlwrap e sqlplus (opcional)

Para quem já usou o sqlplus sabe que ele não mantém um histórico dos comandos, como o bash. Seria muito útil ter um comportamento semelhante o bash, onde no console do sqlplus o usuário possa buscar no histórico (ctrl+r) ou navegar com as setas.

Isso é possível como rlwrap

sudo apt-get install rlwrap

Então chame

rlwrap sqlplus usuario/senha@oracle_sid

3.4.5) Uma dica a parte, ao usarem o sqlplus para conectar em um serviço que não esteja configura o tnsnames.ora, é possível passar o servidor e porta.

sqlplus usuario/senha@//nome_servidor:porta/oracle_sid

Para parar o Oracle

dbshut
lsnrctl stop

 

M

http://www.makina-corpus.org/blog/how-install-oracle-10g-full-64-bits-version-not-xe-and-tora-gnu-linux-ubuntu-karmic-910-64-bits
http://www.pythian.com/news/968/installing-oracle-11g-on-ubuntu-804-lts-hardy-heron/
 

Escrito por claudio at 2:14 AM categorizado por Dicas e Scripts

Tags: dicas

 
     Navegue no histórico de mensagens: « First  « Prev   1 2 3 4 5   Next »  Last »