Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / User Privilege
 

Create User Utility

/*  * CreateUser.sql  * Chapter 3, Oracle10g PL/SQL Programming  * by Ron Hardman, Mike McLaughlin, and Scott Urman  *  * This script creates the plsql user for chapter 3  *   examples.  You must run this script as SYS or  *   SYSTEM as SYSDBA.  The script can be rerun.  *  * The plsql user is created using the USERS and TEMP tablespace.  *   If these tablespaces do not exist in your environment, change  *   the script to use an appropriate tablespace.  *  * Modify the conn_string value below, providing your Net Service  *   Name if not using your default.  */ DEF conn_string = plsql/oracle DEF username = plsql DEF default_ts = USERS DEF temp_ts = TEMP SET FEEDBACK OFF SERVEROUTPUT ON VERIFY OFF TERMOUT OFF SPOOL CreateUser.log DECLARE    v_count       INTEGER        := 0;    v_statement   VARCHAR2 (200); BEGIN    SELECT COUNT (1)      INTO v_count      FROM dba_users     WHERE username = UPPER ('&username');    IF v_count != 0    THEN       EXECUTE IMMEDIATE ('DROP USER &username CASCADE');    END IF;    v_statement :=          'CREATE USER &username IDENTIFIED BY oracle'       || ' DEFAULT TABLESPACE &default_ts'       || ' TEMPORARY TABLESPACE &temp_ts'       || ' QUOTA UNLIMITED ON &default_ts'       || ' ACCOUNT UNLOCK';    EXECUTE IMMEDIATE (v_statement);    -- Grant permissions    EXECUTE IMMEDIATE ('GRANT create session TO &username');    EXECUTE IMMEDIATE ('GRANT connect TO &username');    EXECUTE IMMEDIATE ('GRANT create procedure TO &username');    EXECUTE IMMEDIATE ('GRANT execute ON utl_ref TO &username');    EXECUTE IMMEDIATE ('GRANT create trigger TO &username');    EXECUTE IMMEDIATE ('GRANT resource TO &username');    DBMS_OUTPUT.put_line ('     ');    DBMS_OUTPUT.put_line ('User &username created successfully');    DBMS_OUTPUT.put_line ('     '); EXCEPTION    WHEN OTHERS    THEN       DBMS_OUTPUT.put_line (SQLERRM);       DBMS_OUTPUT.put_line ('     '); END; / SET FEEDBACK ON TERMOUT ON PROMPT PROMPT ******** Connecting to user &username!! ******** PROMPT CONN &conn_string CREATE OR REPLACE PACKAGE clean_schema IS    PROCEDURE trigs;    PROCEDURE tables;    PROCEDURE procs; END; / CREATE OR REPLACE PACKAGE BODY clean_schema AS PROCEDURE trigs IS    v_string VARCHAR2(50);    v_tab_error EXCEPTION;    PRAGMA EXCEPTION_INIT(v_tab_error, -4080); BEGIN    BEGIN    v_string := 'DROP TRIGGER author_trig';    EXECUTE IMMEDIATE (v_string);    EXCEPTION    WHEN v_tab_error       THEN       NULL;    END; END trigs; PROCEDURE tables IS    v_string VARCHAR2(50);    v_tab_error EXCEPTION;    PRAGMA EXCEPTION_INIT(v_tab_error, -942); BEGIN    BEGIN    v_string := 'DROP TABLE precision';    EXECUTE IMMEDIATE (v_string);    EXCEPTION    WHEN v_tab_error       THEN       NULL;    END;    BEGIN    v_string := 'DROP TABLE inventory';    EXECUTE IMMEDIATE (v_string);    EXCEPTION    WHEN v_tab_error       THEN       NULL;    END;    BEGIN    v_string := 'DROP TABLE books';    EXECUTE IMMEDIATE (v_string);    EXCEPTION    WHEN v_tab_error       THEN       NULL;    END;    BEGIN    v_string := 'DROP TABLE authors';    EXECUTE IMMEDIATE (v_string);    EXCEPTION    WHEN v_tab_error       THEN       NULL;    END; END TABLES; PROCEDURE procs IS    v_string VARCHAR2(50);    v_proc_error EXCEPTION;    PRAGMA EXCEPTION_INIT(v_proc_error, -4043); BEGIN    BEGIN    v_string := 'DROP PROCEDURE compile_error';    EXECUTE IMMEDIATE (v_string);    EXCEPTION    WHEN v_proc_error       THEN       NULL;    END;    BEGIN    v_string := 'DROP PROCEDURE compile_warning';    EXECUTE IMMEDIATE (v_string);    EXCEPTION    WHEN v_proc_error       THEN       NULL;    END;    BEGIN    v_string := 'DROP PROCEDURE named_block';    EXECUTE IMMEDIATE (v_string);    EXCEPTION    WHEN v_proc_error       THEN       NULL;    END;    BEGIN    v_string := 'DROP PROCEDURE book_ins';    EXECUTE IMMEDIATE (v_string);    EXCEPTION    WHEN v_proc_error       THEN       NULL;    END;    BEGIN    v_string := 'DROP PROCEDURE authors_sel';    EXECUTE IMMEDIATE (v_string);    EXCEPTION    WHEN v_proc_error       THEN       NULL;    END;    BEGIN    v_string := 'DROP PROCEDURE bind_test';    EXECUTE IMMEDIATE (v_string);    EXCEPTION    WHEN v_proc_error       THEN       NULL;    END;    BEGIN    v_string := 'DROP PROCEDURE author_book_count';    EXECUTE IMMEDIATE (v_string);    EXCEPTION    WHEN v_proc_error       THEN       NULL;    END; END procs; END; / spool off