ORA-12514: The Database Is Up. The Listener Just Doesn't Know It.
Lab Restarting the listener, the usual first reaction, caused a minute of ORA-12514 for every service. ALTER SYSTEM REGISTER closed it at once.
Practical, vendor-neutral Oracle engineering — 35 guides, 33 with the lab numbers up front. Every claim is reproducible on Oracle Database Free.
Lab Restarting the listener, the usual first reaction, caused a minute of ORA-12514 for every service. ALTER SYSTEM REGISTER closed it at once.
Lab 10x the TEMP bought 10x the runtime and the same error. Restoring one join predicate made the report need none.
Lab The same 100,000-row update spent 11.9 of its 14.1 seconds waiting for a redo log. Bigger logs: 1.9 seconds, zero waits.
Lab The first bind value decided the plan for everyone. The common value inherited a nested-loops plan at 17 times the work, five runs in a row, and adaptive cursor sharing never stepped in.
Lab Row counts matched 10,000 to 10,000, and the first new order still failed: the target sequence was handing out 9,001 while the table already went up to 10,000.
Lab Deleting 99% of the rows didn't change the full scan's cost at all. SHRINK SPACE cut it 95-fold.
Lab With default settings, a packet capture shows the SQL and the secret in plain text. With encryption REQUIRED on the server, it shows neither.
Lab Every migration 'succeeded' with 10 rows and 0 errors. Only the Unicode target kept every name intact.
Lab A too-small recovery area locked every non-SYSDBA user out with ORA-00257. Backing up and deleting the archived logs through RMAN brought writes back.
Lab Same query, same DML churn: on a tiny unguaranteed undo tablespace it died after 1 row; with RETENTION GUARANTEE it read all 20,000.
Lab The same query run 1,000 times: literals made 1,000 cursors and ~38 MB of shared pool; one bind variable made 1 cursor and ~39 KB.
Lab The same index makes a query for a rare value more than 1,000× cheaper, and makes a query for a common value worse.
Lab Privilege Analysis showed the account used 3 of the 12 privileges it was granted, and none of the ANY privileges.
Lab One ORDERS table, three readers, three different answers, enforced inside the database, not in the app.
Lab Counted, not assumed: the export and re-import brought back exactly the same 5,000 + 20,000 rows.
Lab Both queries return the same 50,000 rows. Wrapping the partition key in TO_CHAR made Oracle read every partition instead of one.
Lab The clerk saw ****-****-****-0001, but the real card prefix was still in the datafile 161 times. Redaction masks the query, not the disk.
Lab Three disasters, each undone without restoring a backup.
Lab The same canary rows, read straight off disk: 133 hits in the ordinary datafile, none in the TDE-encrypted one.
Lab A routine stats change flipped a good index plan to a full scan. An accepted SQL plan baseline held the good plan.
Lab Without a column group the optimizer expected 200 rows, got 10,000, and chose a nested loop. With one on (make, model) it estimated 10,000 and switched to a hash join.
Lab The optimizer expected 500K rows and got 500. Fixing the estimate turned a full scan into an index plan.
Lab 3 events triggered, 3 captured: after a flush, UNIFIED_AUDIT_TRAIL held the failed login, the new user and the read of the sensitive table.
Lab A deliberately weak database, scored against the checklist, then hardened until every check flipped from FAIL to PASS.
Lab The same chatty workload went from 868 ms to 12,101 ms as injected latency rose from 0 to 10 ms. The batched version took 274 ms even at 10 ms.
Lab One throwaway database, broken three ways: a deleted datafile, a corrupted block, and a committed bad DELETE. RMAN brought the data back every time.
Lab Asked for the rows most similar to 'cat', VECTOR_DISTANCE put 'kitten' closest and 'airplane' farthest, on Oracle Database Free with no OCI account.
Lab Only one of the transcripts is actually done: opatch, version_full and DBA_REGISTRY_SQLPATCH all agree on 19.27 with SUCCESS.
Lab In all six scenarios, the method followed from four checks: the target, the endian or version boundary, the downtime budget, and the edition.
Lab Two sessions locking the same two rows in opposite order raised ORA-00060 in one of them. The same work in a consistent lock order committed cleanly.
Lab Each drill moved its own wait event: 730 single-block reads, 358 multi-block reads, 342 direct path reads, and 10,017 log file syncs for 10,000 commits sent one at a time.
Switchover is a planned zero-loss role swap; failover is for when the primary is gone — plus Fast-Start Failover, protection modes, and the mistakes to avoid.
Oracle RAC node eviction from the logs up: the three heartbeats, misscount vs disktimeout, split-brain and voting disks, and a checklist to find the real cause.
Lab DB CPU topped both reports. Even in the I/O drill, at 42,985.5 physical reads per second, direct path read was only 2.2% of DB time on fast local disk.
Lab A committed DELETE and a DROP TABLE are exactly what a standby would replicate. Flashback got all 1,000 rows back locally, with no standby involved.