The "SCN Not Found" Visualized
This error (ORA-01291, ORA-01292, or Debezium specific exceptions) occurs when the connector requests a System Change Number (SCN) that has already been purged from the Oracle Online Redo Logs and Archived Logs.
Interactive Simulation: Click the buttons below to simulate different scenarios. Watch how the "Debezium Offset" line (Orange) falls below the "Oldest Available SCN" line (Red), triggering the crash.
Key Metrics to Watch
If generation > mining speed, you will eventually lose logs.
Why does this happen in K8s?
- Pod Restarts: If the pod crashes or is rescheduled, and downtime > Oracle retention window, the SCN is lost.
- Network Latency: K8s to Oracle network issues can slow down LogMiner fetch rate.
- PVC I/O: Slow Infinispan buffer on PVC can cause backpressure, increasing the gap.
Diagnostic Decision Tree
Select a symptom or suspicion below to reveal the specific SQL queries needed to confirm the root cause. Execute these in your Oracle Source PDB.
Is the Redo/Archive Log Retention too short?
Debezium needs the logs to exist from the last committed offset. If Oracle deletes them before Debezium reads them, you get "SCN not found".
Compare oldest_log_time with the timestamp of your Debezium failure.
Choose Strategy
Strategy: Incremental Snapshot Recovery
Recovers missing data by re-reading tables without a full lock.
Identify Affected Tables
Determine which tables had changes during the missing log period.
Send Ad-Hoc Snapshot Signal
Insert a signal into the Debezium signaling table to trigger a re-scan of specific tables.
Restart Debezium (Optional)
If the connector is in a failed state, you may need to restart the Pod. However, for SCN missing errors, you usually need to combine this with advancing the offset (Strategy 2) to get the connector running, THEN run this signal to backfill.
Kubernetes & JDBC Storage Best Practices
Interact with the components below to see configuration details.
Debezium Server Pod
Deployment / StatefulSet
PVC (Infinispan)
Buffer Storage
Source Oracle DB
LogMiner & JDBC Tables
# deployment.yaml - Key Considerations
apiVersion: apps/v1
kind: Deployment
metadata:
name: debezium-server
spec:
replicas: 1 # MUST be 1. High Availability is handled by K8s rescheduling, not load balancing.
strategy:
type: Recreate # Kills old pod before starting new one to release locks/PVC
template:
spec:
containers:
- name: debezium-server
image: quay.io/debezium/server:2.4
resources:
requests:
memory: "1Gi" # Oracle LogMiner buffers in memory
limits:
memory: "2Gi"
env:
- name: DEBEZIUM_SOURCE_OFFSET_STORAGE
value: "io.debezium.server.jdbc.JdbcOffsetBackingStore"
- name: DEBEZIUM_SOURCE_DATABASE_HISTORY
value: "io.debezium.relational.history.JdbcDatabaseHistory"