La funzione sleep in Oracle è in realtà una procedura per includere in una funzione piuttosto che una funzione stessa . La confusione si verifica spesso a causa di somiglianze tra i due, con l'unica vera differenza è che una procedura segue le istruzioni che non sempre restituiscono un valore , mentre una funzione deve termina sempre con un valore di ritorno . Aggiunta di istruzioni PL /SQL che mettono un database Oracle " a dormire " è un compito amministrativo comune e, a seconda delle vostre preferenze , gli utenti finali possono utilizzare anche l'opzione di sonno . Identificazione
Mettere un database Oracle a dormire significa esattamente quello che dice . Le dichiarazioni si scrive causano il database di sospendere le operazioni normali o smettere di lavorare , a volte per non più di un paio di centesimi di secondo . Ad esempio , gli utenti finali possono aggiungere una procedura di sonno per mettere in pausa il database prima inserisce nuovi dati in una tabella . Gli amministratori di database possono utilizzare una funzione sleep per raccontare il database di aspettare un determinato periodo di tempo prima di tentare di eseguire nuovamente un'azione non riuscita , o per mettere in pausa il database mentre si esegue un backup di routine .
Processo < br >
Oracle fornisce tre opzioni, se si è un amministratore e di una opzione se si è un utente finale per la codifica e l'utilizzo della procedura di sonno in istruzioni PL /SQL . I tre comandi di gestione sono dbms_backup_restore , dbms_drs e dbms_lock e il comando utente finale è user_lock . L'opzione dbms_backup_restore arresta il database durante il backup e il ripristino di procedure, dbms_drs - o la pianificazione delle risorse distribuite - può sospendere una sessione durante l'ottimizzazione delle risorse e sia DBMS e user_lock sono utili per fornire l'uso esclusivo di una macchina o di terminale per un periodo di tempo limitato specifico , l'esecuzione di una limite di tempo per una read_lock e per la sincronizzazione delle applicazioni .
sintassi
Mentre il comando effettivo per ogni diverso a seconda dell'opzione scelta , il formato generale della sintassi per la scrittura di una procedura di sonno inizia con la creazione della procedura utilizzando l'istruzione " CREATE PROCEDURE_sleep [ ( sleepTime iN INTEGER) ] IS . " la parte iniziale della istruzione crea la procedura e le informazioni all'interno della parentesi quadre identifica i suoi parametri , che in questo caso è il nome della procedura , il IN identificatore che indica Oracle la procedura può essere utilizzata anche all'interno di una funzione e intero che definisce il tipo di dati . Avviare la procedura con una semplice dichiarazione " BEGIN" e nella riga successiva identificare l'opzione ei relativi parametri, come ad esempio SYS.DBMS_BACKUP_RESTORE.SLEEP ( sleepTime_in_seconds = 5.01 ), prima di concludere la procedura con l'istruzione END :
CREATE PROCEDURE_sleep [ ( sleepTime_in_minutes iN INTEGER ) ] ISBEGINSYS.DBMS_BACKUP_RESTORE.SLEEP ( sleepTime_in_minutes = 15,01 ) ; END ;/
Considerazioni
Quando si tratta di concedere privilegi EXECUTE per terminare gli utenti per il comando user_lock.sleep , capiscono che non solo si concluderà gli utenti hanno la possibilità di scrivere una procedura di sonno , ma anche tutte le procedure di bloccaggio associati a questo comando . Inoltre , la dimensione e la configurazione del database Oracle potrebbero impedire la concessione di privilegi EXECUTE per tutti gli utenti finali . A causa di questo , Oracle raccomanda la concessione di privilegi serratura secondo la necessità o il ruolo all'interno della società .