Standard Edition
Oracle Standard Edition 2 Monitoring: What the Packs Take Away, What You Can Still Query, and How to Monitor SE2 Fully
2 November 2026
Standard Edition 2 is Oracle at a fraction of the price, with one condition that bites at monitoring time: the Diagnostics Pack and the Tuning Pack cannot be licensed for it. ASH, AWR, ADDM and Real-Time SQL Monitoring are not an upgrade you forgot to buy. They are not for sale on SE2. This page lists what that takes away, what every SE2 DBA can still query for free, and how to get full monitoring anyway.
What Standard Edition 2 includes, and what it does not
The rules are in Oracle's own licensing manual, and the table below is taken from it. Oracle's licensing data sheet adds the hardware rule: Standard Edition 2 "may only be licensed on servers that have a maximum capacity of 2 sockets", and "each Oracle Database Standard Edition 2 database may use a maximum of 16 CPU threads at any time". Oracle RAC is not available on SE2 since 19c; Standard Edition High Availability, a cold failover on Grid Infrastructure, is included instead.
| Feature | SE2 | EE | What it means for monitoring |
|---|---|---|---|
| Oracle Diagnostics Pack (AWR, ASH, ADDM) | No | Extra cost | No session history and no workload reports from Oracle. V$ACTIVE_SESSION_HISTORY and the DBA_HIST views belong to the pack. |
| Oracle Tuning Pack (SQL Tuning Advisor, Real-Time SQL Monitoring) | No | Extra cost | No V$SQL_MONITOR, no SQL profiles, no automatic plan fixes with profiles. |
| SQL Plan Management | Yes, restricted | Yes | One baseline per statement, no plan evolution. Enough to pin a plan that flipped. |
| Oracle Partitioning | No | Extra cost | No interval partitions, so old rows are deleted or archived, not dropped. |
| Oracle Data Guard (redo apply) | No | Yes | A standby on SE2 is a scripted archive-log shipping, so its lag needs its own watch. |
| Oracle RAC | No (19c) | Extra cost | One instance per database. Standard Edition High Availability is included. |
| Parallel query and DML | No | Yes | A big report runs on one CPU thread, however many the server has. |
| Online index rebuild, online table redefinition | No | Yes | Rebuilds and moves lock the table. Plan them. |
| Flashback Database, Flashback Table | No | Yes | A bad change is undone from a backup or by hand. |
| Advanced Compression, Basic Table Compression | No | Yes / extra cost | Space grows at the uncompressed rate. The forecast matters more. |
| Database Resource Manager | No | Yes | No consumer groups. A runaway session is found and killed, not throttled. |
| Block change tracking | No | Yes | Incremental backups read the whole database. Watch their duration. |
| Instance Caging | Yes | Yes | CPU_COUNT caps the instance. |
The rows read "available" and "unavailable" in the manual; "extra cost" is its own note on Enterprise Edition. Each SE2 "No" is a monitoring task that falls on you: there is no pack to show the slow hour, no Resource Manager to contain a bad query, no partition to drop.
The views an SE2 database must not query
The views still exist in an SE2 database, which is the trap. The licensing manual says that V$ACTIVE_SESSION_HISTORY and its base table X$ASH are part of the Diagnostics Pack, and so is every DBA_HIST_ view except six: DBA_HIST_SNAPSHOT, DBA_HIST_DATABASE_INSTANCE, DBA_HIST_SNAP_ERROR, DBA_HIST_SEG_STAT, DBA_HIST_SEG_STAT_OBJ and DBA_HIST_UNDOSTAT. DBMS_WORKLOAD_REPOSITORY, DBMS_ADDM and the awrrpt.sql, ashrpt.sql and addmrpt.sql reports are in the pack; DBMS_SQLTUNE, DBMS_SQL_MONITOR, V$SQL_MONITOR and V$SQL_PLAN_MONITOR are in the Tuning Pack. On SE2 none of them can be licensed, so a script that reads them is a licensing finding, not a shortcut.
Two settings keep that from happening by accident. The parameter turns the pack functionality off in the server, and the usage view shows whether anything has touched a pack feature:
ALTER SYSTEM SET control_management_pack_access = 'NONE'
SCOPE = BOTH;
SELECT name, detected_usages, currently_used,
TO_CHAR(last_usage_date, 'YYYY-MM-DD') AS last_used
FROM dba_feature_usage_statistics
WHERE name LIKE '%Pack%'
OR name LIKE 'Automatic Workload%'
OR name LIKE 'SQL Monitoring%'
OR name LIKE 'SQL Tuning%'
OR name = 'ADDM'
ORDER BY name;
A row with DETECTED_USAGES above zero on an SE2 database is a conversation with your license team. The same view is what Scops reads for its License page, which lists the packs and options each database has used and any new use in the last 90 days.
What you can still see, with views that are free
Nothing below needs a pack. The limit is not the data; it is that these views show now, or a running total, and the slow hour was two hours ago.
Right now: who is active and what they wait on
SELECT s.sid, s.serial#, s.username, s.sql_id,
s.sql_plan_hash_value AS plan_hash, s.event,
ROUND(s.wait_time_micro / 1e6) AS wait_s,
s.blocking_session
FROM v$session s
WHERE s.status = 'ACTIVE'
AND s.type = 'USER'
AND s.wait_class <> 'Idle'
ORDER BY s.wait_time_micro DESC;
Since startup: the statements with the most time
SELECT sql_id, plan_hash_value, executions,
ROUND(elapsed_time / 1e6) AS elapsed_s,
ROUND(elapsed_time / NULLIF(executions, 0) / 1e3) AS ms_exec,
ROUND(cpu_time / 1e6) AS cpu_s,
buffer_gets, disk_reads,
SUBSTR(sql_text, 1, 60) AS sql_text
FROM v$sqlstats
ORDER BY elapsed_time DESC
FETCH FIRST 15 ROWS ONLY;
V$SQLSTATS is cheaper to read than V$SQL and survives the cursor. Its numbers are totals since the statement entered the shared pool, so a statement that ran badly this morning hides behind one that has run all month. The answer is two readings and a difference, which is what a monitoring tool does every few minutes.
The last hour: system metrics with one-minute history
SELECT TO_CHAR(end_time, 'HH24:MI') AS minute,
metric_name, ROUND(value, 1) AS value
FROM v$sysmetric_history
WHERE group_id = 2
AND metric_name IN ('Average Active Sessions',
'Database Time Per Sec',
'Host CPU Utilization (%)',
'User Commits Per Sec',
'Physical Reads Per Sec')
ORDER BY end_time DESC, metric_name;
V$SYSMETRIC_HISTORY keeps about an hour of one-minute values. It tells you that the database was busy at 14:10, not who made it busy.
A session sampler you can build
ASH is a job that copies the active sessions into a table every second. Without the pack, you can do the same every ten seconds with a scheduler job, in a schema of your own:
CREATE TABLE mon.session_samples (
sample_time TIMESTAMP,
sid NUMBER,
serial# NUMBER,
username VARCHAR2(128),
sql_id VARCHAR2(13),
plan_hash NUMBER,
event VARCHAR2(64),
wait_class VARCHAR2(64),
blocking_sid NUMBER,
module VARCHAR2(64));
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'MON.SAMPLE_SESSIONS',
job_type => 'PLSQL_BLOCK',
job_action => 'INSERT INTO mon.session_samples
SELECT SYSTIMESTAMP, sid, serial#, username, sql_id,
sql_plan_hash_value, event, wait_class,
blocking_session, module
FROM v$session
WHERE status = ''ACTIVE'' AND type = ''USER''
AND wait_class <> ''Idle'';
COMMIT;',
repeat_interval => 'FREQ=SECONDLY; INTERVAL=10',
enabled => TRUE);
END;
/
A week later, the slow hour has an answer:
SELECT sql_id, event, COUNT(*) AS samples,
ROUND(COUNT(*) * 10 / 60) AS approx_minutes
FROM mon.session_samples
WHERE sample_time >= TIMESTAMP '2026-11-02 14:00:00'
AND sample_time < TIMESTAMP '2026-11-02 15:00:00'
GROUP BY sql_id, event
ORDER BY samples DESC
FETCH FIRST 10 ROWS ONLY;
It works, and it is what a monitoring tool does better: the sampler runs inside the database it watches, so it stops when the database hangs, its table grows without a partition to drop, and each database needs its own copy, its own purge job and its own reports. Statspack, still shipped in $ORACLE_HOME/rdbms/admin, is the older answer to the same problem: hourly snapshots of the V$ totals with top SQL by difference, on any edition, with no sessions in it.
What the usual tools give SE2
Oracle Enterprise Manager monitors an SE2 database with its base features, which are free with any Oracle license. The limit is in Enterprise Manager's licensing guide: base alerting "excludes notifications which requires one or more licensed Packs", and the Diagnostics Pack holds not only Performance Hub, ASH Analytics and AWR but also notifications, metric and alert history, blackouts, monitoring templates and adaptive thresholds. The same guide says the packs "can be purchased only with Enterprise Edition". On SE2, Enterprise Manager shows a threshold being crossed in the console and cannot mail anyone about it. Scops vs Oracle Enterprise Manager has the detail.
Tools that collect from outside can serve SE2 only if they read no pack view, and most of their documentation does not say. The Zabbix Oracle template states that it "queries the V$ACTIVE_SESSION_HISTORY dynamic performance view which is part of the Oracle Diagnostics Pack", so on SE2 that item has to go. Scops states in its docs that monitoring reads no pack view. The Oracle monitoring tools compared lists what each one states.
How Scops monitors Standard Edition 2 fully
Scops was built on the assumption that the packs are not there. It connects to each database through the listener with one account that needs CREATE SESSION and SELECT_CATALOG_ROLE, installs nothing on the server and creates nothing in the database. Then it collects what the packs would have given you, from the outside:
- Session history: the active sessions of every database, read every 5 seconds and kept in the Scops repository. Who was active at 14:10, on which SQL, waiting on what, blocked by whom.
- SQL statistics: every 10 minutes, as differences per statement and per plan, with every plan change and every new statement. The old plan and the new one, next to each other, days later.
- Metrics: each one against its own normal range, so a busy hour is compared with the same hour last week.
- Radar Engine: 75+ detectors that read this data and report a blocking pile-up, a tablespace with a date, a sequence running out or a plan that flipped, before the error.
- Scops AI: 40+ tools over the same repository. "Why was ORDERS slow at 14:10?" is answered from the samples, with the numbers, on an SE2 database like on any other.
A license switch guards the one feature that uses Oracle's packs, so an SE2 database can never touch a pack by accident. Everything in monitoring, alerts, reports, Radar Engine and Scops AI works the same on SE2 and Enterprise Edition, and the Community edition is free for 2 databases.
Questions
Can I use AWR or ASH on Oracle Standard Edition 2?
No. The Diagnostics Pack cannot be licensed for Standard Edition 2, and Oracle's licensing manual lists V$ACTIVE_SESSION_HISTORY and the DBA_HIST views as part of that pack. Set CONTROL_MANAGEMENT_PACK_ACCESS to NONE so nothing uses them by accident.
Is Statspack still available on 19c and later?
Yes. The scripts ship in $ORACLE_HOME/rdbms/admin on every edition. Statspack gives snapshots of cumulative statistics and top SQL by difference; it has no session samples, so it cannot say who was active at a given minute.
Does Standard Edition 2 have SQL plan baselines?
Yes, in a restricted form: one baseline per statement and no plan evolution, with no pack needed. It is enough to pin the plan that worked.
What does Scops need on an SE2 database?
One Oracle account with CREATE SESSION and SELECT_CATALOG_ROLE, reached through the listener. No agent, no objects, no pack. Monitoring works the same as on Enterprise Edition.
Related
- Session history without the Diagnostics Pack
- What the Oracle Diagnostics Pack costs
- Standard Edition 2 limits: sockets, threads, features
- Oracle Session History Without the Diagnostics Pack
- SQL plan changed: how to get the old plan back
- Scops vs Oracle Enterprise Manager
- Oracle monitoring without agents
- Is AWR free? Is ASH licensed?
Sources
- Oracle: Database Licensing Information User Manual, 19c (Permitted Features by Offering; Oracle Management Packs and Their Permitted Features)
- Oracle: Enterprise Manager Base Functionality, Database and Engineered Systems Management (Enterprise Manager Licensing Information, 24ai)
- Oracle: Database Licensing (data sheet: sockets and CPU threads for Standard Edition 2)
- Oracle: Using Statspack
- Zabbix: Oracle by Zabbix agent 2
- Scops docs: Supported databases, License