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
0 comentários:
Postar um comentário