Spesso accade che l'utente usato per eseguire stored procedures e statements SQL non coincida con l'utente a cui essi appartengono.
Per far si che tutto funzioni è necessario conferire all'utente di esecuzione i diritti su tali oggetti.
Questa operazione si ottiene con il comando GRANT.
Tale comando assume sintassi differenti al variare dell'oggetto cui si riferisce.
Tutte le operazioni seguenti devono essere fatte dall'utente proprietario dell'oggetto o da un utente amministratore.
(Quello che segue è solo un promemoria, i parametri del comando variano al variare delle esigenze)
Per Procedure, Function, Packages è possibile attribuire solo il privilegio di esecuzione.
GRANT EXECUTE ON <Nome_Oggetto> TO <Utente_di_Esecuzione>;
Per le Sequence è possibile attribuire il privilegio di esecuzione,
GRANT SELECT ON <Nome_Oggetto> TO <Utente_di_Esecuzione>;
ed in casi più rari quello di modifica
GRANT ALTER ON <Nome_Oggetto> TO <Utente_di_Esecuzione>;
Per le View solitamente si danno i privilegi di lettura
GRANT SELECT, QUERY REWRITE, FLASHBACK ON <Nome_Oggetto> TO <Utente_di_Esecuzione>;
ma se la view è aggiornabile è necessario dare anche quelli di editing
GRANT DELETE, INSERT, UPDATE ON <Nome_Oggetto> TO <Utente_di_Esecuzione>;
Per le Table solitamente si danno i privilegi di lettura e di editing
GRANT SELECT, QUERY REWRITE, FLASHBACK ON <Nome_Oggetto> TO <Utente_di_Esecuzione>; GRANT DELETE, INSERT, UPDATE, ON COMMIT REFRESH ON <Nome_Oggetto> TO <Utente_di_Esecuzione>;
Questi comandi devono essere inclusi nell'eventuale script di creazione dell'oggetto.
Un sinonimo è un nome alternativo per un qualsiasi oggetto del database.
La sintassi è:
CREATE [OR REPLACE] [public] synonym [schema.]synonym_name FOR [schema.]object_name[@dblink];
Esempio:
CREATE public synonym connessioni FOR applic.connessioni;
Per cancellare un sinonimo si usa il comando Drop.
DROP [public] synonym [schema.]synonym_name [force];
Esempio:
DROP public synonym connessioni force;
Uno script è un insieme di comandi SQL e non che può essere eseguito da strumenti evoluti come il TOAD ma anche dal programma SqlPlus fornito con Oracle.
In uno script posso attivare la tracciatura dell'output ed il nome del file di log in cui salvarla.
Per fare ciò si usa il coamndo Spool
Spool <Nome_File_Log>;
Spool Off;
Un altro comando utile è Prompt che permette di inviare una stringa nel file di log
Prompt "Testo da inviare al file";
Poiché all'interno di uno script non possono essere presenti blocchi Begin..End, l'eventuale esecuzione di una procedura deve avvenire tramite il comando Execute
EXECUTE <Nome_Procedura>;
E'utile per quando deve essere lanciata una eventuale procedura di ricompilazione degli oggetti invalidi.
All'interno di uno script possono essere invocati altri script mediante l'operatore @
@<Nome_Script>;
Spool Script_Di_Prova.log prompt "Questo è uno script di prova" prompt "Alter table MYTABLE..." ALTER TABLE MYTABLE ADD MYCOLUMN CHAR(2); prompt "Compila Oggetti Invalidi..." EXECUTE CompilaInvalidi; prompt "Compila package PK_MYPACKAGE" @PK_MYPACKAGE.pks @PK_MYPACKAGE.pkb prompt "Compila Oggetti Invalidi..." EXECUTE CompilaInvalidi; prompt "Aggiorna MYTABLE" UPDATE MYTABLE SET MYCOLUMN = '**'; COMMIT; prompt "Fine Script" Spool off;
Begin End in uno script.
Aprire SqlPlus:
sqlplus <user>/<password>@tnsalias
Eseguire lo script ed uscire:
@nome_del_file.sql exit
Per avere un log dell'esecuzione:
@nome_del_file.sql spool off exit