Está vai para quem sempre quis usar TAB no momento de fazer aquele comando no SQL*Plus.
Já imaginou digitar sel no prompt, apertar a tecla TAB e ele automaticamente completar a palavra select? Bom … isso é totalmente possível, graças ao pacote rlwrap. Além de auto completar é possível deixar um histórico de comandos no SQL*Plus. O histórico eu já mostrei a algum tempo atrás como fazer, veja aqui.
Após de você ter instalado o pacote rlwrap(é possível instalar através do yum [Red Hat, Oracle Linhx, Fedora] ou wget [Ubuntu, Debian, Suse]), veja que ele é super simples de usar. Antes de fazer a chamada para o sqlplus, basta colocar o comando rlwrap na frente, dessa forma:
oracle@oracle11g:~$ rlwrap sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Wed Feb 29 22:53:44 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning and Real Application Testing options SYS@dbtst>
Pronto, a partir de agora você tem o poder de ter o histórico de todas as suas chamadas no SQL*Plus. Faça um teste você mesmo, digite o comando abaixo:
SYS@dbtst> select count(*) from dba_tables;
COUNT(*)
----------
2806
1 row selected.
Agora, aperta a seta para cima ? do seu teclado para ver o seu último comando digitado.
SYS@dbtst> (tecla seta de cima)
SYS@dbtst> select count(*) from dba_tables;
COUNT(*)
----------
2806
1 row selected.
Muito bom né?! Ok … Essa eu já tinha mostrado no último artigo do rlwrap, mais e como auto completar meus comandos? Super simples também, mais primeiro temos que criar nosso catalogo de palavras chaves que rlwrap lerá para saber o que auto completar.
Vamos então criar o arquivo chamado $ORACLE_BASE/sql.dict e nesse arquivo, vamos colocar as seguintes palavras:
select update delete create number table
Feito isso, vamos fazer o sqlplus da seguinte forma:
[oracle@oracle11g ~]$ rlwrap -b "" -f $ORACLE_BASE/sql.dict sqlplus SQL*Plus: Release 11.2.0.3.0 Production on Wed Feb 29 23:01:49 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. Enter user-name: system@dbtst Enter password: Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production With the Partitioning and Real Application Testing options SYSTEM@dbtst>
Ótimo, agora basta digitar sel, aperte a tecla TAB e veja o rlwrap auto completar o comando select
SYSTEM@dbtst> sel [TAB] SYSTEM@dbtst> select
O segredo aqui está no arquivo $ORACLE_BASE/sql.dict, que funciona como um catalogo de palavras, qual comando você colocar lá o rlwrap vai auto completar.
Lembrando que o rlwrap não funciona somente com o SQL*Plus, ele também faz a mesma coisa com o rman por exemplo:
[oracle@oracle11g ~]$ rlwrap -b "" -f $ORACLE_HOME/sql.dict rman target/
Recovery Manager: Release 11.2.0.2.0 - Production on Wed Feb 29 23:07:08 2012
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: DBTST (DBID=2992708500)
RMAN>
Para não ter que ficar digitando esse comando enorme, gosto de criar um alias dele e colocar no meu arquivo ~/.bashrc:
alias sql='rlwrap -b "" -f $ORACLE_BASE/sql.dict sqlplus'
Feito isso basta agora executar o alias sql que o sqlplus irá abrir com o rlwrap.
[oracle@oracle11g ~]$ . .bashrc [oracle@oracle11g ~]$ sql SQL*Plus: Release 11.2.0.3.0 Production on Wed Feb 29 23:10:12 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. Enter user-name:
Infelizmente, para quem usa SQLPlus no Linux sabe como é frustrante não ter o histórico dos comandos executados assim como é possível fazer no bash do Linux.
O RLWRAP é um ferramenta free e muito simples de utilizar que permite vizualizar os históricos executados através do SQL*Plus.
Passo 1: Instale o RLWRAP através do YUM, ou abaixe e instale (arquivo rpm) através do site http://utopia.knoware.nl/~hlub/uck/rlwrap/.
$ yum install rlwrap
Passo 2: Mude seu .bashrc e adicione as seguintes linhas.
alias sqlplus='rlwrap sqlplus' alias rman='rlwrap rman'
Pronto, após o logout do seu usuário os históricos do SQLPlus estarão habilitados.
Nos testes que realizei ele funcionou legal, somente em alguns casos a ação “CONTROL + C”, para cancelar alguma solicitação não funcionou, mas mesmo assim eu o recomendo. Essa é uma dica simples que garanto que vai ser de grande ajuda para muitos.
