sábado, 24 de agosto de 2019

SQL*Plus History a partir do 12.2

Um recurso muito útil, que digamos, demorou para ser inserido nas funcionalidades do SQL*Plus e ainda é pouco conhecido pela maioria é o comando HIST[ORY].

Em função desta "deficiência" da ferramenta ao longo dos anos, grande parte da comunidade passou a utilizar o rlwrap que proporciona um acesso rápido ao histórico de comandos do SQL*Plus e RMAN, por exemplo.

Apesar do RMAN ainda não possuir um comando history nativo, a funcionalidade introduzida a partir da versão 12.2 no SQL*Plus é bem interessante pois permite que o usuário consulte, edite, execute e remova comandos armazenados no histórico de sua sessão.

O comando show hist permite que seja consultado se a geração de histórico está habilitada ou não, bem como o tamanho (quantidade de comandos) armazenados no histórico caso este esteja habilitado.

Para habilitar a funcionalidade basta digitar set hist on


SQL> show hist
history is OFF
SQL> set hist on
SQL> show hist
history is ON and set to "100"

Para ajustar a quantidade de comandos mantidos no histórico utilize o comando set hist <quantidade> 

SQL> set hist 1000
SQL> show hist
history is ON and set to "1000"

Para exibir os comandos já executados a partir do histórico execute hist

SQL> hist
SP2-1651: History list is empty.
SQL> select 1 from dual;

         1
----------
         1

SQL> hist
  1  select 1 from dual;

SQL> show user
USER is "SYS"
SQL> hist
  1  select 1 from dual;
  2  show user

Para editar um comando do histórico utilize a opção hist <linha> edit 


SQL> hist 1 edit
select 1234 from dual;

A edição do histórico irá manter o comando original e ira adicionar ao histórico uma nova entrada contendo a alteração realizada

SQL> hist
  1  select 1 from dual;
  2  show user
  3  select 1234 from dual;

O comando edit irá utilizar o utilitário padrão do sistema operacional para realizar a edição do comando caso a variável _EDITOR não tenha sido definida na sessão. No caso de um ambiente Linux o vi será o padrão mas podemos alter-la para qualquer outro utilitário de edição através do comando define _EDITOR

Caso uma entrada inválida seja inserida receberemos erro ao executar o hist edit

SQL> define _EDITOR = nao_exite
SQL> hist 1 edit
/bin/bash: nao_exite: command not found
SQL> define _EDITOR = vi

Para re-executar um comando contido no histórico utilize o comando hist <linha> run

SQL> hist
  1  select 1 from dual;
  2  show user
  3  select 1234 from dual;

SQL> hist 3 run

      1234
----------
      1234

Para deletar um comando do histórico utilize hist <linha> del

SQL> hist
  1  select 1 from dual;
  2  show user
* 3  select 1234 from dual;

SQL> hist 3 del
SQL> hist
  1  select 1 from dual;
  2  show user

Para apagar todo o histórico utilize o comando hist clear

SQL> hist
  1  select 1 from dual;
  2  show user

SQL> hist clear
SQL> hist
SP2-1651: History list is empty.



Referência:

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqpug/HISTORY.html#GUID-CCF9B047-3122-4644-BA06-5FA4B5812E9F
Postagem mais recente Postagem mais antiga Página inicial

0 comentários:

Postar um comentário

Translate

# Suporte

# ACE Program

#Oracle

#Oracle
Disclaimer: The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

#Blog reconhecido

#ARTICULISTA

Marcadores

Postagens populares