{
  "id": "database/read-committed-snapshot-too-old",
  "signature": "ORA-01555: snapshot too old: rollback segment number  with name \"_SYSSMU11_1234567890$\" too small",
  "signature_zh": "ORA-01555：快照过旧：回滚段号 名称为“_SYSSMU11_1234567890$”太小",
  "regex": "ORA-01555: snapshot too old",
  "domain": "database",
  "category": "runtime_error",
  "subcategory": null,
  "root_cause": "Oracle rollback segment contains needed read-consistent data that has been overwritten due to long-running query or insufficient undo retention.",
  "root_cause_type": "generic",
  "root_cause_zh": "Oracle回滚段包含需要的一致性读取数据，但由于长时间运行的查询或撤销保留不足而被覆盖。",
  "versions": [
    {
      "version": "Oracle 19c",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "Oracle 21c",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "Oracle 23ai",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    }
  ],
  "os_specific": {},
  "dead_ends": [
    {
      "action": "Increase UNDO_RETENTION to a very high value like 86400 seconds",
      "why_fails": "Undo retention is only a target, not a guarantee; Oracle may still overwrite undo if tablespace is full or if undo tablespace is undersized.",
      "fail_rate": 0.7,
      "condition": "",
      "sources": []
    },
    {
      "action": "Set undo_management='MANUAL' to use manual rollback segments",
      "why_fails": "Manual rollback segments are deprecated and can lead to worse ORA-01555 errors due to fixed segment sizes and no auto-tuning.",
      "fail_rate": 0.9,
      "condition": "",
      "sources": []
    }
  ],
  "workarounds": [
    {
      "action": "Increase the undo tablespace size: ALTER TABLESPACE undo ADD DATAFILE '/u01/oradata/undo02.dbf' SIZE 10G;",
      "success_rate": 0.85,
      "how": "Increase the undo tablespace size: ALTER TABLESPACE undo ADD DATAFILE '/u01/oradata/undo02.dbf' SIZE 10G;",
      "condition": "",
      "sources": []
    },
    {
      "action": "Optimize the query to fetch data in smaller batches or use COMMIT more frequently: BEGIN FOR rec IN (SELECT * FROM huge_table WHERE ...) LOOP ... END LOOP; END;",
      "success_rate": 0.75,
      "how": "Optimize the query to fetch data in smaller batches or use COMMIT more frequently: BEGIN FOR rec IN (SELECT * FROM huge_table WHERE ...) LOOP ... END LOOP; END;",
      "condition": "",
      "sources": []
    },
    {
      "action": "Set undo_retention guarantee: ALTER TABLESPACE undo RETENTION GUARANTEE;",
      "success_rate": 0.9,
      "how": "Set undo_retention guarantee: ALTER TABLESPACE undo RETENTION GUARANTEE;",
      "condition": "",
      "sources": []
    }
  ],
  "workarounds_zh": [
    "Increase the undo tablespace size: ALTER TABLESPACE undo ADD DATAFILE '/u01/oradata/undo02.dbf' SIZE 10G;",
    "Optimize the query to fetch data in smaller batches or use COMMIT more frequently: BEGIN FOR rec IN (SELECT * FROM huge_table WHERE ...) LOOP ... END LOOP; END;",
    "Set undo_retention guarantee: ALTER TABLESPACE undo RETENTION GUARANTEE;"
  ],
  "transition_graph": {
    "leads_to": [],
    "preceded_by": [],
    "frequently_confused_with": []
  },
  "official_doc_url": "https://docs.oracle.com/en/database/oracle/oracle-database/19/errmg/ORA-01555.html",
  "official_doc_section": null,
  "error_code": "ORA-01555",
  "verification_tier": "ai_generated",
  "confidence": 0.85,
  "fix_success_rate": 0.8,
  "resolvable": "true",
  "first_seen": "2023-09-15",
  "last_confirmed": "2024-06-01",
  "last_updated": "2024-06-01",
  "evidence_count": 1,
  "tags": [],
  "locale": "en",
  "aliases": []
}