Olá,
Recentemente trabalhei em um projeto onde tive que realizar um levantamento das tabelas, procedures, views, etc… utilizadas pelo Spacewalk em um banco de dados Oracle. Confesso aos amigos, que nunca tinha tido uma experiência maior do que 10 minutos utilizando o cliente SQPLus até então.
Após realizar alguns SELECT(s) dentro do SQLPlus, percebi que o mesmo não armazenada histórico dos comandos realizados. Acostumado com o famoso history e truques para reutilizar comandos no bash, parti em busca de alguma alternativa para acrescentar tal funcionalidade ao SQLPlus.
Graças à comunidade open source, encontrei uma solução muito simples e eficaz para tal problema: Eis que os apresento o rlwrap
O rlwrap esta disponível no repositório oficial do Fedora e também no repositório EPEL caso o cliente queiram instalar em Red Hat Enterprise Linux.
Após instalar o pacote rlwrap, crie um alias adicionando o comando antes do SQLPlus e tudo estará resolvido. Vamos aos procedimentos:
[root@server ~]$ echo "alias sqlplus='/usr/bin/rlwrap /usr/lib/oracle/10.2.0.4/client/bin/sqlplus'" >> /etc/bashrc [root@server ~]$ su - [oracle@server ~]$ alias alias l.='ls -d .* --color=tty' alias ll='ls -l --color=tty' alias ls='ls --color=tty' alias sqlplus='/usr/bin/rlwrap /usr/lib/oracle/10.2.0.4/client/bin/sqlplus' alias vi='vim' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' [oracle@server ~]$
[oracle@server ~]$ sqlplus USER/PASSWORD@rhnsat SQL*Plus: Release 10.2.0.4.0 - Production on Wed Nov 3 03:46:29 2010 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> SELECT ce.errata_id, ce.channel_id, c.label, e.advisory_name FROM 2 rhnchannelerrata ce, rhnchannel c, rhnerrata e WHERE ce.channel_id=c.id AND 3 e.id=ce.errata_id AND e.advisory_name='RHEA-2009:1400'; ERRATA_ID CHANNEL_ID ---------- ---------- LABEL -------------------------------------------------------------------------------- ADVISORY_NAME -------------------------------- 1245 162 rhel-i386-server-5 RHEA-2009:1400 SQL> select version from v$instance; VERSION ----------------- 10.2.0.4.0 SQL> quit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options [oracle@server ~]$
Um arquivo será criado no diretório pessoal do usuário chamado .sqlplus_history contendo os comandos digitados. Agora, basta usar a seta para cima e eis o histórico de comandos.
[oracle@server ~]$ ls -la ~/.sqlplus_history -rw------- 1 oracle oracle 245 Nov 3 03:50 /opt/apps/oracle/.sqlplus_history [oracle@server ~]$ cat ~/.sqlplus_history SELECT ce.errata_id, ce.channel_id, c.label, e.advisory_name FROM rhnchannelerrata ce, rhnchannel c, rhnerrata e WHERE ce.channel_id=c.id AND e.id=ce.errata_id AND e.advisory_name='RHEA-2009:1400'; select version from v$instance; quit [oracle@server ~]$
Gostaria de dedicar esse post ao meu amigo Régiz Vaz que sempre me ajudou em Oracle matters
e com certeza o melhor profissional que já trabalhei no que diz repeito de soluções Oracle.
Feito!! Divirtam-se!! ![]()
Um quebra-costelas chê…















