SQL*Plus History a partir do 12.2 ~ DBA Anderson Graf
SQL*Plus History a partir do 12.2
Anderson Graf 08:09 #dica, 12c Sem Comentarios
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> set hist on
Para ajustar a quantidade de comandos mantidos no histórico utilize o comando set hist <quantidade>
SQL> set hist 1000
Para exibir os comandos já executados a partir do histórico execute hist
1  select 1 from dual;
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
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
/bin/bash: nao_exite: command not found
Para re-executar um comando contido no histórico utilize o comando hist <linha> run
Para deletar um comando do histórico utilize hist <linha> del
* 3  select 1234 from dual;
SQL> hist 3 del
Para apagar todo o histórico utilize o comando hist clear
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqpug/HISTORY.html#GUID-CCF9B047-3122-4644-BA06-5FA4B5812E9F