The sleep -funksjon i Oracle er i realiteten en prosedyre du kan inkludere i en funksjon snarere enn en funksjon i seg selv . Forvirring oppstår ofte på grunn av slående likheter mellom de to, med den eneste reelle forskjellen er at en prosedyre følger instruksjonene som ikke alltid gir en verdi, mens en funksjon må alltid ender med en avkastning verdi. Legge PL /SQL-setninger som setter en Oracle database " å sove" er en felles administrativ oppgave, og avhengig av dine preferanser, kan sluttbrukerne også bruke en søvn alternativet. Identifikasjon
Putting en Oracle database til å sove betyr akkurat hva det står . Uttalelsene du skriver føre til at databasen til å suspendere normal drift eller slutte å fungere , noen ganger for så lite som noen få hundredeler av et sekund. For eksempel kan sluttbrukere legge en søvn prosedyre for å ta en pause i databasen før det setter inn ny informasjon i en tabell . Database administratorer kan bruke en søvn funksjon å fortelle databasen for å vente en viss tid før du prøver å kjøre en mislykket handling, eller for å pause databasen mens den utfører en rutinemessig backup.
Process
Oracle gir deg tre alternativer hvis du er administrator og ett alternativ hvis du er en sluttbruker for koding og bruk av søvn prosedyre i PL /SQL-setninger . De tre administrative kommandoer er dbms_backup_restore , dbms_drs og dbms_lock og sluttbrukeren kommandoen er user_lock . Den dbms_backup_restore alternativet stopper databasen under sikkerhetskopiering og gjenoppretting prosedyrer, dbms_drs - eller distribuert ressurs planlegging - kan suspendere en økt i løpet ressurs optimalisering og både dbms og user_lock er nyttige for å gi eksklusiv bruk til en bestemt maskin eller terminal for en begrenset tid , håndheve en fristen for en read_lock og for synkronisering applikasjoner.
Syntax
Mens selve kommandoen for hver forskjellig avhengig av hvilket alternativ du velger , den generelle syntaksen format for å skrive en søvn prosedyren starter ved å opprette prosedyren med utsagnet " CREATE PROCEDURE_sleep [( sleeptime i heltall) ] ER". begynnelsen del av erklæringen skaper prosedyren og informasjonen i firkanten parentes identifiserer sine parametere, som i dette tilfellet er navnet på prosedyren, IN identifikator som forteller Oracle prosedyren kan også brukes innen en funksjon og INTEGER som definerer datatype. Starte prosedyren med en enkel " BEGIN " statement og på følgende linje identifisere alternativet og dets parametre , slik som SYS.DBMS_BACKUP_RESTORE.SLEEP ( sleepTime_in_seconds = 5.01 ) før du avslutter prosedyren med END uttalelse:
CREATE PROCEDURE_sleep [( sleepTime_in_minutes i heltall) ] ISBEGINSYS.DBMS_BACKUP_RESTORE.SLEEP ( sleepTime_in_minutes = 15.01) ; END ;/
Hensyn
Når det gjelder å gi EXECUTE-rettigheter til ende brukere for user_lock.sleep kommandoen , forstår at ikke bare vil ende brukere har muligheten til å skrive en søvn prosedyre, men også alle låsing prosedyrer forbundet med denne kommandoen . I tillegg kan størrelsen og oppsettet på Oracle database hindre deg fra å gi EXECUTE-rettigheter til alle sluttbrukere . På grunn av dette , anbefaler Oracle innvilgelse lås privilegier etter behov eller rolle i selskapet .