| Lesson 3 |
Types of System Privileges |
| Objective |
List the different types of system privileges. |
Types of System Privileges in Oracle AI Database 26ai
For just about every database object you can create, there is an associated CREATE privilege. If the object is a schema object
[1], that CREATE privilege lets a user create, alter, and drop such objects within their own schema. For most of these same object types, a corresponding CREATE ANY, ALTER ANY, and DROP ANY privilege also exists, letting a privileged user, a DBA in particular, manage objects they do not themselves own. For non-schema objects, ones not owned by any specific user, you typically find separate CREATE, ALTER, and DROP privileges instead, with no per-schema distinction to make.
Oracle defines a very large number of system privileges, giving a DBA fine-grained control over exactly what each user is allowed to do. Once you understand what each privilege actually controls, the real work becomes weighing the organization's needs against the individual employee's role when deciding which privileges to actually grant.
Oracle Autonomous AI Database
Which Privileges Should You Actually Grant?
The generally accepted answer is as few as possible, while still letting people do their jobs. For end users who only connect through an application, that usually means CREATE SESSION, whatever object privileges and roles the application itself requires, and nothing more. That lets them log in and use the application, which is all they actually need.
Developers typically need more, since they need to create and test objects of their own. A representative set of privileges for a development account looks like this:
CREATE SESSION
CREATE TABLE
CREATE DATABASE LINK
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE VIEW
CREATE SYNONYM
ALTER SESSION
These let a developer connect, then create the tables, views, procedures, sequences, triggers, and synonyms needed to test code or experiment, along with ALTER SESSION for adjusting session-level settings. This set is appropriate for development environments specifically; granting it in production deserves real scrutiny. The ANY privileges, and system-wide object privileges such as CREATE TABLESPACE, are rarely appropriate for anyone outside the DBA role itself; those remain tasks best left to database administrators.
Five Categories of System Privilege
Rather than memorizing privileges one at a time, it helps to group them by functional scope and impact. Oracle's system privileges fall into five broad categories:
| Category |
Function |
| Schema Object Management |
Privileges like CREATE TABLE, CREATE VIEW, CREATE SEQUENCE, CREATE PROCEDURE, CREATE SYNONYM, and CREATE TRIGGER, letting a user create, alter, and drop objects within their own schema. |
| System Object Management |
Privileges covering global or public objects rather than schema-owned ones: CREATE/DROP PUBLIC SYNONYM, CREATE/DROP PUBLIC DATABASE LINK, and tablespace management (CREATE/ALTER/DROP TABLESPACE). Also includes CREATE/ALTER/DROP ROLLBACK SEGMENT, still real and current privileges, though relevant mainly to systems still running in manual undo management mode rather than the now-standard automatic undo management. |
| The ANY Privileges |
Privileges like CREATE ANY TABLE, ALTER ANY TABLE, DROP ANY TABLE, and the parallel CREATE/ALTER/DROP ANY INDEX, letting a user act on objects owned by anyone, not just their own schema. |
| Database Administration |
High-level privileges affecting the database as a whole, such as ALTER DATABASE and ALTER SYSTEM. |
| Miscellaneous |
Privileges that don't fit neatly elsewhere, most notably UNLIMITED TABLESPACE, which grants unlimited space across every tablespace in the database at once. |
Object Management and System Object Management are distinguished by ownership: the first covers objects that live inside a specific user's schema, tables, views, sequences, procedures, synonyms, and triggers the user creates for themselves; the second covers objects with no single schema owner at all, public synonyms, public database links, tablespaces, and rollback segments. Neither category by itself grants access to objects owned by someone else; that is specifically what the ANY category exists for.
Object Privileges Convey Broader Rights Than the Corresponding ANY Privileges
It's worth being precise about a distinction that's easy to blur: the object-management privileges you grant so a user can create their own objects actually convey broader rights than the corresponding ANY privilege does, just scoped to a single schema instead of the whole database. Grant a user CREATE TABLE, and they can create, modify, and drop tables in their own schema freely. Grant CREATE ANY TABLE instead, and the user can create a table in any schema in the database, but that privilege alone does not let them modify or drop someone else's existing table; ALTER ANY TABLE and DROP ANY TABLE are separate, additional grants required for that.
A Few Practical Notes
A handful of points worth keeping in mind as you decide what to grant:
- These privilege names and their purposes have remained stable across many Oracle releases; what has evolved over time is the broader security and privilege management framework surrounding them, including unified auditing and schema-level privilege grants, covered elsewhere in this course.
- Oracle strongly recommends grouping privileges into roles and assigning roles to users, rather than granting individual privileges directly to every account.
- If your environment uses Oracle Database Vault or Data Guard, some of these privileges may be further restricted, or require explicit authorization under specific conditions, beyond the standard GRANT model covered here.
System Privileges - Quiz
Before moving on to the next lesson, click the Quiz link below to test your understanding of system privileges.
System Privileges - Quiz
[1]schema object: In the context of an Oracle DBA, a schema object is any defined object within a schema that's used to store or reference data. These objects can be tables, indexes, views, sequences, stored procedures, or any other object a user can create within their schema. Schema objects are the building blocks of an Oracle database, and DBAs are responsible for managing and maintaining them to ensure data integrity and optimal database performance.
