Thursday, April 12, 2012

Autoejecutar comandos cuando se abre SQL*Plus

En la ruta donde se instaló Oracle ( $ORACLE_HOME ), existe una carpeta llamada sqlplus que contiene las carpetas admin, demo, doc, mesg.... Dentro de la carpeta admin existe un archivo glogin.sql. El archivo glogin.sql contiene comandos que siempre son ejecutados cada vez que se llama SQL*Plus (sea la versión windows o consola). A continuación un ejemplo del contenido del archivo glogin.sql de un cliente Oracle 9i:


--
-- Copyright (c) Oracle Corporation 1988, 2000.  All Rights Reserved.
--
-- NAME
--   glogin.sql
--
-- DESCRIPTION
--   SQL*Plus global login startup file.
--
--   Add any sqlplus commands here that are to be executed when a user
--   starts SQL*Plus on your system
--
-- USAGE
--   This script is automatically run when SQL*Plus starts
--

-- For backward compatibility
SET PAGESIZE 14
SET SQLPLUSCOMPATIBILITY 8.1.7

-- Used by Trusted Oracle
COLUMN ROWLABEL FORMAT A15

-- Used for the SHOW ERRORS command
COLUMN LINE/COL FORMAT A8
COLUMN ERROR    FORMAT A65  WORD_WRAPPED

-- Used for the SHOW SGA command
COLUMN name_col_plus_show_sga FORMAT a24

-- Defaults for SHOW PARAMETERS
COLUMN name_col_plus_show_param FORMAT a36 HEADING NAME
COLUMN value_col_plus_show_param FORMAT a30 HEADING VALUE

-- Defaults for SET AUTOTRACE EXPLAIN report
COLUMN id_plus_exp FORMAT 990 HEADING i
COLUMN parent_id_plus_exp FORMAT 990 HEADING p
COLUMN plan_plus_exp FORMAT a60
COLUMN object_node_plus_exp FORMAT a8
COLUMN other_tag_plus_exp FORMAT a29
COLUMN other_plus_exp FORMAT a44

-- [CBRA][20120412] Las siguientes lineas son personalizadas --
SET TIMING ON ; 
SET LINES 1500 ; 




En el ejemplo anterior, se agrega SET TIMING ON para que cada query imprima, además de su reporte, cuanto tiempo transcurrió durante su ejecución. Adicional se agrega SET LINES 1500 para aquellos reportes que excedan 80 líneas no se desplacen a la siguiente línea.

 Ejecutando SQL*Plus con la modificación realizada en glogin.sql:


SQL*Plus: Release 9.2.0.1.0 - Production on Thu Apr 12 04:50:47 2012

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


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production

SQL> SELECT SYSDATE FROM DUAL ;

SYSDATE
---------
12-APR-12

Elapsed: 00:00:00.00
SQL> SELECT COUNT(*) FROM compras ;

  COUNT(*)
----------
   5419959

Elapsed: 00:00:23.08
SQL>

Nótese que aparece "Elapsed: 00:00:23.08" sin haber ejecutado previamente SET TIMING ON, todo automático.

Si te sirvió de ayuda o quieres realizar alguna observación, bienvenidos tus comentarios.

No comments:

Post a Comment