230 частых ошибок в Oracle SQL и способы их устранения

Ниже — большая (но, конечно, не абсолютно «все-все») справка по самым частым ошибкам Oracle SQL/PLSQL: что означает код, когда возникает и как исправлять. Каждая запись: код → краткое описание → типичный сценарий → решение (+ иногда пример).

Для поиска по коду ошибки используйте поиск по браузеру.

Шпаргалка по ошибкам Oracle (SQL/PL/SQL)

  1. ORA-00001: unique constraint (… ) violated
    Что это: нарушено уникальное ограничение (PRIMARY/UNIQUE).
    Когда бывает: INSERT/UPDATE создаёт дубликат ключа.
    Как чинить:

  • найти и убрать/исправить дубликаты (SELECT … GROUP BY HAVING COUNT(*)>1),

  • изменить данные/ключ,

  • реже — использовать MERGE или INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX */ (если логика допускает игнор).
    Пример: проверить, какое именно ограничение:

SELECT constraint_name, column_name
FROM user_cons_columns
WHERE table_name = 'T' AND constraint_name = 'UK_T_COL';
  1. ORA-00904: invalid identifier
    Что это: неверный идентификатор (столбец/алиас/функция).
    Когда бывает: опечатка, кавычные имена, столбца нет в этой таблице/подзапросе.
    Как чинить:

  • проверить схему и точные имена столбцов,

  • убрать двойные кавычки (или использовать их везде, если уж начали),

  • убедиться, что алиас допустим в нужной части запроса.

  1. ORA-00942: table or view does not exist
    Что это: таблица/представление недоступны.
    Когда бывает: не та схема (HR.EMPLOYEES vs EMPLOYEES), нет прав, объект ещё не создан/невалиден.
    Как чинить:

  • сослаться на объект с префиксом схемы: schema.table,

  • выдать права: GRANT SELECT ON schema.table TO user;,

  • проверить синонимы (USER|ALL|DBA_SYNONYMS).

  1. ORA-00933: SQL command not properly ended
    Что это: синтаксис SQL нарушен.
    Когда бывает: лишняя запятая/скобка; попытки писать LIMIT как в MySQL; WITH без SELECT и т.п.
    Как чинить:

  • сверить синтаксис под вашу версию Oracle,

  • для пагинации — FETCH FIRST n ROWS ONLY (12c+) или ROWNUM.

  1. ORA-00936: missing expression
    Что это: где-то не хватает выражения.
    Когда бывает: SELECT FROM … без списка столбцов, пробелы/скобки съели выражение.
    Как чинить: дописать выражение, проверить скобки и запятые.

  2. ORA-00907: missing right parenthesis
    Что это: нет закрывающей скобки/неверный синтаксис в списке столбцов/функции.
    Как чинить: проверить баланс скобок, особенно в CREATE TABLE, CHECK, вызовах функций.

  3. ORA-01400: cannot insert NULL into (… )
    Что это: NOT NULL столбец получает NULL.
    Как чинить:

  • задать значение,

  • добавить DEFAULT,

  • пересмотреть бизнес-логику/ограничение.

  1. ORA-01438: value larger than specified precision
    Что это: число не помещается в NUMBER(p,s) (или INTEGER/DECIMAL).
    Как чинить:

  • увеличить precision/scale,

  • округлять/обрезать перед записью: TRUNC, ROUND.

  1. ORA-12899: value too large for column
    Что это: строка длиннее, чем VARCHAR2(n)/CHAR(n)/RAW(n).
    Как чинить:

  • увеличить размер,

  • валидировать длину на входе,

  • убедиться в кодировке (многобайтовые символы!).

  1. ORA-01722: invalid number
    Что это: попытка привести нечисловой текст к числу.
    Когда бывает: неявное преобразование при сравнении/вставке.
    Как чинить:

  • явно приводить типы (TO_NUMBER с форматом),

  • чистить данные (REGEXP_REPLACE),

  • колонки хранить в корректных типах (не в VARCHAR2).

  1. ORA-01861 / ORA-01830 / ORA-01858: дата/формат не совпадает
    Что это: строка не соответствует формату даты.
    Как чинить:

  • использовать явный TO_DATE('2025-09-05','YYYY-MM-DD'),

  • выставить NLS_DATE_LANGUAGE/NLS_DATE_FORMAT локально, не полагаться на сессию,

  • для timestamp — TO_TIMESTAMP.

  1. ORA-06502: PL/SQL: numeric or value error
    Что это: выход за размер переменной, конверсия типов, проблемы с Юникодом.
    Как чинить:

  • расширить типы переменных (VARCHAR2(32767) в PL/SQL),

  • проверять длины/диапазоны,

  • ловить и логировать значения, вызывающие сбой.

  1. ORA-06550: line …, column …: PLS-…
    Что это: ошибки компиляции PL/SQL (процедуры/функции/триггеры/пакеты).
    Как чинить:

  • посмотреть детали:

SHOW ERRORS PROCEDURE proc_name;
-- или
SELECT * FROM user_errors WHERE name='PROC_NAME' ORDER BY sequence;
  • исправить синтаксис/типы/привилегии.

  1. ORA-04098: trigger is invalid and failed re-validation
    Что это: триггер невалиден.
    Как чинить:

  • SHOW ERRORS TRIGGER trg; → исправить код,

  • убедиться, что зависимые объекты существуют и валидны.

  1. ORA-04091: table is mutating, trigger/function may not see it
    Что это: «мутация» — row-level триггер читает/меняет ту же таблицу.
    Как чинить:

  • перенести логику в statement-level триггер + временное хранилище изменений,

  • использовать compound trigger (11g+),

  • вынести проверку в constraint/материализованное представление/деферрируемые ограничения.

  1. ORA-02291: integrity constraint violated – parent key not found
    Что это: внешний ключ ссылается на несуществующий родитель.
    Как чинить:

  • сначала вставить родителя, потом ребёнка,

  • включить DEFERRABLE INITIALLY DEFERRED, если нужна отложенная проверка.

  1. ORA-02292: integrity constraint violated – child record found
    Что это: нельзя удалить родителя — существуют дети.
    Как чинить:

  • удалить/переназначить дочерние строки,

  • либо ON DELETE CASCADE/SET NULL в FK (если допустимо).

  1. ORA-01555: snapshot too old
    Что это: версия строк для консистентного чтения уже перезаписана (UNDO мал/долгий запрос).
    Как чинить:

  • увеличить UNDO (размер/время удержания),

  • оптимизировать долгие запросы/батчи,

  • разбивать транзакции,

  • использовать FLASHBACK (если подходит).

  1. ORA-08177: can’t serialize access for this transaction
    Что это: конфликт в уровне изоляции SERIALIZABLE.
    Как чинить:

  • повторно выполнять транзакцию при конфликте,

  • рассмотреть READ COMMITTED/READ ONLY,

  • уменьшить конкуренцию по ключам.

  1. ORA-01652 / ORA-01653: unable to extend temp segment / table
    Что это: не хватает пространства в TEMP/табличном пространстве.
    Как чинить (ДБА):

  • добавить tempfile/datafile,

  • включить авторасширение,

  • переписать запрос (уменьшить сорт/хеш), индексы.

  1. ORA-03113 / ORA-03114 / ORA-12547: потеря соединения
    Что это: канал связи оборван/процесс упал.
    Как чинить:

  • проверить сетевую стабильность, listener/серверные логи (alert.log, trace),

  • переподключение с retry в клиенте.

  1. ORA-12514 / ORA-12541 / ORA-12154 (TNS): проблемы с listener/имён сервисов
    Что это: слушатель не знает сервис, порт/хост недоступен, неверный tnsnames.ora.
    Как чинить:

  • проверить lsnrctl status, SID/SERVICE_NAME, порт,

  • исправить строку подключения; для EZConnect: host:port/service_name.

  1. ORA-28000: the account is locked
    Что это: учётка заблокирована (политика/ошибочные логины).
    Как чинить (ДБА): ALTER USER user ACCOUNT UNLOCK; + смена пароля.
    Профилактика: уменьшить FAILED_LOGIN_ATTEMPTS/настроить профили.

  2. ORA-28001: the password has expired
    Как чинить: сменить пароль при входе или ALTER USER … IDENTIFIED BY ….
    Профилактика: политика паролей в профиле (PASSWORD_LIFE_TIME).

  3. ORA-28040 / ORA-28085: no matching authentication protocol / clamp down
    Что это: несовместимые версии клиента/сервера/алгоритмы.
    Как чинить:

  • обновить client,

  • настроить SQLNET.ALLOWED_LOGON_VERSION[_SERVER].

  1. ORA-01950: no privileges on tablespace
    Что это: нет квоты на TBS.
    Как чинить (ДБА): ALTER USER u QUOTA UNLIMITED ON users; или выдать конкретную квоту.

  2. ORA-01720: grant option does not exist for …
    Что это: вы делегируете право, которым не владеете с GRANT OPTION.
    Как чинить: просить владельца объекта выдать права вам с GRANT OPTION.

  3. ORA-02429: cannot drop index used for enforcement of unique/primary
    Что это: удаляется индекс, поддерживающий PRIMARY KEY/UNIQUE.
    Как чинить: удалять ограничение (или переключать на другой индекс), а не индекс.

  4. ORA-25408: can not safely replay call (RAC/TAF/DRCP)
    Что это: не все вызовы можно прозрачно повторить.
    Как чинить:

  • сделать операции идемпотентными,

  • хранить состояние сессии вне БД,

  • корректно обрабатывать повтор.

  1. ORA-29275: partial multibyte character
    Что это: обрезали строку посередине многобайтного символа (UTF-8 и т.п.).
    Как чинить:

  • работать в символах, а не байтах,

  • использовать функции SUBSTRC, LENGTHC.

Ошибки в Oracle SQL. Продолжение:

  1. ORA-00979: not a GROUP BY expression
    Что это: в SELECT есть неагрегированный столбец, которого нет в GROUP BY.
    Как чинить: добавить столбец в GROUP BY или агрегировать.

  2. ORA-01422: exact fetch returns more than requested number of rows (PL/SQL)
    Что это: SELECT INTO вернул >1 строки.
    Как чинить:

  • ограничить запрос (WHERE, FETCH FIRST 1 ROW),

  • использовать курсор/коллекцию.

  1. ORA-01403: no data found (PL/SQL)
    Что это: SELECT INTO не вернул строк.
    Как чинить:

  • обработать исключение,

  • проверять существование (COUNT/EXISTS) перед выборкой.

  1. ORA-29257/29259: утилиты UTL_HTTP/SMTP/FILE
    Что это: проблемы с ACL/сетевыми доступами/файлами.
    Как чинить (ДБА): настроить ACL: DBMS_NETWORK_ACL_ADMIN.

  2. ORA-24247: network access denied by access control list (ACL)
    Что это: заблокован сетевой вызов из БД.
    Как чинить: выдать привилегии на хост/порт в ACL для нужной схемы.

  3. ORA-01882: timezone region not found
    Что это: некорректное имя таймзоны.
    Как чинить: использовать валидные регионы TZ из V$TIMEZONE_NAMES.

  4. ORA-02049: timeout: distributed transaction waiting for lock / ORA-00054: resource busy
    Что это: блокировки.
    Как чинить:

  • сократить транзакции, ставить индексы, уменьшать конкуренцию,

  • повторить с NOWAIT/WAIT n,

  • диагностировать блокировки: V$LOCK, DBA_BLOCKERS/WAITERS.

  1. ORA-39213: Metadata import/export
    Что это: проблемы при DATAPUMP (несовместимость версий/привилегий).
    Как чинить: VERSION, совместимость, права DATAPUMP_EXP_FULL_DATABASE/IMP_*.


  1. ORA-04031: unable to allocate X bytes of shared memory
    Что это: нехватка памяти в shared pool/large pool.
    Когда: пики парсинга, крупные пакеты, фрагментация SGA.
    Как чинить:

  • уменьшить hard-parse: bind-переменные, keep-кэш;

  • увеличить/перенастроить shared_pool_size/sga_target;

  • DBMS_SHARED_POOL.KEEP для тяжёлых объектов; перезагрузка как временная мера.

  1. ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT
    Что это: лимит PGA превышен.
    Как чинить: оптимизировать запросы (хеш-соединения/сортировки), ограничить одновременность, поднять PGA_AGGREGATE_LIMIT (с осторожностью).

  2. ORA-04061 / ORA-04065 / ORA-04068: package has changed / state discarded
    Что это: пакет/подпрограмма перекомпилированы, состояние сессии потеряно.
    Как чинить: пересобрать зависимости, по возможности избегать «сессионного» состояния в пакетах; повторить вызов; следить за валидностью USER_OBJECTS.STATUS.

  3. ORA-06508: PL/SQL: could not find program unit being called
    Что это: вызываемый объект невалиден/не найден.
    Как чинить: ALTER ... COMPILE, проверить зависимости (USER_DEPENDENCIES), права на выполнение.

  4. ORA-01031: insufficient privileges
    Что это: нет прав на действие/объект.
    Как чинить: выдать нужные GRANT (на объект или системные), проверить роль set role, синонимы/цепочку прав.

  5. ORA-01017: invalid username/password; logon denied
    Что это: неверные креды или политика парольной проверки.
    Как чинить: проверить строку подключения, регистр символов, истечение пароля (см. ORA-28001), профили проверки.

  6. ORA-01476: divisor is equal to zero
    Что это: деление на 0.
    Как чинить: защититься NULLIF(den,0)/CASE WHEN den=0 THEN ..., чистить данные.

  7. ORA-01427: single-row subquery returns more than one row
    Что это: скалярный подзапрос возвращает >1 строки.
    Как чинить: добавьте агрегацию/ограничение (MIN/MAX/FETCH FIRST 1 ROW) или перестройте join.

  8. ORA-00932: inconsistent datatypes
    Что это: несовместимые типы в операции/сравнении.
    Как чинить: явные конверсии с форматами; выровнять типы колонок, особенно для дат/чисел.

  9. ORA-00918: column ambiguously defined
    Что это: неоднозначное имя столбца при join/подзапросе.
    Как чинить: квалифицируйте имена t.col или задайте уникальные алиасы.

  10. ORA-02014: cannot select FOR UPDATE from view with DISTINCT/aggregation
    Что это: нельзя блокировать через «необновляемое» представление.
    Как чинить: блокируйте базовую таблицу; перепишите представление без DISTINCT/агрегаций либо используйте INSTEAD OF триггеры для DML.

  11. ORA-02091: transaction rolled back (+ сопутствующая первопричина)
    Что это: транзакция откатилась из-за триггера/ошибки/распределёнки.
    Как чинить: смотреть сопутствующий код, логировать исключения в триггерах, делать операции идемпотентными.

  12. ORA-04020: deadlock detected while trying to lock object
    Что это: дедлок на уровне объектов/библиотечных кэш-локов.
    Как чинить: уменьшить параллельные перекомпиляции/DDL; разводить DDL по времени; избегать частых инвалидаций.

  13. ORA-03135 / ORA-12537 / ORA-12570: connection lost contact / handshake failed
    Что это: обрыв/SSL-рукопожатие.
    Как чинить: сетевые таймауты, SQLNET.INBOUND_CONNECT_TIMEOUT, версии шифров; выровнять клиент/сервер и TLS-настройки.

  14. ORA-12170: TNS: Connect timeout occurred
    Что это: таймаут при подключении.
    Как чинить: маршрут/фаервол, порт listener, CONNECT_TIMEOUT/RECV_TIMEOUT, проверка lsnrctl status.

  15. ORA-25153: Temporary Tablespace is Empty
    Что это: у TEMP нет tempfile.
    Как чинить (ДБА): добавить tempfile:
    ALTER TABLESPACE temp ADD TEMPFILE '...' SIZE 1G AUTOEXTEND ON;

  16. ORA-08103: object no longer exists
    Что это: объект удалён/пере-создан во время доступа.
    Как чинить: стабилизировать DDL-окна, повтор запроса, проверить recycle bin/синонимы.

  17. ORA-38301: object not in RECYCLE BIN
    Что это: попытка восстановить из корзины то, чего там нет.
    Как чинить: проверить USER_RECYCLEBIN, восстановить из бэкапа/Datapump, отключить RECYCLEBIN если не нужен.

  18. ORA-01466: unable to read data – table definition has changed
    Что это: DDL изменила объект во время чтения (консистентность).
    Как чинить: развести длительные SELECT и DDL, использовать materialized view/реплику.

  19. ORA-01791: not a SELECTed expression
    Что это: выражение используется в ORDER BY/GROUP BY, но недопустимо с текущим синтаксисом.
    Как чинить: скорректировать выражение либо вынести в SELECT с алиасом.

  20. ORA-00933: SQL command not properly ended (вариант с RETURNING)
    Когда: неправильное место RETURNING/многозначный VALUES.
    Как чинить: INSERT ... VALUES (...) RETURNING col INTO :b; (не в середине).

  21. ORA-00907: missing right parenthesis (вариант DDL с CHECK)
    Когда: сложные CHECK с функциями/регекспом.
    Как чинить: упростить выражение, проверить экранирование скобок/кавычек.

  22. ORA-22813: operand value exceeds system limits
    Что это: слишком большой LOB/коллекция/объект.
    Как чинить: стримить LOB (кусочно), увеличить лимиты, нормализовать модель.
  23. ORA-22992: cannot use LOB locators selected from remote tables
    Что это: LOB через DB-link в неподдерживаемой операции.
    Как чинить: материализовать локально (CTAS), использовать DBMS_LOB.COPY на стороне источника.

  24. ORA-06512: at line … (stack trace)
    Что это: не ошибка сама по себе, а «след» места, где возникло исключение.
    Как чинить: смотреть первое сообщение в стеке + строки кода; добавить логирование параметров.

  25. ORA-20000..ORA-20999: user-defined error
    Что это: RAISE_APPLICATION_ERROR.
    Как чинить: прочитать текст (часто бизнес-правило), исправить входные данные/логику; при необходимости логировать SQLERRM.

  26. PLS-00302 / PLS-00306: component ‘…’ must be declared / wrong number or types of arguments
    Что это: неверная сигнатура вызова.
    Как чинить: сверить параметры и типы; проверить перегрузки; убедиться, что видимость пакета корректна (синонимы, AUTHID).

  27. PLS-00201: identifier must be declared
    Что это: объект недоступен/не объявлен в области видимости.
    Как чинить: добавить GRANT EXECUTE/USAGE, префикс схемы или объявление в спецификации.

  28. ORA-00942 при синонимах
    Когда: есть приватный синоним, но прав на базовый объект нет.
    Как чинить: выдайте права на базовый объект или используйте публичный синоним/префикс схемы.

  29. ORA-01405: fetched column value is NULL (старые драйверы)
    Что это: Cursor-fetch в средах, где NULL не ожидается.
    Как чинить: обновить драйвер/ODP, обработать NULL в коде.

  30. ORA-01720: grant option does not exist (добавочно)
    Когда: пытаетесь GRANT ... WITH GRANT OPTION, не будучи владельцем/без права делегировать.
    Как чинить: просить владельца выдать право с WITH GRANT OPTION или делать GRANT от владельца.

  31. ORA-02049: timeout: distributed transaction waiting for lock
    Что это: таймаут ожидания блокировки в распределённой/обычной транзакции.
    Как чинить: индексы по условиям, короче транзакции, порядок обновлений, NOWAIT/WAIT, анализ DBA_BLOCKERS/WAITERS.

  32. ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
    Что это: объект/строки заняты.
    Как чинить: убрать NOWAIT или увеличить WAIT, перенести окно, снизить конфликтность, использовать более точные WHERE+индексы.

  33. ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found
    Что это: дубликаты мешают создать уникальный индекс/ограничение.
    Как чинить: найти и устранить дубли, затем создавать индекс/constraint; иногда — DEFERRABLE + очистка.

  34. ORA-00955: name is already used by an existing object
    Что это: имя занято (таблица/индекс/синоним/тип).
    Как чинить: переименовать, удалить, проверить пространство имён (разные типы объектов).

  35. ORA-02264: name already used by an existing constraint
    Что это: имя ограничения уже существует в схеме.
    Как чинить: выбрать уникальное имя constraint.

  36. ORA-22804: remote operations not permitted on object tables or user-defined types
    Что это: UDT/объектные таблицы через DB-link.
    Как чинить: выполнять локально или через промежуточную материализацию.

  37. ORA-00904 (вариант с кавычными идентификаторами)
    Когда: "WeirdCase" в DDL → потом забыли кавычки в DML.
    Как чинить: избегать кавычных имён; если уже есть — всегда указывать в том же регистре и в кавычках.

  38. ORA-30081: invalid data type for datetime/interval arithmetic
    Что это: неверные операции с INTERVAL/DATE/TIMESTAMP.
    Как чинить: использовать корректные функции (NUMTODSINTERVAL, ADD_MONTHS, INTERVAL '1' DAY), не смешивать строковые типы.

  39. ORA-39171/39165 (Data Pump): job is experiencing a resumable wait / schema not found
    Что это: проблемы с правами/табличными пространствами/директориями.
    Как чинить: проверить DIRECTORY объект и права на него, квоты TBS, совместимость VERSION.

  40. ORA-29855 / ORA-29861 (domain/index) и ctx ошибки
    Что это: проблемы с контекстными/доменными индексами (Text/Spatial и т.п.).
    Как чинить: валидировать параметры индекса, пересоздать/синхронизировать, проверить наличие соответствующих компонентов (CTXSYS и пр.).

  41. ORA-00979: not a GROUP BY expression (дополнение)
    Когда: аналитики путают GROUP BY и OVER().
    Как чинить: вынесите агрегации в аналитические функции SUM(...) OVER (PARTITION BY ...) либо добавьте недостающие колонки в GROUP BY.

  42. ORA-01733: virtual column not allowed here
    Что это: виртуальную колонку пытаются обновить/использовать в недопустимом контексте.
    Как чинить: обновлять базовые поля; проверять ограничения на генерируемые колонки.

  43. ORA-29876: failed in the execution of the ODCIINDEX routine*
    Что это: ошибка пользовательского индекса в колбэках.
    Как чинить: смотреть трассы, спецификации ODCI, пересоздавать индекс/пакеты.

  44. ORA-01489: result of string concatenation is too long
    Что это: конкатенация вывела за лимит VARCHAR2 в SQL (4000)/PLSQL (32767).
    Как чинить: использовать CLOB (TO_CLOB), собирать по частям, усечь.

  45. ORA-02070: database does not support this feature (через DB-link)
    Что это: удалённая БД не поддерживает синтаксис/функцию.
    Как чинить: переписать запрос на совместимый, материализовать данные локально.

  46. ORA-01536: space quota exceeded for tablespace
    Что это: исчерпана квота пользователя.
    Как чинить (ДБА): увеличить квоту/переназначить TBS; как разработчик — чистить/архивировать.

  47. ORA-00942 при временных таблицах
    Когда: GLOBAL TEMPORARY TABLE создана в другой схеме/сеансе.
    Как чинить: обращаться с префиксом схемы; помнить, что данные — сеансовые/транзакционные.

  48. ORA-04098 (дополнение для триггеров)
    Когда: зависимость триггера на функцию/пакет невалидна.
    Как чинить: перекомпилировать всё дерево зависимостей (utlrp.sql), следить за USER_ERRORS.

  49. ORA-01461: can bind a LONG value only for insert into a LONG column
    Что это: попытка связать длинную строку в VARCHAR2 вместо CLOB/LONG.
    Как чинить: перейти на CLOB, обновить драйвер/ORM маппинг.

  50. ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion
    Что это: конверсия LOB в буфер меньшего размера.
    Как чинить: читать кусками (DBMS_LOB.SUBSTR), увеличивать буферы на клиенте.

  51. ORA-01653: unable to extend table … by … in tablespace …
    Что это: не хватает места в табличном пространстве.
    Как чинить (ДБА): добавить datafile/включить авторасширение; как разработчик — уменьшить объём операции, батчить.

  1. ORA-01000: maximum open cursors exceeded
    Что это: превышен лимит открытых курсоров в сессии.
    Как чинить: закрывать курсоры в приложении; увеличить OPEN_CURSORS; мониторить v$open_cursor.

  2. ORA-00911: invalid character
    Что это: недопустимый символ (точка с запятой в середине, «умные» кавычки, скрытые символы).
    Как чинить: убрать лишние символы; использовать одинарные ' для строк; убедиться в кодировке.

  3. ORA-00920: invalid relational operator
    Что это: неверный оператор сравнения (==, ===, => и т.п.).
    Как чинить: использовать SQL-операторы = <> <= >= BETWEEN IN LIKE.

  4. ORA-00922: missing or invalid option
    Что это: неверная опция DDL/ALTER.
    Как чинить: сверить синтаксис под вашу версию; убрать неподдерживаемые ключи.

  5. ORA-00923: FROM keyword not found where expected
    Что это: пропущен FROM или нарушен порядок ключевых слов.
    Как чинить: перепроверить порядок SELECT … FROM … WHERE ….

  6. ORA-00937: not a single-group group function
    Что это: смешаны агрегаты и неагрегированные колонки без GROUP BY.
    Как чинить: добавить колонки в GROUP BY или завернуть в агрегат.

  7. ORA-00972: identifier is too long
    Что это: имя длиннее лимита (30 байт для обычных объектов до 12c).
    Как чинить: укорачивать имена; избегать кавычных идентификаторов.

  8. ORA-00913: too many values
    Что это: в INSERT … VALUES столбцов меньше, чем значений (или подзапрос возвращает лишние).
    Как чинить: выровнять списки столбцов и значений.

  9. ORA-00900: invalid SQL statement
    Что это: конструкция не поддерживается в данном контексте/версии.
    Как чинить: проверить, что это именно SQL/PLSQL Oracle; переписать на эквивалентный синтаксис.

  10. ORA-01410: invalid ROWID
    Что это: некорректный/устаревший ROWID.
    Как чинить: не кэшировать ROWID надолго; получать заново из текущих выборок/индексов.

  11. ORA-01450: maximum key length (xxx) exceeded
    Что это: суммарная длина ключевых колонок индекса превышает лимит блока/платформы.
    Как чинить: укоротить колонки, использовать префиксные индексы по строкам (SUBSTR(col,1,n)), перейти на таблицу с большим BLOCK_SIZE.

  12. ORA-01442: column to be modified to NOT NULL is already NOT NULL
    Что это: бессмысленная операция изменения.
    Как чинить: ничего не делать или проверять текущие атрибуты перед DDL.

  13. ORA-01430: column being added already exists in table
    Что это: пытаетесь добавить уже существующий столбец.
    Как чинить: переименовать/использовать MODIFY; предварительно проверять ALL_TAB_COLS.

  14. ORA-04021: timeout occurred while waiting to lock object
    Что это: ожидание DDL/библиотечного лока на объект.
    Как чинить: развести DDL по времени; уменьшить конкуренцию на перекомпиляции; повторить позже.

  15. ORA-04063: view/procedure/function has errors
    Что это: объект с ошибками компиляции/валидности.
    Как чинить: SHOW ERRORS/USER_ERRORS; исправить код/зависимости; перекомпилировать.

  16. ORA-04088: error during execution of trigger
    Что это: исключение внутри триггера.
    Как чинить: логировать входные данные, смотреть стек (ORA-06512), оборачивать ожидаемые случаи в обработчики.

  17. ORA-24344: success with compilation error
    Что это: PL/SQL компилируется с ошибками.
    Как чинить: смотреть USER_ERRORS и исправлять по строкам/позициям.

  18. ORA-24381: error(s) in array DML
    Что это: пакетные привязки/array DML вернули частичные ошибки.
    Как чинить: анализ SQL%BULK_EXCEPTIONS в PL/SQL; корректировать данные; разбивать батчи.

  19. ORA-06501: PL/SQL: program error
    Что это: общий сбой выполнения (часто из-за несогласованности версий/LOB/памяти).
    Как чинить: локализовать участок, минимизировать кейс, проверить драйвер/пакеты/LOB-операции.

  20. ORA-06504: PL/SQL: Return types of Result Set variables are not compatible
    Что это: несовпадение типов курсора между вызывающим и возвращаемым.
    Как чинить: выровнять типы записей/REF CURSOR; использовать типы из пакета-спецификации.

  21. ORA-06532 / ORA-06533: subscript outside of limit / null subscript
    Что это: выход за границы коллекций/ассоциативных массивов.
    Как чинить: проверять индексы, использовать EXISTS, корректно инициализировать коллекции.

  22. PLS-00103: encountered the symbol …
    Что это: синтаксическая ошибка PL/SQL.
    Как чинить: проверить пропущенные ;/END/скобки, порядок секций DECLARE/BEGIN/EXCEPTION/END.

  23. PLS-00364: loop index variable use is not allowed
    Что это: попытка присвоить или изменить индекс FOR-цикла.
    Как чинить: использовать отдельную переменную.

  24. PLS-00405: subquery not allowed in this context
    Что это: подзапрос в запрещённом месте (например, в чек-ограничении в PL/SQL выражении).
    Как чинить: вынести в SQL-оператор или предварительную переменную/таблицу.

  25. ORA-29280: invalid directory path (UTL_FILE)
    Что это: объект DIRECTORY не существует/нет прав.
    Как чинить: CREATE DIRECTORY и GRANT READ, WRITE ON DIRECTORY … TO ….

  26. ORA-29283: invalid file operation
    Что это: ошибка файловой операции (путь/права/существование).
    Как чинить: проверить путь, права, режим; ловить исключения UTL_FILE.

  27. ORA-06550 + PLS-00201: identifier must be declared
    Что это: нет видимости объекта в PL/SQL.
    Как чинить: GRANT EXECUTE/префикс схемы; вынести спецификацию.

  28. ORA-00600: internal error code, arguments: […]
    Что это: внутренняя ошибка ядра.
    Как чинить: искать по аргументам ORA-00600 в поддержке Oracle; обеспечить трассировку, собрать минимальный кейс; часто требуется патч/апдейт.

  29. ORA-07445: exception encountered: core dump
    Что это: аварийное завершение серверного процесса на нативном уровне.
    Как чинить: обратиться к alert.log/трассам; обновить/пропатчить; проверить нестандартные расширения.

  30. ORA-19809 / ORA-19815: limit exceeded for recovery files
    Что это: архивные логи заполнили FRA.
    Как чинить (ДБА): увеличить DB_RECOVERY_FILE_DEST_SIZE, бэкап/удалить устаревшие archive logs, настроить RMAN.

  31. ORA-16014/16038: log X sequence# not archived / log cannot be archived
    Что это: проблемы с архивированием redo.
    Как чинить: проверить место/права; восстановить работу ARCn; бэкапить чаще.

  32. ORA-38760: This database instance failed to turn on flashback database
    Что это: флэшбэк не включился.
    Как чинить: корректно настроить FRA, разрешить DB_FLASHBACK_RETENTION_TARGET, включить FLASHBACK ON.

  33. ORA-02041: client database did not begin a transaction (dblink)
    Что это: распределённая транзакция ожидается, но не начата.
    Как чинить: убедиться в commit/rollback, настройках двухфазного коммита; минимизировать DML через dblink.

  34. ORA-02019: query blocked by RLS policy
    Что это: политика VPD/FGAC ограничила доступ.
    Как чинить: проверить политики DBA_POLICIES; скорректировать predicate-функцию или выдачу прав.

  35. ORA-28113: policy predicate has error
    Что это: ошибка в функции политики безопасности.
    Как чинить: отладить predicate-функцию, смотреть USER_ERRORS.

  36. ORA-01732: data manipulation operation not legal on this view
    Что это: DML по необновляемому представлению.
    Как чинить: INSTEAD OF триггеры, либо DML по базовым таблицам.

  37. ORA-01779: cannot modify a column which maps to a non key-preserved table
    Что это: обновление через join-view без key-preservation.
    Как чинить: обновлять базовую таблицу; обеспечить key-preserved join или INSTEAD OF триггер.

  38. ORA-06553: PLS-306/PLS-307 (wrong number/types)
    Что это: несовпадение параметров вызова (часто с XMLTYPE, JSON, UDT).
    Как чинить: выровнять типы, использовать корректные конструкторы.

  39. ORA-29400: data cartridge error
    Что это: ошибка в внешнем движке/доменном индексе/карридже.
    Как чинить: смотреть текст под-ошибки, логи компонента; пересоздавать индекс/пакет.

  40. ORA-08102: index key not found / ORA-01578: ORACLE data block corrupted
    Что это: логическая/физическая порча блока/индекса.
    Как чинить (ДБА): ANALYZE … VALIDATE STRUCTURE, перестроить индекс; для порчи блока — RMAN-восстановление, блок-media recovery.

  41. ORA-29273: HTTP request failed (UTL_HTTP)
    Что это: сетевой сбой/ACL/SSL.
    Как чинить: ACL, валидные сертификаты (wallet), таймауты, прокси.

  42. ORA-29532: Java call terminated by uncaught Java exception
    Что это: исключение из встроенной Java.
    Как чинить: смотреть текст Java-исключения; обновить Java-класс; проверить права Java-песочницы.

  43. ORA-31011 / ORA-19202: XML parsing failed
    Что это: плохо сформированный XML/кодировка.
    Как чинить: валидировать XML, указать AL32UTF8, использовать XMLPARSE.

  44. ORA-40442 / ORA-40441 (JSON): invalid JSON path / not a JSON
    Что это: неверный JSONPath или данные не JSON.
    Как чинить: валидировать IS JSON, исправить путь, хранить в JSON-колонках (23c)/CLOB с проверкой.

  45. ORA-56901: non-JSON character found in JSON textual value
    Что это: сломанный JSON.
    Как чинить: чистить вход, использовать JSON_TRANSFORM/JSON_MERGEPATCH вместо ручной склейки.

  46. ORA-12801: error signaled in parallel query server
    Что это: ошибка в параллельном сервере (вторичное сообщение).
    Как чинить: искать первичную ошибку в стеке; снизить DOP; проверить статистики/память PQ.

  47. ORA-01555 (вариант с долгими курсорами)
    Что это: «snapshot too old» при длительном чтении курсора.
    Как чинить: коммитить реже «между» выборками; увеличить UNDO_RETENTION; переписать на более селективный план.

  48. ORA-27300/27301/27302: OS system dependent operation
    Что это: ошибки уровня ОС (job scheduler, внешние прогоны).
    Как чинить: права ОС, пути, лимиты ulimit; корректные скрипты для DBMS_SCHEDULER.

  49. ORA-06598: insufficient INHERIT PRIVILEGES
    Что это: безопасность ролей (минимизация привилегий, 12c+).
    Как чинить: GRANT INHERIT PRIVILEGES ON USER … TO … при необходимости.

  50. ORA-28547 / ORA-28500: connection to server failed, probable Net8 admin error (hetero services)
    Что это: проблемы с HS/ODBC gateway.
    Как чинить: проверить listener.ora, tnsnames.ora, initSID.ora gateway; версии драйверов.

  1. ORA-00060: deadlock detected while waiting for resource
    Что это: дедлок транзакций.
    Как чинить: упорядочить порядок обновлений, ставить индексы по условиям, дробить транзакции, повторять при ловле дедлока; анализировать трассу дедлока из trace/alert.log.

  2. ORA-00018: maximum number of sessions exceeded
    Что это: достигнут предел сессий.
    Как чинить: увеличить SESSIONS, включить пул соединений, закрывать простаивающие сессии.

  3. ORA-00020: maximum number of processes (… ) exceeded
    Что это: превышен лимит процессов инстанса.
    Как чинить: увеличить PROCESSES, оптимизировать пул соединений/джобы.

  4. ORA-01008: not all variables bound
    Что это: не все bind-переменные заданы.
    Как чинить: проверить количество :-плейсхолдеров и привязок в драйвере/ORM.

  5. ORA-01036: illegal variable name/number
    Что это: неверные имена/число bind-переменных.
    Как чинить: не использовать зарезервированные/дубли имён; выровнять плейсхолдеры и привязки.

  6. ORA-01045: user … lacks CREATE SESSION privilege; logon denied
    Что это: у пользователя нет права на логин.
    Как чинить: GRANT CREATE SESSION TO user; (ДБА).

  7. ORA-01741: illegal zero-length identifier
    Что это: пустой идентификатор, часто из-за двойных кавычек.
    Как чинить: убрать кавычные пустые имена; использовать валидные идентификаторы.

  8. ORA-01747: invalid user.table.column, table.column, or column specification
    Что это: неверная спецификация столбца/схемы.
    Как чинить: проверить синтаксис schema.table.column, алиасы и зарезервированные слова.

  9. ORA-01790: expression must have same datatype as corresponding expression
    Что это: типы в UNION/CASE/DECODE не совпадают.
    Как чинить: явно привести типы (CAST) к единому.

  10. ORA-01407: cannot update (… ) to NULL
    Что это: попытка обновить NOT NULL столбец на NULL.
    Как чинить: давать значение или менять ограничение/DEFAULT.

  11. ORA-01418: specified index does not exist
    Что это: индекс не найден/в другой схеме.
    Как чинить: проверить имя/владельца; использовать префикс схемы.

  12. ORA-01408: such column list already indexed
    Что это: дублирующийся состав индекса.
    Как чинить: не создавать однотипный индекс; использовать покрывающий/частичный.

  13. ORA-01450: maximum key length exceeded
    Что это: ключ индекса слишком длинный.
    Как чинить: укоротить строки (SUBSTR), уменьшить число колонок, сменить BLOCK_SIZE/тип индекса.

  14. ORA-02270: no matching unique or primary key for this column-list
    Что это: FK ссылается не на уникальный/PK ключ.
    Как чинить: обеспечить PK/UNIQUE на родительской колонке(ах) или скорректировать FK.

  15. ORA-02449: unique/primary keys in table referenced by foreign keys (TRUNCATE)
    Что это: нельзя TRUNCATE, пока на таблицу ссылаются FK.
    Как чинить: удалять детей/отключать FK/использовать ON DELETE CASCADE, либо DELETE.

  16. ORA-01940: cannot drop a user that is currently connected
    Что это: у пользователя активные сессии.
    Как чинить: завершить сессии (ALTER SYSTEM KILL SESSION …) и затем DROP USER.

  17. ORA-02055: distributed update operation failed; rollback required
    Что это: сбой распределённой транзакции.
    Как чинить: настроить двухфазный коммит, сократить DML через dblinks, обработать возможный частичный откат.

  18. ORA-02089: COMMIT is not allowed in a subordinate session
    Что это: попытка COMMIT в подчинённой распределённой сессии.
    Как чинить: коммитит координатор; убрать явные коммиты внутри вызовов по dblink.

  19. ORA-06519: active autonomous transaction detected and rolled back
    Что это: автономная транзакция не завершена.
    Как чинить: в PRAGMA AUTONOMOUS_TRANSACTION обязательно делать COMMIT/ROLLBACK перед выходом.

  20. ORA-06511: PL/SQL: cursor already open
    Что это: повторный OPEN уже открытого курсора.
    Как чинить: проверять состояние/делать CLOSE перед повторным OPEN.

  21. ORA-06510: PL/SQL: unhandled user-defined exception
    Что это: исключение не перехвачено.
    Как чинить: добавить обработчик EXCEPTION WHEN … THEN …, логировать и возвращать понятную ошибку.

  22. ORA-06592: CASE not found while executing CASE statement
    Что это: ни одна ветка CASE не сработала, а ELSE нет.
    Как чинить: добавить ELSE или гарантировать покрытие всех вариантов.

  23. ORA-01481: invalid number format model
    Что это: неверная маска в TO_CHAR/TO_NUMBER.
    Как чинить: проверить форматные элементы (FM,999D99,MI и др.), локали.

  24. ORA-01843: not a valid month
    Что это: строка не парсится в дату (месяц некорректен).
    Как чинить: корректный TO_DATE с маской, верная NLS_DATE_LANGUAGE.

  25. ORA-01840/01861 (варианты даты): input value not long enough / literal does not match format
    Что это: длина/формат строки даты не совпадают с маской.
    Как чинить: сверить маску и вход (включая разделители).

  26. ORA-03134: connections to this server version are no longer supported
    Что это: слишком старый клиент.
    Как чинить: обновить драйвер/клиент Oracle на поддерживаемую версию.

  27. ORA-28002: the password will expire within N days
    Что это: пароль скоро истечёт.
    Как чинить: сменить пароль; настроить PASSWORD_LIFE_TIME профиля.

  28. ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
    Что это: логин SYS без нужной роли.
    Как чинить: подключаться как SYSDBA/SYSOPER или под другим пользователем.

  29. ORA-27486: insufficient privileges (Scheduler)
    Что это: нет прав на DBMS_SCHEDULER.
    Как чинить: GRANT CREATE JOB/MANAGE SCHEDULER и права на job class/программы.

  30. ORA-27492: unable to run job because of resource limit
    Что это: ограничения класса заданий/ресурсов.
    Как чинить: изменить job class/ресурсную директиву или переносить запуск.

  31. ORA-29913: error in executing ODCIEXTTABLEOPEN callout (external table)
    Что это: проблема чтения внешней таблицы (файлы/директория/драйвер).
    Как чинить: проверить объект DIRECTORY, права ОС/файлы, формат access driver.

  32. ORA-08002: sequence CURRVAL is not yet defined in this session
    Что это: CURRVAL до первого NEXTVAL.
    Как чинить: сначала вызвать sequence.NEXTVAL, затем CURRVAL.

  33. ORA-08004: sequence … exceeds MAXVALUE / reaches limit
    Что это: последовательность дошла до предела.
    Как чинить: ALTER SEQUENCE … INCREMENT BY … MAXVALUE … CYCLE или расширить диапазон.

  34. ORA-12054: cannot set the ON COMMIT refresh attribute
    Что это: невозможен refresh MV ON COMMIT.
    Как чинить: использовать ON DEMAND, обеспечить key-preserved логи/условия.

  35. ORA-12034: materialized view log on … younger than last refresh
    Что это: лог моложе времени последнего refresh.
    Как чинить: полный refresh (COMLETE) или пересоздать лог/МV.

  36. ORA-14300: partitioning key maps to a partition outside range
    Что это: значение вне диапазона секции.
    Как чинить: добавить нужный раздел/интервальный партиционинг, скорректировать ключ.

  37. ORA-12638/12640: credential retrieval/authentication adapter failed
    Что это: сетевое/безопасностное (SQL*Net/TLS/Kerberos).
    Как чинить: проверить sqlnet.ora, wallet/сертификаты, механизмы аутентификации.

  38. ORA-29900/29861/29876 (domain index failures)
    Что это: сбой доменных индексов (Text/Spatial).
    Как чинить: перепостроить/синхронизировать индекс, проверить окружение CTXSYS/MDSYS.

  39. ORA-40444: JSON path expression syntax error
    Что это: синтаксис JSONPath неверен.
    Как чинить: валидировать путь, экранировать $, ключи с пробелами ["key"].

  40. ORA-28150/28115: proxy not authorized / policy violation
    Что это: политики безопасности/прокси-пользователи.
    Как чинить: GRANT CONNECT THROUGH, проверить RLS-политики (DBA_POLICIES) и роли.

  41. ORA-01733: virtual column not allowed here (дополнение)
    Что это: виртуальная колонка в неподдерживаемом месте.
    Как чинить: вычислять в SELECT/материализовать в обычную колонку.

  42. ORA-01735: invalid ALTER TABLE option
    Что это: неподдерживаемая опция в ALTER TABLE.
    Как чинить: сверить синтаксис для версии; возможно, надо ALTER INDEX/CONSTRAINT отдельно.

  43. ORA-01799: a column may not be outer-joined to a subquery
    Что это: (+ )/LEFT JOIN к подзапросу.
    Как чинить: переписать на JOIN с инлайновой таблицей/CTE и корректными условиями.

  44. ORA-03113/03114 (дополнение): end-of-file on communication channel / not connected to ORACLE
    Что это: разрыв соединения/потеря сессии.
    Как чинить: сетевые таймауты, стабильность сервера, логи listener/alert.

  45. ORA-01466: unable to read data – table definition has changed (дополнение)
    Что это: объект изменён во время долгого запроса.
    Как чинить: развести DDL и SELECT по окнам; применять edition-based redefinition.

  46. ORA-29471: DBMS_SQL access denied
    Что это: нет прав на динамический SQL через пакет.
    Как чинить: GRANT EXECUTE ON DBMS_SQL и разрешения на выполняемые объекты.

  47. ORA-29541: class … not found (Java)
    Что это: Java-класс не загружен в БД.
    Как чинить: загрузить через loadjava/CREATE JAVA SOURCE/CLASS, выдать права.

  48. ORA-27370/27371: job “…” disabled / already running
    Что это: состояния job в Scheduler.
    Как чинить: включить/переименовать/изменить расписание; избегать пересечений.

  49. ORA-29276: transfer timeout (UTL_TCP/HTTP)
    Что это: таймаут сетевой передачи.
    Как чинить: увеличить таймауты API, проверить сеть/прокси.

  50. ORA-01712: attempt to drop or rename a user-owned object
    Что это: ограничение на DDL внутри триггеров/предикатов.
    Как чинить: выполнять DDL вне триггеров; использовать DBMS_SCHEDULER/скрипты администрирования.

  1. ORA-04030: out of process memory when trying to allocate
    Что это: процесс (PGA) не смог выделить память.
    Как чинить: уменьшать объёмы сорт/хеш-операций, батчить, следить за PGA_AGGREGATE_TARGET/LIMIT, править запрос/параллелизм, обновить/настроить клиент/драйвер.

  2. ORA-00604: error occurred at recursive SQL level N
    Что это: ошибка во «внутреннем» SQL (системные триггеры логина/DDL, политики, словари).
    Как чинить: смотреть первое последующее сообщение в стеке, проверять логон-триггеры, RLS-политики, профили.

  3. ORA-04043: object does not exist
    Что это: объект не найден в контексте компиляции/вызова (часто PL/SQL).
    Как чинить: префикс схемы, права, перекомпиляция зависящих объектов, проверить синонимы/неймспейсы.

  4. ORA-01775: looping chain of synonyms
    Что это: синонимы ссылаются циклически.
    Как чинить: разорвать цикл: исправить целевой объект/удалить лишний синоним.

  5. ORA-01012: not logged on
    Что это: сессия потеряна/разорвана.
    Как чинить: переподключение, убрать «долгоживущие» курсоры без пинга, включить keepalive/health-checks в пуле.

  6. ORA-01157: cannot identify/lock data file
    Что это: БД не видит/не может залочить datafile.
    Как чинить (ДБА): проверить ФС/права/путь; RECOVER DATAFILE при необходимости; исправить controlfile/asm ссылки.

  7. ORA-01114/01110: write error to data file / data file …
    Что это: ошибка записи в файл данных.
    Как чинить: место/права/диск; проверка ОС/ASM; возможен офлайн/восстановление.

  8. ORA-01109: database not open
    Что это: инстанс не открыт для работы.
    Как чинить: STARTUP до OPEN, устранить причины MOUNT-состояния (восстановление, архивирование).

  9. ORA-01089: immediate shutdown in progress
    Что это: сервер гасится, сессии завершаются.
    Как чинить: корректно отрабатывать retry в клиенте; подождать старта инстанса админами и переподключиться.

  10. ORA-01219: database not open: queries allowed on fixed tables/views only
    Что это: доступ только к X$/V$ на этапе MOUNT/NOMOUNT.
    Как чинить: довести БД до OPEN, завершить восстановление/архивирование.

  11. ORA-01628/01629: max # extents/rollback segments reached (на старых DMT)
    Что это: достигнут лимит экстентов/undo-сегментов.
    Как чинить: (современно) локально-управляемые TBS, увеличить UNDO/переразбить объекты.

  12. ORA-01424: missing or illegal character following the escape character
    Что это: неверное использование ESCAPE в LIKE.
    Как чинить: корректно экранировать и указать ESCAPE '\', проверить «хвост» после escape.

  13. ORA-01730: invalid number of arguments for function
    Что это: неверное число параметров функции/агрегата.
    Как чинить: сверить сигнатуру, убрать лишние/добавить недостающие аргументы.

  14. ORA-01719: outer join operator (+) not allowed in operand of OR
    Что это: старый синтаксис (+ ) вместе с OR.
    Как чинить: перейти на ANSI LEFT/RIGHT JOIN и переписать условие.

  15. ORA-01466 (вариант партиционирования): read data – table definition changed
    Что это: DDL/перемещение партиций во время чтения.
    Как чинить: окна обслуживания для DDL; edition-based redefinition/рефреш MV.

  16. ORA-14074/14075: partition bound must collate higher/overlaps
    Что это: границы партиций перекрываются или нарушают порядок.
    Как чинить: корректные VALUES LESS THAN по возрастанию; проверить коллацию/формат ключа.

  17. ORA-14402: updating partition key column would cause row to move
    Что это: апдейт ключа партиционирования ведёт к миграции строки.
    Как чинить: включить ENABLE ROW MOVEMENT или запрещать такие апдейты.

  18. ORA-14196: specified index is not partitioned
    Что это: операция партиционирования применена к непартиционированному индексу.
    Как чинить: создать локальный/глобальный партиц. индекс или убрать партиц-операцию.

  19. ORA-01555 (Flashback Query вариант): snapshot too old during flashback
    Что это: недоступная версия для AS OF TIMESTAMP/SCN.
    Как чинить: увеличить UNDO_RETENTION/объём UNDO; ближе выбирать время.

  20. ORA-08181: specified number is not a valid system change number
    Что это: некорректный SCN.
    Как чинить: использовать действительный SCN/временную метку; TIMESTAMP_TO_SCN.

  21. ORA-01427 (вариант MERGE): single-row subquery returns more than one row
    Что это: в MERGE скалярный подзапрос вернул >1.
    Как чинить: агрегировать/ограничить; обеспечить уникальность матчинга.

  22. ORA-01452/01451: cannot CREATE UNIQUE INDEX … / column to be modified to NULL
    Что это: конфликт существующих данных с DDL.
    Как чинить: очистить дубликаты/несоответствия; временно DEFERRABLE и почистить.

  23. ORA-20001: constraint violated (из триггера/логики)
    Что это: бизнес-проверка в RAISE_APPLICATION_ERROR.
    Как чинить: исправить вход/логику; логировать параметры для отладки.

  24. ORA-39002/39014/39087: Data Pump job aborted/worker died
    Что это: сбой EXPDP/IMPDP.
    Как чинить: проверить DIRECTORY/права/место, совместимость VERSION, логи джоба; перезапустить с PARALLEL разумно.

  25. ORA-29259: end-of-file reached (UTL_FILE/HTTP)
    Что это: неожиданный EOF.
    Как чинить: проверять длины/размеры, режимы чтения, корректность источника.

  26. ORA-06575: Package or function is in an invalid state
    Что это: объект компилирован с ошибками.
    Как чинить: ALTER … COMPILE, USER_ERRORS; обеспечить валидность зависимостей.

  27. ORA-04045: errors during recompilation/revalidation
    Что это: сбой при автоматической перевалидации объекта.
    Как чинить: вручную компилировать по зависимостям; устранить первопричину (USER_DEPENDENCIES, USER_ERRORS).

  28. ORA-01578: ORACLE data block corrupted (дополнение)
    Что это: порча блока.
    Как чинить (ДБА): RMAN block media recovery/восстановление из бэкапа; исключить плохой блок через DBMS_REPAIR временно.

  29. ORA-12899 (многобайт): value too large (byte vs char semantics)
    Что это: строка укладывается по символам, но не по байтам.
    Как чинить: хранить в CHAR-семантике/увеличить размер; проверять NLS_LENGTH_SEMANTICS.

  30. ORA-00984: column not allowed here
    Что это: колонка используется там, где допускается только литерал/выражение (например, DEFAULT).
    Как чинить: заменить на допустимое выражение, использовать триггер/генерируемую колонку.

  31. ORA-24323: value not allowed
    Что это: неверное значение bind-переменной/атрибута в драйвере.
    Как чинить: корректно маппить типы, не передавать NULL туда, где запрещено.

  32. ORA-01453: SET TRANSACTION must be first statement of transaction
    Что это: команда не первая.
    Как чинить: выполнять сразу после начала сессии/после коммита.

  33. ORA-08177 (вариант batch): can’t serialize access …
    Что это: конфликт в SERIALIZABLE при массовых апдейтах.
    Как чинить: ретрай с экспоненциальной паузой, снизить конфликтность ключей, рассмотреть READ COMMITTED.

  34. ORA-27102/27103: out of memory / shared memory realm does not exist
    Что это: ОС-лимиты SGA/PGA или неверные параметры.
    Как чинить: увеличить shm/hugepages/ulimits; выровнять MEMORY_TARGET/SGA_TARGET/PGA_TARGET.

  35. ORA-08102 (дополнение): index key not found
    Что это: «сломанный» индекс.
    Как чинить: перестроить индекс (ALTER INDEX … REBUILD), проверить дисковую подсистему.

  36. ORA-07445 (дополнение): core dump in function …
    Что это: падение на нативном уровне.
    Как чинить: патчи PSU/RU, SR в Oracle Support, минимизировать воспроизводимый кейс.

  37. ORA-29261: bad argument passed to UTL_ call*
    Что это: неверные параметры UTL_FILE/HTTP/SMTP.
    Как чинить: сверить режимы (r/w/a), кодировки, длины буфера.

  38. ORA-20011: Approximate NDV failed: strings longer than 64 characters (статистики)
    Что это: ошибка при оценке кардинальности.
    Как чинить: собрать статистики с подходящими опциями (METHOD_OPT, histograms), обновить БД/пакеты.

  39. ORA-01438 (дополнение к NUMBER): too large precision for target
    Что это: число не помещается по p,s при CAST/INSERT.
    Как чинить: увеличить точность колонки/каста; предварительно округлять.

  40. ORA-39826: Direct path load of view or synonym is not supported
    Что это: попытка direct-path загрузки через view/синоним.
    Как чинить: грузить базовую таблицу; для view — INSTEAD OF триггеры и обычный path.

Быстрые рецепты диагностики

  • Понять текст ошибки:
    oerr ora 00942 (на сервере с утилитой OERR) или смотреть в alert.log, трассы.

  • Узнать, какое ограничение сработало:

SELECT c.constraint_name, c.constraint_type, col.column_name
FROM user_constraints c
JOIN user_cons_columns col USING (constraint_name)
WHERE c.table_name = 'MY_TABLE' AND c.status='ENABLED';
  • Ошибки компиляции PL/SQL:

SELECT name, type, line, position, text
FROM user_errors
ORDER BY name, sequence;
  • Права/доступность объекта:

SELECT * FROM all_tab_privs WHERE table_name='T';
SELECT * FROM all_objects WHERE object_name='T';
  • Кто/что блокирует:

SELECT * FROM dba_blockers;
SELECT * FROM dba_waiters;
  • Найти синонимы и реальные объекты:

SELECT owner, synonym_name, table_owner, table_name
FROM all_synonyms WHERE synonym_name='EMP';

Общие советы, чтобы меньше ловить ошибки

  • Явно приводите типы (TO_DATE, TO_NUMBER) и форматы; не полагайтесь на NLS.

  • Держите ключевые столбцы в правильных типах (не храните числа и даты как строки).

  • Пишите DDL/PLSQL в идемпотентном стиле, обрабатывайте ожидаемые исключения.

  • Следите за индексами и кардинальностью — это снижает блокировки и «snapshot too old».

  • Логируйте входные данные и параметры — это ускоряет поиск причин.

  • Старайтесь использовать MERGE для upsert-логики, а не «INSERT + ловля ORA-00001».

  • Разделяйте DDL и DML по транзакциям; большие батчи — маленькими порциями.

  • Тестируйте на тех же NLS/CHARSET, что и прод.

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии