General Information
Library Note
Morgan's Library Page Header
Which has the higher priority in your organization: Deploying a new database or securing the ones you already have?
Looking for a website, and resources, dedicated solely to securing Oracle databases? Check out DBSecWorx .
How
Oracle has four separate ways to induce a sleep into PL/SQL. They are:
The USER_LOCK package is not part of the default installation. Follow the link at page bottom to install before running the demo.
Arguments
set linesize 121
col package_name format a20
col argument_name format a17
col data_type format a14
col pls_type format a14
SELECT package_name, argument_name, data_type, data_length,
data_precision, pls_type
FROM all_arguments
WHERE object_name = 'SLEEP'
ORDER BY 1;
Precision
set serveroutput on
DECLARE
stime TIMESTAMP(9);
etime TIMESTAMP(9);
BEGIN
stime := SYSTIMESTAMP;
dbms_backup_restore.sleep (0.01);
etime := SYSTIMESTAMP;
dbms_output.put_line(etime-stime);
stime := SYSTIMESTAMP;
dbms_drs.sleep (0.01);
etime := SYSTIMESTAMP;
dbms_output.put_line(etime-stime);
stime := SYSTIMESTAMP;
dbms_lock.sleep (0.01);
etime := SYSTIMESTAMP;
dbms_output.put_line(etime-stime);
stime := SYSTIMESTAMP;
user_lock.sleep (1);
etime := SYSTIMESTAMP;
dbms_output.put_line(etime-stime);
END;
/
DECLARE
stime TIMESTAMP(9);
etime TIMESTAMP(9);
BEGIN
stime := SYSTIMESTAMP;
dbms_backup_restore.sleep (1);
etime := SYSTIMESTAMP;
dbms_output.put_line(etime-stime);
stime := SYSTIMESTAMP;
dbms_drs.sleep (1);
etime := SYSTIMESTAMP;
dbms_output.put_line(etime-stime);
stime := SYSTIMESTAMP;
dbms_lock.sleep (1);
etime := SYSTIMESTAMP;
dbms_output.put_line(etime-stime);
stime := SYSTIMESTAMP;
user_lock.sleep (100);
etime := SYSTIMESTAMP;
dbms_output.put_line(etime-stime);
END;
/