Rilascio SQL

Privilegi

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.

|h Procedure, Function, Packages
GRANT EXECUTE ON <Nome_Oggetto> TO <Utente_di_Esecuzione>;


Per le Sequence è possibile attribuire il privilegio di esecuzione,

|h Sequence (Esecuzione)
GRANT SELECT ON <Nome_Oggetto> TO <Utente_di_Esecuzione>;


ed in casi più rari quello di modifica

|h Sequence (Modifica)
GRANT ALTER ON <Nome_Oggetto> TO <Utente_di_Esecuzione>;


Per le View solitamente si danno i privilegi di lettura

|h View (Lettura)
GRANT SELECT, QUERY REWRITE, FLASHBACK ON <Nome_Oggetto> TO <Utente_di_Esecuzione>;


ma se la view è aggiornabile è necessario dare anche quelli di editing

|h View (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

|h Table
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.

Sinonimi

Un sinonimo è un nome alternativo per un qualsiasi oggetto del database.

Creazione

La sintassi è:

CREATE [OR REPLACE] [public] synonym [schema.]synonym_name FOR [schema.]object_name[@dblink];
  • Or Replace – Permette di sostituire un sinonimo senza doverlo prima distruggere con un comando DROP
  • Public – Rende il sinonimo visibile a tutti gli utenti (schema)
  • Schema – Indica lo schema, se omesso è quello corrente
  • Object_Name – Il nome dell'oggetto per cui creare il sinonimo. L'oggetto può essere dei seguentri tipo:
    • Tabelle
    • Viste
    • Sequenze
    • Procedure
    • Funzioni
    • Package
    • Sinonimi
    • Classi Java
    • Oggetti defini dall'utente

Esempio:

CREATE public synonym connessioni FOR applic.connessioni;

Cancellazione

Per cancellare un sinonimo si usa il comando Drop.

DROP [public] synonym [schema.]synonym_name [force];
  • Public – Consente di cancellare un sinonimo pubblico
  • Force – Forza la cancellazione del sinonimo anche se in uso. Gli oggetti che ne facevano uso rimarranno invalidi.

Esempio:

DROP public synonym connessioni force;

Scripts

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.

Comandi Particolari

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

|h Spool (Abilita lo Spool)
Spool <Nome_File_Log>;
|h Spool (Termina lo Spool)
Spool Off;


Un altro comando utile è Prompt che permette di inviare una stringa nel file di log

|h Prompt
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

|h 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 @

|h @ (Invocare uno script)
@<Nome_Script>;


Esempio

|h Esempio
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;
Non è possibile usare blocchi Begin End in uno script.

SqlPlus

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
oracle/rilascio_sql.txt · Ultima modifica: 2015/06/08 20:15 da 127.0.0.1
Torna su
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0