Dung (Donny) Nguyen

Senior Software Engineer

Oracle Database User Management

1. Creating Users

Basic user creation

CREATE USER john_doe IDENTIFIED BY "StrongPassword123";

Create user with specific tablespace

CREATE USER jane_doe 
IDENTIFIED BY "StrongPassword123"
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 100M ON users;

2. Granting Basic Privileges

Minimum privileges for connection

GRANT CREATE SESSION TO john_doe;
GRANT CONNECT TO john_doe;

Grant resource role for basic schema operations

GRANT RESOURCE TO john_doe;

Grant unlimited tablespace usage

GRANT UNLIMITED TABLESPACE TO john_doe;

3. Common Role Assignments

Create and grant custom role

CREATE ROLE app_developer;
GRANT CREATE TABLE, CREATE VIEW, CREATE PROCEDURE TO app_developer;
GRANT app_developer TO john_doe;

Grant system privileges

GRANT CREATE ANY TABLE TO jane_doe;
GRANT SELECT ANY TABLE TO jane_doe;

4. Object-Level Privileges

Grant specific table privileges

GRANT SELECT, INSERT, UPDATE ON schema_name.table_name TO john_doe;

Grant with grant option (user can grant these privileges to others)

GRANT SELECT ON schema_name.table_name TO jane_doe WITH GRANT OPTION;

5. Modifying Users

Change password

ALTER USER john_doe IDENTIFIED BY "NewPassword123";

Lock account

ALTER USER john_doe ACCOUNT LOCK;

Unlock account

ALTER USER john_doe ACCOUNT UNLOCK;

Modify quotas

ALTER USER john_doe QUOTA UNLIMITED ON users;
ALTER USER john_doe QUOTA 200M ON users;

6. Revoking Privileges

Revoke specific privileges

REVOKE CREATE TABLE FROM john_doe;
REVOKE SELECT ON schema_name.table_name FROM john_doe;

Revoke role

REVOKE app_developer FROM john_doe;

7. Removing Users

Drop user

DROP USER john_doe;

Drop user and all objects

DROP USER john_doe CASCADE;

8. User Information Queries

List all users

SELECT username, account_status, default_tablespace, created
FROM dba_users
ORDER BY created DESC;

Check user privileges

SELECT privilege 
FROM dba_sys_privs 
WHERE grantee = 'JOHN_DOE';

Check role memberships

SELECT granted_role
FROM dba_role_privs
WHERE grantee = 'JOHN_DOE';

Check resource usage

SELECT username, default_tablespace, bytes/1024/1024 as "Space Used (MB)"
FROM dba_ts_quotas
WHERE username = 'JOHN_DOE';

9. Password Management

Set password life time

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90;

Set password complexity

ALTER PROFILE DEFAULT LIMIT 
    FAILED_LOGIN_ATTEMPTS 3
    PASSWORD_LIFE_TIME 90
    PASSWORD_REUSE_TIME 365
    PASSWORD_REUSE_MAX 5
    PASSWORD_VERIFY_FUNCTION ora12c_verify_function;

10. Best Practices for Security

Create user with specific limitations

CREATE USER secure_user
IDENTIFIED BY "StrongPassword123"
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA 50M ON users
PASSWORD EXPIRE
ACCOUNT LOCK;

Grant minimum necessary privileges

GRANT CREATE SESSION TO secure_user;
GRANT CONNECT TO secure_user;
GRANT SELECT ON specific_schema.specific_table TO secure_user;

Enable auditing for sensitive operations

AUDIT SELECT TABLE, UPDATE TABLE BY secure_user BY ACCESS;