martes, 10 de julio de 2007

Modificar el prompt de SQL*Plus

Cuando estamos trabajando con SQL*Plus, solemos trabajar con varias ventanas abiertas cada una conectada a una instancia diferente. Esto suele ser un problema ya que podemos confundirnos de instancia y trabajar en una instancia diferente. Cuando iniciamos SQL*Plus, Oracle busca un archivo llamado "login.sql" dentro del path definido en la variable ORACLE_PATH, y si no lo encuentra, busca el archivo "glogin.sql" (global login).
Podemos modificar el prompt de SQL*Plus para identificar con facilidad el esquema e instancia en donde nos encontramos.
Para realizar ésta modificación, abrimos el archivo "login.sql" o "glogin.sql" y colocamos lo siguiente:


set term off
set serveroutput on size 1000000 format wrapped
set linesize 70
set trimspool on
set pagesize 9999
set heading on
set underline -

define sql_prompt=idle
define sql_prompt = 'not connected'

column id_plus_exp FOR 990 HEADING i
column parent_id_plus_exp FOR 990 HEADING p
column plan_plus_exp FOR a60
column object_node_plus_exp FOR a8
column other_tag_plus_exp FOR a29
column other_plus_exp FOR a44

column user_sid new_value sql_prompt

select lower(user)||'@'||'&_CONNECT_IDENTIFIER' user_sid
from dual;

set sqlprompt '&sql_prompt> '

set timing on
set term on


Nota: Este script es el que tengo actualmente en mi cliente. Se puede modificar a gusto de cada uno.

El prompt quedará de la siguiente manera: "user@instancia>"

3 comentarios:

Anónimo dijo...

Hola Leonardo, estuve implementando tus recomendaciones, pero tengo la siguiente consulta: Reemplaze el contenido del archivo glogin.sql con el que estas recomendando, y luego me conecte (sqlplus prueba/prueba) y si aparecio el prompt con el formato que mencionastes, pero cuando en esta misma sesion cambio a otro usuario se mantiene el prompt del primer usuario con el que ingrese, que tendria que hacer para que el prompt se cambie. Gracias

Leonardo Horikian dijo...

Ok, para realizar lo que requeris, podrías crear un script para que te modifique el prompt cada vez que cambias de sesión.

Por ejemplo, podrías crearte un script llamado login.sql con el siguiente contenido:

set term off

column user_sid new_value sql_prompt

select lower(user)||'@'||'&_CONNECT_IDENTIFIER' user_sid
from dual;

set sqlprompt '&sql_prompt> '

set term on

Veamos un ejemplo:

sqlplus leo_1/hori@test

SQL*Plus: Release 9.2.0.1.0 - Production on Jue Feb 21 09:33:36 2008

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
With the Partitioning option
JServer Release 9.2.0.7.0 - Production

leo_1@test>

leo_1@test> conn leo_2/hori@test
Connected.

leo_1@test> @login

leo_2@test>

Diego Andres Duque Jimenez dijo...

Hola Leonardo...

Cabe anotar que en 10g, el archivo se reejecuta cada vez que se hace un "connect", y las instrucciones se simplifican a poner simplemente...

set sqlprompt "_USER'@'_CONNECT_IDENTIFIER > "

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