| Come configurare il prompt di SQL*PLUS |
|
|
|
| Scritto da Andrea Salzano |
| Mercoledì 12 Marzo 2008 14:03 |
|
Molto di ciò che segue è stato preso dal libro di Tomas Kyte. Spero non me ne voglia. Prima di iniziare vediamo cosa dice il manuale a proposito dei due file utilizzati per la configurazione di SQL*PLUS: Qundi:
L'espressione "se viene trovato", indicata al punto 2, vuol dire che la lettura del login.sql è subordinata all'esistenza della variabile d'ambiente SQLPATH. Nel nostro caso, tale variabile, sarà vitale per il corretto funzionamento di quanto descritto di seguito. Le impostazioni di stotto riportate, vanno aggiunte in calce al file glogin.sql REM "serveroutput" controlla l’output del package DBMS_OUTPUT.PUT_LINE. In genere si desidera che REM "serveroutput" siasempre impostato ad ON ed il buffer relativo sia il più grande possibile. set serveroutput on size 1000000 format wrapped REM column object_name format a30 column segment_name format a30 column file_name format a60 column name format a30 column plan_plus_exp format a100 REM Di default, una linea in un file di spool è a lunghezza fissa, con spazi bianchi REM che la completano se necessario. "trimspool" elimina tali spazi bianchi REM rendendo il file significativamente più piccolo set trimspool on REM "long" controlla quanto di un campo LONG o CLOB, SQL*Plus debba mostrare. Il REM valore di default è 80 caratteri che possono essere troppo pochi. Di seguito REM viene lo impostiamo in modo da utilizzare i primi 1000 caratteri set long 1000 REM Questo paramentro imposta l’ampiezza di riga per cui SQL*Plus wrappa l’output set linesize 130 REM SQL*Plus stampa l’intestazione delle colonne ogni N righe di output, che di default è 14. REM A volte questo output può essere fastidioso, così lo si può modificare set pagesize 20 REM Imposta il l’editor di default define _editor=vi La personalizzazione del prompt va configurata nel file login.sql, per motivi che saranno chiariti tra breve. REM Disabilita l’output del terminale: fa in modo tale di non stampare nulla quando si esegue il login set termout off REM Di seguito viene impostato il prompt di SQL*Plus a "DATABASE(USERNAME)> ". Viene utilizzato REM NEW_VALUE per formattare il prompt, il cui valore di default è IDLE (molto utile ai dba. Il prompt REM sarà IDLE se il db non è ancora partito) define gname=idle column global_name new_value gname select SYS_CONTEXT('USERENV','HOST')||'.'||SYS_CONTEXT('USERENV','INSTANCE_NAME')||'('|| user||')' global_name from dual; set sqlprompt '&gname> ' REM Riabilita l’output del terminale set termout on Di seguito un esempio di output del prompt. Per comodità personale, poiché da Oracle9i non è più possibile connettersi come utente internal, ho creato il seguente alias nel .bash_profile dell'utente oracle: alias internal='sqlplus "/as sysdba"' [nispushtest.PUSHTEST]/sbrdbms/oracle->internal SQL*Plus: Release 9.2.0.6.0 - Production on Wed Mar 29 13:27:21 2006 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to: Oracle9i Enterprise Edition Release 9.2.0.6.0 - Production With the Partitioning option JServer Release 9.2.0.6.0 - Production PUSHTEST(SYS)> Una volta lanciato, il prompt di SQL*Plus non cambia col cambiare dell'utente. Questo è perché i files di configurazione glogin.sql e login.sql viengono letti una sola volta (alla prima esecuzione appunto. Questo comportamento cambia, come vedremo, a partire da Oracle 10g). Ciò vuol dire che al successivo comando di connect, le impostazioni di SQL*Plus non vengono modificate. Il, trucco allora, risiede nell’usare lo script connect che rilancia il glogin.sql ogni volta: REM Configurazione di connect.sql connect &1 @glogin Affinché tutto funzioni è necessario impostare la variabile d’ambiente SQLPATH. Utilizzando tale variabile, puossiamo mettere connect.sql, login.sql ed altri scripts in un’unica directory e fare in modo che SQL*Plus li trovi per noi. SQL*Plus cercherà dapprima nella directory corrente e poi in quella specificata in SQLPQTH. In questo caso ho impostato SQLPATH come: SQLPATH=$ORACLE_HOME/sqlplus/admin Di seguito quindi, un esempio di cambio utente: PUSHTEST(SYS)> @connect nip Enter password: PUSHTEST(NIP)> Sempre nella direcotry $SQLPATH, conviene creare un link simbolico a connect.sql, nel seguente modo: ln -s connect.sql conn.sql così facendo, è possibile utilizzare anche la forma abbreviata di connect, simulando del tutto la connessione ad un nuovo utente da SQL*Plus: PUSHTEST(SYS)> @conn nip Enter password: PUSHTEST(NIP)> Tutto funziona anche se configuriamo il prompt a partire dal file login.sql e non dal glogin.sql. In questo caso va modificato il connect.sql, cambiando la stringa da "@glogin" a "@login". A partire da Oracle 10g comunque, il comportalemto di login.sql e glogin,sql cambia. Di seguito riporto un estratto dal manuale: Questo vuol dire che a partire da Oracle 10g, non è più necessario creare lo script connect.sql, come indicato sopra. Vediamo infatti qual è il nuovo comportamento di Oracle (questa volta il database è su un sistema Windows): C:\>sqlplus "/as sysdba" SQL*Plus: Release 10.2.0.2.0 - Production on Sab Apr 1 19:36:25 2006 Copyright (c) 1982, 2005, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Production With the Partitioning, OLAP and Data Mining options SALZI(SYS)> conn andrea Enter password: Connected. SALZI(ANDREA)> |
| Ultimo aggiornamento Sabato 14 Agosto 2010 16:37 |
Oracle In Italy
Login
DOCman Category
Non ci sono documenti



