{"id":3789,"date":"2025-06-08T02:10:00","date_gmt":"2025-06-08T02:10:00","guid":{"rendered":"https:\/\/w3buddy.com\/?post_type=cposts&#038;p=3789"},"modified":"2025-11-01T10:22:17","modified_gmt":"2025-11-01T10:22:17","slug":"oracle-user-management","status":"publish","type":"cposts","link":"https:\/\/w3buddy.com\/blog\/notes\/oracle-dba-d2d-tasks\/oracle-user-management\/","title":{"rendered":"Oracle User Management"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">An <strong>Oracle user<\/strong> is an account that can connect to the database and perform operations. Managing users ensures proper access control, security, and organization of database activities.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Creating a New User<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code><code>CREATE USER W3BUDDY IDENTIFIED BY Welcome#123\nPROFILE DEFAULT\nDEFAULT TABLESPACE USERS\nTEMPORARY TABLESPACE TEMP;<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Grant Minimum Privilege to Connect<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>GRANT CREATE SESSION TO W3BUDDY;<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udca1 <em><strong>Tip:<\/strong> You may also grant roles like <code>CONNECT<\/code>, <code>RESOURCE<\/code>, or custom roles if the user needs access to create tables, procedures, etc.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Check User Status<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>SET LINESIZE 180\nSET PAGESIZE 100\n\nCOLUMN USERNAME FORMAT A20\nCOLUMN ACCOUNT_STATUS FORMAT A25\nCOLUMN PROFILE FORMAT A20\nCOLUMN CREATED FORMAT A20\nCOLUMN LOCK_DATE FORMAT A20\nCOLUMN EXPIRY_DATE FORMAT A20\nCOLUMN DEFAULT_TABLESPACE FORMAT A20\nCOLUMN TEMPORARY_TABLESPACE FORMAT A20\n\nSELECT \n    USERNAME,\n    ACCOUNT_STATUS,\n    PROFILE,\n    TO_CHAR(CREATED, 'DD-MON-YYYY HH24:MI:SS') AS CREATED,\n    TO_CHAR(LOCK_DATE, 'DD-MON-YYYY HH24:MI:SS') AS LOCK_DATE,\n    TO_CHAR(EXPIRY_DATE, 'DD-MON-YYYY HH24:MI:SS') AS EXPIRY_DATE,\n    DEFAULT_TABLESPACE,\n    TEMPORARY_TABLESPACE\nFROM \n    DBA_USERS\nWHERE \n    USERNAME = UPPER('&amp;username');<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">2. Managing User Passwords<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Change Password<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>ALTER USER W3BUDDY IDENTIFIED BY NewPass12345#;<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Expire Password (forces password change on next login)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER USER W3BUDDY PASSWORD EXPIRE;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udca1<em> <strong>Tip:<\/strong> Expiring the password is useful for enforcing first-time password changes.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Locking and Unlocking User Accounts<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Lock User<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>ALTER USER W3BUDDY ACCOUNT LOCK;<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Unlock User<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>ALTER USER W3BUDDY ACCOUNT UNLOCK;<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udca1 <em><strong>Tip:<\/strong> Always lock unused accounts or those under investigation.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Managing Default Tablespace<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">View Default Tablespace<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>SET LINESIZE 150\nCOLUMN DEFAULT_TABLESPACE FORMAT A20\n\nSELECT USERNAME, DEFAULT_TABLESPACE \nFROM DBA_USERS \nWHERE USERNAME = 'W3BUDDY';<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Change Default Tablespace<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>ALTER USER W3BUDDY DEFAULT TABLESPACE DATA_TBS;<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udca1 <em><strong>Tip:<\/strong> Ensure the new tablespace has sufficient quota before assigning.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Managing Temporary Tablespace<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">View Temporary Tablespace<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>SET LINESIZE 150\nCOLUMN TEMPORARY_TABLESPACE FORMAT A20\n\nSELECT USERNAME, TEMPORARY_TABLESPACE \nFROM DBA_USERS \nWHERE USERNAME = 'W3BUDDY';<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Change Temporary Tablespace<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>ALTER USER W3BUDDY TEMPORARY TABLESPACE TEMP2;<\/code><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">6. Profile Management<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Profiles define resource limits and password policies.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">View Profile Settings<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>SET LINESIZE 200\nSET PAGESIZE 100\nCOLUMN RESOURCE_NAME FORMAT A30\nCOLUMN LIMIT FORMAT A20\n\nSELECT PROFILE, RESOURCE_NAME, RESOURCE_TYPE, LIMIT \nFROM DBA_PROFILES \nWHERE PROFILE = 'DEFAULT';<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udca1 <em><strong>Tip:<\/strong> Regularly review profile limits for compliance with security standards.<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Create a Custom Profile<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>CREATE PROFILE TEST_PROFILE LIMIT\n  COMPOSITE_LIMIT UNLIMITED\n  SESSIONS_PER_USER UNLIMITED\n  CPU_PER_SESSION UNLIMITED\n  CPU_PER_CALL UNLIMITED\n  LOGICAL_READS_PER_SESSION UNLIMITED\n  LOGICAL_READS_PER_CALL UNLIMITED\n  IDLE_TIME 90\n  CONNECT_TIME UNLIMITED\n  PRIVATE_SGA UNLIMITED\n  FAILED_LOGIN_ATTEMPTS 10\n  PASSWORD_LIFE_TIME 180\n  PASSWORD_REUSE_TIME UNLIMITED\n  PASSWORD_REUSE_MAX UNLIMITED\n  PASSWORD_VERIFY_FUNCTION NULL\n  PASSWORD_LOCK_TIME UNLIMITED\n  PASSWORD_GRACE_TIME UNLIMITED;<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Assign Profile to a User<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>ALTER USER W3BUDDY PROFILE TEST_PROFILE;<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udca1 <em><strong>Tip:<\/strong> Assign stricter profiles to production users and more relaxed ones to developers\/testers.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">7. System Privileges<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">System privileges control operations across the database.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">List All System Privileges<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>SELECT DISTINCT PRIVILEGE FROM DBA_SYS_PRIVS;\n<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Grant System Privileges<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>GRANT CREATE ANY TABLE, ALTER ANY TABLE TO W3BUDDY;\n<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Revoke System Privileges<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>REVOKE CREATE ANY TABLE FROM W3BUDDY;\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udca1 <em><strong>Tip:<\/strong> Avoid granting powerful system privileges directly to users. Use roles when possible.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8. Object Privileges<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Object privileges are specific to tables, views, procedures, etc.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">List Object Privileges<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>SELECT DISTINCT PRIVILEGE FROM DBA_TAB_PRIVS;\n<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Grant Object Privileges<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>GRANT INSERT, UPDATE, DELETE ON APPUSER.TEST2 TO W3BUDDY;\nGRANT EXECUTE ON SIEBEL.DAILYPROC TO W3BUDDY;<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Revoke Object Privileges<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>REVOKE UPDATE ON APPUSER.TEST2 FROM W3BUDDY;\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udca1 <em><strong>Tip:<\/strong> Always grant the least privilege necessary for the task.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">9. Role Management<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Roles group privileges for easier management and auditing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Create a Role<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>CREATE ROLE TEST_ROLE;\n<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Grant Privileges to a Role<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>GRANT CREATE SESSION TO TEST_ROLE;\nGRANT SELECT ANY TABLE TO TEST_ROLE;<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Assign Role to a User<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>GRANT TEST_ROLE TO W3BUDDY;\n<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">View Roles Assigned to Users<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>SELECT GRANTEE, GRANTED_ROLE \nFROM DBA_ROLE_PRIVS \nWHERE GRANTED_ROLE = 'TEST_ROLE';<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Drop a Role<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>DROP ROLE TEST_ROLE;<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udca1 <em><strong>Tip:<\/strong> Use roles for environment-based access (e.g., <code>DEV_ROLE<\/code>, <code>PROD_ROLE<\/code>) for scalability.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">10. Dropping a User<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Drop User and All Objects<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>DROP USER W3BUDDY CASCADE;\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udca1 <em><strong>Tip:<\/strong> Be cautious with <code>CASCADE<\/code> \u2014 it removes all schema objects owned by the user.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">11. Useful Queries for Auditing and Monitoring<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">List All Users and Their Status<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>SET LINESIZE 150\nCOLUMN ACCOUNT_STATUS FORMAT A20\nCOLUMN DEFAULT_TABLESPACE FORMAT A20\n\nSELECT USERNAME, ACCOUNT_STATUS, PROFILE, DEFAULT_TABLESPACE \nFROM DBA_USERS;<\/code><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Check User\u2019s Privileges and Roles<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code><code>-- System Privileges\nSELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'W3BUDDY';\n\n-- Object Privileges\nSELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'W3BUDDY';\n\n-- Roles\nSELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'W3BUDDY';<\/code><\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Best Practices for Oracle DBAs<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>roles<\/strong> instead of granting privileges directly to users.<\/li>\n\n\n\n<li>Assign <strong>custom profiles<\/strong> with appropriate password policies.<\/li>\n\n\n\n<li>Regularly <strong>audit user access<\/strong> and <strong>revoke unused privileges<\/strong>.<\/li>\n\n\n\n<li><strong>Lock or drop inactive accounts<\/strong> to reduce attack surface.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This guide provides a complete reference for Oracle user management, covering:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>User creation, password changes, tablespaces<\/li>\n\n\n\n<li>Profiles and resource control<\/li>\n\n\n\n<li>Privileges (system and object)<\/li>\n\n\n\n<li>Role-based access control<\/li>\n\n\n\n<li>Account and access audits<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">With these scripts and tips, you can manage Oracle users efficiently and securely in any environment.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>An Oracle user is an account that can connect to the database and perform operations. Managing users ensures proper access control, security, and organization of database activities. 1. Creating a New User Grant Minimum Privilege to Connect \ud83d\udca1 Tip: You may also grant roles like CONNECT, RESOURCE, or custom roles if the user needs access [&hellip;]<\/p>\n","protected":false},"template":"","meta":{"googlesitekit_rrm_CAowu461DA:productID":""},"categories":[952,984],"class_list":["post-3789","cposts","type-cposts","status-publish","hentry","category-notes","category-oracle-dba-d2d-tasks"],"_links":{"self":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/cposts\/3789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/cposts"}],"about":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/types\/cposts"}],"wp:attachment":[{"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/media?parent=3789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/w3buddy.com\/blog\/wp-json\/wp\/v2\/categories?post=3789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}