📄 create_user.sql
字号:
/* * create_user.sql * Chapter 12, Oracle10g PL/SQL Programming * by Ron Hardman, Michael McLaughlin and Scott Urman * * This script verifies and defines the PLSQL user. It should be run * as the SYSTEM user or a user that has the DBA privilege role and * EXECUTE with grant option on DBMS_PIPE. */-- Unremark for debugging script.-- SET ECHO ONSET SERVEROUTPUT ON SIZE 1000000DECLARE -- Define an exception. wrong_schema EXCEPTION; PRAGMA EXCEPTION_INIT(wrong_schema,-20001); -- Define a return variable. retval VARCHAR2(1 CHAR); /* || Define a cursor to identify whether the current user is either the || SYSTEM user or a user with the DBA role privilege. */ CURSOR privs IS SELECT DISTINCT null FROM user_role_privs WHERE username = 'SYSTEM' OR granted_role = 'DBA';BEGIN -- Open cursor and read through it. OPEN privs; LOOP -- Read a row. FETCH privs INTO retval; -- Evaluate if cursor failed. IF privs%NOTFOUND THEN -- Raise exception. RAISE wrong_schema; ELSE -- Evaluate whether PLSQL user exists and drop it. FOR i IN (SELECT null FROM dba_users WHERE username = 'PLSQL') LOOP EXECUTE IMMEDIATE 'DROP USER plsql CASCADE'; END LOOP; -- Create user and grant privileges. EXECUTE IMMEDIATE 'CREATE USER plsql IDENTIFIED BY plsql'; EXECUTE IMMEDIATE 'GRANT connect TO plsql'; EXECUTE IMMEDIATE 'GRANT resource TO plsql'; EXECUTE IMMEDIATE 'GRANT create library TO plsql'; EXECUTE IMMEDIATE 'GRANT execute ON dbms_pipe TO plsql'; EXECUTE IMMEDIATE 'GRANT execute ON dbms_alert TO plsql'; -- Grant Java permissions to file IO against a file. DBMS_JAVA.GRANT_PERMISSION('PLSQL' ,'SYS:java.io.FilePermission' ,'/tmp/file.txt' ,'read'); -- Print successful outcome. DBMS_OUTPUT.PUT_LINE(CHR(10)||'Created PLSQL user.'); END IF; -- Exit the loop. EXIT; END LOOP; -- Close cursor. CLOSE privs;EXCEPTION -- Handle a defined exception. WHEN wrong_schema THEN DBMS_OUTPUT.PUT_LINE('The script requires the SYSTEM user and ' || 'you are using the <'||user||'> schema or ' || 'the script requires a user with DBA role ' || 'privileges.'); -- Handle a generic exception. WHEN others THEN DBMS_OUTPUT.PUT_LINE(SQLERRM); RETURN;END;/-- Define SQL*Plus formatting.COL grantee FORMAT A8COL granted_role FORMAT A30COL grantor FORMAT A8COL privilege FORMAT A12COL owner FORMAT A4COL table_name FORMAT A30-- Query user granted roles.SELECT grantee, granted_roleFROM dba_role_privsWHERE grantee = 'PLSQL';-- Query resources.SELECT grantor, owner, table_name, grantee, privilegeFROM dba_tab_privsWHERE grantee = 'PLSQL';COL admin_option FORMAT A3COL privilege FORMAT A30COL username FORMAT A10-- Query user system privileges.SELECT grantee, privilege, admin_optionFROM dba_sys_privsWHERE grantee = 'PLSQL';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -