Ниже — большая (но, конечно, не абсолютно «все-все») справка по самым частым ошибкам Oracle SQL/PLSQL: что означает код, когда возникает и как исправлять. Каждая запись: код → краткое описание → типичный сценарий → решение (+ иногда пример).
Для поиска по коду ошибки используйте поиск по браузеру.
Шпаргалка по ошибкам Oracle (SQL/PL/SQL)
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';
ORA-00904: invalid identifier
Что это: неверный идентификатор (столбец/алиас/функция).
Когда бывает: опечатка, кавычные имена, столбца нет в этой таблице/подзапросе.
Как чинить:
проверить схему и точные имена столбцов,
убрать двойные кавычки (или использовать их везде, если уж начали),
убедиться, что алиас допустим в нужной части запроса.
ORA-00942: table or view does not exist
Что это: таблица/представление недоступны.
Когда бывает: не та схема (HR.EMPLOYEESvsEMPLOYEES), нет прав, объект ещё не создан/невалиден.
Как чинить:
сослаться на объект с префиксом схемы:
schema.table,выдать права:
GRANT SELECT ON schema.table TO user;,проверить синонимы (
USER|ALL|DBA_SYNONYMS).
ORA-00933: SQL command not properly ended
Что это: синтаксис SQL нарушен.
Когда бывает: лишняя запятая/скобка; попытки писатьLIMITкак в MySQL;WITHбез SELECT и т.п.
Как чинить:
сверить синтаксис под вашу версию Oracle,
для пагинации —
FETCH FIRST n ROWS ONLY(12c+) илиROWNUM.
ORA-00936: missing expression
Что это: где-то не хватает выражения.
Когда бывает:SELECT FROM …без списка столбцов, пробелы/скобки съели выражение.
Как чинить: дописать выражение, проверить скобки и запятые.ORA-00907: missing right parenthesis
Что это: нет закрывающей скобки/неверный синтаксис в списке столбцов/функции.
Как чинить: проверить баланс скобок, особенно вCREATE TABLE,CHECK, вызовах функций.ORA-01400: cannot insert NULL into (… )
Что это:NOT NULLстолбец получаетNULL.
Как чинить:
задать значение,
добавить
DEFAULT,пересмотреть бизнес-логику/ограничение.
ORA-01438: value larger than specified precision
Что это: число не помещается вNUMBER(p,s)(илиINTEGER/DECIMAL).
Как чинить:
увеличить precision/scale,
округлять/обрезать перед записью:
TRUNC,ROUND.
ORA-12899: value too large for column
Что это: строка длиннее, чемVARCHAR2(n)/CHAR(n)/RAW(n).
Как чинить:
увеличить размер,
валидировать длину на входе,
убедиться в кодировке (многобайтовые символы!).
ORA-01722: invalid number
Что это: попытка привести нечисловой текст к числу.
Когда бывает: неявное преобразование при сравнении/вставке.
Как чинить:
явно приводить типы (
TO_NUMBERс форматом),чистить данные (
REGEXP_REPLACE),колонки хранить в корректных типах (не в
VARCHAR2).
ORA-01861 / ORA-01830 / ORA-01858: дата/формат не совпадает
Что это: строка не соответствует формату даты.
Как чинить:
использовать явный
TO_DATE('2025-09-05','YYYY-MM-DD'),выставить
NLS_DATE_LANGUAGE/NLS_DATE_FORMATлокально, не полагаться на сессию,для timestamp —
TO_TIMESTAMP.
ORA-06502: PL/SQL: numeric or value error
Что это: выход за размер переменной, конверсия типов, проблемы с Юникодом.
Как чинить:
расширить типы переменных (
VARCHAR2(32767)в PL/SQL),проверять длины/диапазоны,
ловить и логировать значения, вызывающие сбой.
ORA-06550: line …, column …: PLS-…
Что это: ошибки компиляции PL/SQL (процедуры/функции/триггеры/пакеты).
Как чинить:
посмотреть детали:
SHOW ERRORS PROCEDURE proc_name;
-- или
SELECT * FROM user_errors WHERE name='PROC_NAME' ORDER BY sequence;
исправить синтаксис/типы/привилегии.
ORA-04098: trigger is invalid and failed re-validation
Что это: триггер невалиден.
Как чинить:
SHOW ERRORS TRIGGER trg;→ исправить код,убедиться, что зависимые объекты существуют и валидны.
ORA-04091: table is mutating, trigger/function may not see it
Что это: «мутация» — row-level триггер читает/меняет ту же таблицу.
Как чинить:
перенести логику в statement-level триггер + временное хранилище изменений,
использовать
compound trigger(11g+),вынести проверку в constraint/материализованное представление/деферрируемые ограничения.
ORA-02291: integrity constraint violated – parent key not found
Что это: внешний ключ ссылается на несуществующий родитель.
Как чинить:
сначала вставить родителя, потом ребёнка,
включить
DEFERRABLE INITIALLY DEFERRED, если нужна отложенная проверка.
ORA-02292: integrity constraint violated – child record found
Что это: нельзя удалить родителя — существуют дети.
Как чинить:
удалить/переназначить дочерние строки,
либо
ON DELETE CASCADE/SET NULLв FK (если допустимо).
ORA-01555: snapshot too old
Что это: версия строк для консистентного чтения уже перезаписана (UNDO мал/долгий запрос).
Как чинить:
увеличить UNDO (размер/время удержания),
оптимизировать долгие запросы/батчи,
разбивать транзакции,
использовать
FLASHBACK(если подходит).
ORA-08177: can’t serialize access for this transaction
Что это: конфликт в уровне изоляцииSERIALIZABLE.
Как чинить:
повторно выполнять транзакцию при конфликте,
рассмотреть
READ COMMITTED/READ ONLY,уменьшить конкуренцию по ключам.
ORA-01652 / ORA-01653: unable to extend temp segment / table
Что это: не хватает пространства в TEMP/табличном пространстве.
Как чинить (ДБА):
добавить tempfile/datafile,
включить авторасширение,
переписать запрос (уменьшить сорт/хеш), индексы.
ORA-03113 / ORA-03114 / ORA-12547: потеря соединения
Что это: канал связи оборван/процесс упал.
Как чинить:
проверить сетевую стабильность, listener/серверные логи (
alert.log,trace),переподключение с retry в клиенте.
ORA-12514 / ORA-12541 / ORA-12154 (TNS): проблемы с listener/имён сервисов
Что это: слушатель не знает сервис, порт/хост недоступен, неверныйtnsnames.ora.
Как чинить:
проверить
lsnrctl status, SID/SERVICE_NAME, порт,исправить строку подключения; для EZConnect:
host:port/service_name.
ORA-28000: the account is locked
Что это: учётка заблокирована (политика/ошибочные логины).
Как чинить (ДБА):ALTER USER user ACCOUNT UNLOCK;+ смена пароля.
Профилактика: уменьшитьFAILED_LOGIN_ATTEMPTS/настроить профили.ORA-28001: the password has expired
Как чинить: сменить пароль при входе илиALTER USER … IDENTIFIED BY ….
Профилактика: политика паролей в профиле (PASSWORD_LIFE_TIME).ORA-28040 / ORA-28085: no matching authentication protocol / clamp down
Что это: несовместимые версии клиента/сервера/алгоритмы.
Как чинить:
обновить client,
настроить
SQLNET.ALLOWED_LOGON_VERSION[_SERVER].
ORA-01950: no privileges on tablespace
Что это: нет квоты на TBS.
Как чинить (ДБА):ALTER USER u QUOTA UNLIMITED ON users;или выдать конкретную квоту.ORA-01720: grant option does not exist for …
Что это: вы делегируете право, которым не владеете сGRANT OPTION.
Как чинить: просить владельца объекта выдать права вам сGRANT OPTION.ORA-02429: cannot drop index used for enforcement of unique/primary
Что это: удаляется индекс, поддерживающийPRIMARY KEY/UNIQUE.
Как чинить: удалять ограничение (или переключать на другой индекс), а не индекс.ORA-25408: can not safely replay call (RAC/TAF/DRCP)
Что это: не все вызовы можно прозрачно повторить.
Как чинить:
сделать операции идемпотентными,
хранить состояние сессии вне БД,
корректно обрабатывать повтор.
ORA-29275: partial multibyte character
Что это: обрезали строку посередине многобайтного символа (UTF-8 и т.п.).
Как чинить:
работать в символах, а не байтах,
использовать функции
SUBSTRC,LENGTHC.
Ошибки в Oracle SQL. Продолжение:
ORA-00979: not a GROUP BY expression
Что это: в SELECT есть неагрегированный столбец, которого нет вGROUP BY.
Как чинить: добавить столбец вGROUP BYили агрегировать.ORA-01422: exact fetch returns more than requested number of rows (PL/SQL)
Что это:SELECT INTOвернул >1 строки.
Как чинить:
ограничить запрос (
WHERE,FETCH FIRST 1 ROW),использовать курсор/коллекцию.
ORA-01403: no data found (PL/SQL)
Что это:SELECT INTOне вернул строк.
Как чинить:
обработать исключение,
проверять существование (COUNT/EXISTS) перед выборкой.
ORA-29257/29259: утилиты UTL_HTTP/SMTP/FILE
Что это: проблемы с ACL/сетевыми доступами/файлами.
Как чинить (ДБА): настроить ACL:DBMS_NETWORK_ACL_ADMIN.ORA-24247: network access denied by access control list (ACL)
Что это: заблокован сетевой вызов из БД.
Как чинить: выдать привилегии на хост/порт в ACL для нужной схемы.ORA-01882: timezone region not found
Что это: некорректное имя таймзоны.
Как чинить: использовать валидные регионыTZизV$TIMEZONE_NAMES.ORA-02049: timeout: distributed transaction waiting for lock / ORA-00054: resource busy
Что это: блокировки.
Как чинить:
сократить транзакции, ставить индексы, уменьшать конкуренцию,
повторить с
NOWAIT/WAIT n,диагностировать блокировки:
V$LOCK,DBA_BLOCKERS/WAITERS.
ORA-39213: Metadata import/export
Что это: проблемы приDATAPUMP(несовместимость версий/привилегий).
Как чинить:VERSION, совместимость, праваDATAPUMP_EXP_FULL_DATABASE/IMP_*.
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для тяжёлых объектов; перезагрузка как временная мера.
ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT
Что это: лимит PGA превышен.
Как чинить: оптимизировать запросы (хеш-соединения/сортировки), ограничить одновременность, поднятьPGA_AGGREGATE_LIMIT(с осторожностью).ORA-04061 / ORA-04065 / ORA-04068: package has changed / state discarded
Что это: пакет/подпрограмма перекомпилированы, состояние сессии потеряно.
Как чинить: пересобрать зависимости, по возможности избегать «сессионного» состояния в пакетах; повторить вызов; следить за валидностьюUSER_OBJECTS.STATUS.ORA-06508: PL/SQL: could not find program unit being called
Что это: вызываемый объект невалиден/не найден.
Как чинить:ALTER ... COMPILE, проверить зависимости (USER_DEPENDENCIES), права на выполнение.ORA-01031: insufficient privileges
Что это: нет прав на действие/объект.
Как чинить: выдать нужныеGRANT(на объект или системные), проверить рольset role, синонимы/цепочку прав.ORA-01017: invalid username/password; logon denied
Что это: неверные креды или политика парольной проверки.
Как чинить: проверить строку подключения, регистр символов, истечение пароля (см. ORA-28001), профили проверки.ORA-01476: divisor is equal to zero
Что это: деление на 0.
Как чинить: защититьсяNULLIF(den,0)/CASE WHEN den=0 THEN ..., чистить данные.ORA-01427: single-row subquery returns more than one row
Что это: скалярный подзапрос возвращает >1 строки.
Как чинить: добавьте агрегацию/ограничение (MIN/MAX/FETCH FIRST 1 ROW) или перестройте join.ORA-00932: inconsistent datatypes
Что это: несовместимые типы в операции/сравнении.
Как чинить: явные конверсии с форматами; выровнять типы колонок, особенно для дат/чисел.ORA-00918: column ambiguously defined
Что это: неоднозначное имя столбца при join/подзапросе.
Как чинить: квалифицируйте именаt.colили задайте уникальные алиасы.ORA-02014: cannot select FOR UPDATE from view with DISTINCT/aggregation
Что это: нельзя блокировать через «необновляемое» представление.
Как чинить: блокируйте базовую таблицу; перепишите представление безDISTINCT/агрегаций либо используйте INSTEAD OF триггеры для DML.ORA-02091: transaction rolled back (+ сопутствующая первопричина)
Что это: транзакция откатилась из-за триггера/ошибки/распределёнки.
Как чинить: смотреть сопутствующий код, логировать исключения в триггерах, делать операции идемпотентными.ORA-04020: deadlock detected while trying to lock object
Что это: дедлок на уровне объектов/библиотечных кэш-локов.
Как чинить: уменьшить параллельные перекомпиляции/DDL; разводить DDL по времени; избегать частых инвалидаций.ORA-03135 / ORA-12537 / ORA-12570: connection lost contact / handshake failed
Что это: обрыв/SSL-рукопожатие.
Как чинить: сетевые таймауты,SQLNET.INBOUND_CONNECT_TIMEOUT, версии шифров; выровнять клиент/сервер и TLS-настройки.ORA-12170: TNS: Connect timeout occurred
Что это: таймаут при подключении.
Как чинить: маршрут/фаервол, порт listener,CONNECT_TIMEOUT/RECV_TIMEOUT, проверкаlsnrctl status.ORA-25153: Temporary Tablespace is Empty
Что это: у TEMP нет tempfile.
Как чинить (ДБА): добавить tempfile:ALTER TABLESPACE temp ADD TEMPFILE '...' SIZE 1G AUTOEXTEND ON;ORA-08103: object no longer exists
Что это: объект удалён/пере-создан во время доступа.
Как чинить: стабилизировать DDL-окна, повтор запроса, проверить recycle bin/синонимы.ORA-38301: object not in RECYCLE BIN
Что это: попытка восстановить из корзины то, чего там нет.
Как чинить: проверитьUSER_RECYCLEBIN, восстановить из бэкапа/Datapump, отключитьRECYCLEBINесли не нужен.ORA-01466: unable to read data – table definition has changed
Что это: DDL изменила объект во время чтения (консистентность).
Как чинить: развести длительные SELECT и DDL, использовать materialized view/реплику.ORA-01791: not a SELECTed expression
Что это: выражение используется вORDER BY/GROUP BY, но недопустимо с текущим синтаксисом.
Как чинить: скорректировать выражение либо вынести вSELECTс алиасом.ORA-00933: SQL command not properly ended (вариант с
RETURNING)
Когда: неправильное местоRETURNING/многозначныйVALUES.
Как чинить:INSERT ... VALUES (...) RETURNING col INTO :b;(не в середине).ORA-00907: missing right parenthesis (вариант DDL с CHECK)
Когда: сложныеCHECKс функциями/регекспом.
Как чинить: упростить выражение, проверить экранирование скобок/кавычек.- ORA-22813: operand value exceeds system limits
Что это: слишком большой LOB/коллекция/объект.
Как чинить: стримить LOB (кусочно), увеличить лимиты, нормализовать модель. ORA-22992: cannot use LOB locators selected from remote tables
Что это: LOB через DB-link в неподдерживаемой операции.
Как чинить: материализовать локально (CTAS), использоватьDBMS_LOB.COPYна стороне источника.ORA-06512: at line … (stack trace)
Что это: не ошибка сама по себе, а «след» места, где возникло исключение.
Как чинить: смотреть первое сообщение в стеке + строки кода; добавить логирование параметров.ORA-20000..ORA-20999: user-defined error
Что это:RAISE_APPLICATION_ERROR.
Как чинить: прочитать текст (часто бизнес-правило), исправить входные данные/логику; при необходимости логироватьSQLERRM.PLS-00302 / PLS-00306: component ‘…’ must be declared / wrong number or types of arguments
Что это: неверная сигнатура вызова.
Как чинить: сверить параметры и типы; проверить перегрузки; убедиться, что видимость пакета корректна (синонимы,AUTHID).PLS-00201: identifier must be declared
Что это: объект недоступен/не объявлен в области видимости.
Как чинить: добавитьGRANT EXECUTE/USAGE, префикс схемы или объявление в спецификации.ORA-00942 при синонимах
Когда: есть приватный синоним, но прав на базовый объект нет.
Как чинить: выдайте права на базовый объект или используйте публичный синоним/префикс схемы.ORA-01405: fetched column value is NULL (старые драйверы)
Что это: Cursor-fetch в средах, где NULL не ожидается.
Как чинить: обновить драйвер/ODP, обработать NULL в коде.ORA-01720: grant option does not exist (добавочно)
Когда: пытаетесьGRANT ... WITH GRANT OPTION, не будучи владельцем/без права делегировать.
Как чинить: просить владельца выдать право сWITH GRANT OPTIONили делатьGRANTот владельца.ORA-02049: timeout: distributed transaction waiting for lock
Что это: таймаут ожидания блокировки в распределённой/обычной транзакции.
Как чинить: индексы по условиям, короче транзакции, порядок обновлений,NOWAIT/WAIT, анализDBA_BLOCKERS/WAITERS.ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
Что это: объект/строки заняты.
Как чинить: убратьNOWAITили увеличитьWAIT, перенести окно, снизить конфликтность, использовать более точные WHERE+индексы.ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found
Что это: дубликаты мешают создать уникальный индекс/ограничение.
Как чинить: найти и устранить дубли, затем создавать индекс/constraint; иногда —DEFERRABLE+ очистка.ORA-00955: name is already used by an existing object
Что это: имя занято (таблица/индекс/синоним/тип).
Как чинить: переименовать, удалить, проверить пространство имён (разные типы объектов).ORA-02264: name already used by an existing constraint
Что это: имя ограничения уже существует в схеме.
Как чинить: выбрать уникальное имя constraint.ORA-22804: remote operations not permitted on object tables or user-defined types
Что это: UDT/объектные таблицы через DB-link.
Как чинить: выполнять локально или через промежуточную материализацию.ORA-00904 (вариант с кавычными идентификаторами)
Когда:"WeirdCase"в DDL → потом забыли кавычки в DML.
Как чинить: избегать кавычных имён; если уже есть — всегда указывать в том же регистре и в кавычках.ORA-30081: invalid data type for datetime/interval arithmetic
Что это: неверные операции сINTERVAL/DATE/TIMESTAMP.
Как чинить: использовать корректные функции (NUMTODSINTERVAL,ADD_MONTHS,INTERVAL '1' DAY), не смешивать строковые типы.ORA-39171/39165 (Data Pump): job is experiencing a resumable wait / schema not found
Что это: проблемы с правами/табличными пространствами/директориями.
Как чинить: проверитьDIRECTORYобъект и права на него, квоты TBS, совместимостьVERSION.ORA-29855 / ORA-29861 (domain/index) и ctx ошибки
Что это: проблемы с контекстными/доменными индексами (Text/Spatial и т.п.).
Как чинить: валидировать параметры индекса, пересоздать/синхронизировать, проверить наличие соответствующих компонентов (CTXSYS и пр.).ORA-00979: not a GROUP BY expression (дополнение)
Когда: аналитики путаютGROUP BYиOVER().
Как чинить: вынесите агрегации в аналитические функцииSUM(...) OVER (PARTITION BY ...)либо добавьте недостающие колонки вGROUP BY.ORA-01733: virtual column not allowed here
Что это: виртуальную колонку пытаются обновить/использовать в недопустимом контексте.
Как чинить: обновлять базовые поля; проверять ограничения на генерируемые колонки.ORA-29876: failed in the execution of the ODCIINDEX routine*
Что это: ошибка пользовательского индекса в колбэках.
Как чинить: смотреть трассы, спецификации ODCI, пересоздавать индекс/пакеты.ORA-01489: result of string concatenation is too long
Что это: конкатенация вывела за лимитVARCHAR2в SQL (4000)/PLSQL (32767).
Как чинить: использовать CLOB (TO_CLOB), собирать по частям, усечь.ORA-02070: database does not support this feature (через DB-link)
Что это: удалённая БД не поддерживает синтаксис/функцию.
Как чинить: переписать запрос на совместимый, материализовать данные локально.ORA-01536: space quota exceeded for tablespace
Что это: исчерпана квота пользователя.
Как чинить (ДБА): увеличить квоту/переназначить TBS; как разработчик — чистить/архивировать.ORA-00942 при временных таблицах
Когда:GLOBAL TEMPORARY TABLEсоздана в другой схеме/сеансе.
Как чинить: обращаться с префиксом схемы; помнить, что данные — сеансовые/транзакционные.ORA-04098 (дополнение для триггеров)
Когда: зависимость триггера на функцию/пакет невалидна.
Как чинить: перекомпилировать всё дерево зависимостей (utlrp.sql), следить заUSER_ERRORS.ORA-01461: can bind a LONG value only for insert into a LONG column
Что это: попытка связать длинную строку вVARCHAR2вместоCLOB/LONG.
Как чинить: перейти на CLOB, обновить драйвер/ORM маппинг.ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion
Что это: конверсия LOB в буфер меньшего размера.
Как чинить: читать кусками (DBMS_LOB.SUBSTR), увеличивать буферы на клиенте.ORA-01653: unable to extend table … by … in tablespace …
Что это: не хватает места в табличном пространстве.
Как чинить (ДБА): добавить datafile/включить авторасширение; как разработчик — уменьшить объём операции, батчить.
ORA-01000: maximum open cursors exceeded
Что это: превышен лимит открытых курсоров в сессии.
Как чинить: закрывать курсоры в приложении; увеличитьOPEN_CURSORS; мониторитьv$open_cursor.ORA-00911: invalid character
Что это: недопустимый символ (точка с запятой в середине, «умные» кавычки, скрытые символы).
Как чинить: убрать лишние символы; использовать одинарные'для строк; убедиться в кодировке.ORA-00920: invalid relational operator
Что это: неверный оператор сравнения (==,===,=>и т.п.).
Как чинить: использовать SQL-операторы= <> <= >= BETWEEN IN LIKE.ORA-00922: missing or invalid option
Что это: неверная опция DDL/ALTER.
Как чинить: сверить синтаксис под вашу версию; убрать неподдерживаемые ключи.ORA-00923: FROM keyword not found where expected
Что это: пропущенFROMили нарушен порядок ключевых слов.
Как чинить: перепроверить порядокSELECT … FROM … WHERE ….ORA-00937: not a single-group group function
Что это: смешаны агрегаты и неагрегированные колонки безGROUP BY.
Как чинить: добавить колонки вGROUP BYили завернуть в агрегат.ORA-00972: identifier is too long
Что это: имя длиннее лимита (30 байт для обычных объектов до 12c).
Как чинить: укорачивать имена; избегать кавычных идентификаторов.ORA-00913: too many values
Что это: вINSERT … VALUESстолбцов меньше, чем значений (или подзапрос возвращает лишние).
Как чинить: выровнять списки столбцов и значений.ORA-00900: invalid SQL statement
Что это: конструкция не поддерживается в данном контексте/версии.
Как чинить: проверить, что это именно SQL/PLSQL Oracle; переписать на эквивалентный синтаксис.ORA-01410: invalid ROWID
Что это: некорректный/устаревший ROWID.
Как чинить: не кэшировать ROWID надолго; получать заново из текущих выборок/индексов.ORA-01450: maximum key length (xxx) exceeded
Что это: суммарная длина ключевых колонок индекса превышает лимит блока/платформы.
Как чинить: укоротить колонки, использовать префиксные индексы по строкам (SUBSTR(col,1,n)), перейти на таблицу с большимBLOCK_SIZE.ORA-01442: column to be modified to NOT NULL is already NOT NULL
Что это: бессмысленная операция изменения.
Как чинить: ничего не делать или проверять текущие атрибуты перед DDL.ORA-01430: column being added already exists in table
Что это: пытаетесь добавить уже существующий столбец.
Как чинить: переименовать/использоватьMODIFY; предварительно проверятьALL_TAB_COLS.ORA-04021: timeout occurred while waiting to lock object
Что это: ожидание DDL/библиотечного лока на объект.
Как чинить: развести DDL по времени; уменьшить конкуренцию на перекомпиляции; повторить позже.ORA-04063: view/procedure/function has errors
Что это: объект с ошибками компиляции/валидности.
Как чинить:SHOW ERRORS/USER_ERRORS; исправить код/зависимости; перекомпилировать.ORA-04088: error during execution of trigger
Что это: исключение внутри триггера.
Как чинить: логировать входные данные, смотреть стек (ORA-06512), оборачивать ожидаемые случаи в обработчики.ORA-24344: success with compilation error
Что это: PL/SQL компилируется с ошибками.
Как чинить: смотретьUSER_ERRORSи исправлять по строкам/позициям.ORA-24381: error(s) in array DML
Что это: пакетные привязки/array DML вернули частичные ошибки.
Как чинить: анализSQL%BULK_EXCEPTIONSв PL/SQL; корректировать данные; разбивать батчи.ORA-06501: PL/SQL: program error
Что это: общий сбой выполнения (часто из-за несогласованности версий/LOB/памяти).
Как чинить: локализовать участок, минимизировать кейс, проверить драйвер/пакеты/LOB-операции.ORA-06504: PL/SQL: Return types of Result Set variables are not compatible
Что это: несовпадение типов курсора между вызывающим и возвращаемым.
Как чинить: выровнять типы записей/REF CURSOR; использовать типы из пакета-спецификации.ORA-06532 / ORA-06533: subscript outside of limit / null subscript
Что это: выход за границы коллекций/ассоциативных массивов.
Как чинить: проверять индексы, использоватьEXISTS, корректно инициализировать коллекции.PLS-00103: encountered the symbol …
Что это: синтаксическая ошибка PL/SQL.
Как чинить: проверить пропущенные;/END/скобки, порядок секцийDECLARE/BEGIN/EXCEPTION/END.PLS-00364: loop index variable use is not allowed
Что это: попытка присвоить или изменить индекс FOR-цикла.
Как чинить: использовать отдельную переменную.PLS-00405: subquery not allowed in this context
Что это: подзапрос в запрещённом месте (например, в чек-ограничении в PL/SQL выражении).
Как чинить: вынести в SQL-оператор или предварительную переменную/таблицу.ORA-29280: invalid directory path (UTL_FILE)
Что это: объект DIRECTORY не существует/нет прав.
Как чинить:CREATE DIRECTORYиGRANT READ, WRITE ON DIRECTORY … TO ….ORA-29283: invalid file operation
Что это: ошибка файловой операции (путь/права/существование).
Как чинить: проверить путь, права, режим; ловить исключения UTL_FILE.ORA-06550 + PLS-00201: identifier must be declared
Что это: нет видимости объекта в PL/SQL.
Как чинить:GRANT EXECUTE/префикс схемы; вынести спецификацию.ORA-00600: internal error code, arguments: […]
Что это: внутренняя ошибка ядра.
Как чинить: искать по аргументамORA-00600в поддержке Oracle; обеспечить трассировку, собрать минимальный кейс; часто требуется патч/апдейт.ORA-07445: exception encountered: core dump
Что это: аварийное завершение серверного процесса на нативном уровне.
Как чинить: обратиться кalert.log/трассам; обновить/пропатчить; проверить нестандартные расширения.ORA-19809 / ORA-19815: limit exceeded for recovery files
Что это: архивные логи заполнили FRA.
Как чинить (ДБА): увеличитьDB_RECOVERY_FILE_DEST_SIZE, бэкап/удалить устаревшие archive logs, настроить RMAN.ORA-16014/16038: log X sequence# not archived / log cannot be archived
Что это: проблемы с архивированием redo.
Как чинить: проверить место/права; восстановить работуARCn; бэкапить чаще.ORA-38760: This database instance failed to turn on flashback database
Что это: флэшбэк не включился.
Как чинить: корректно настроить FRA, разрешитьDB_FLASHBACK_RETENTION_TARGET, включитьFLASHBACK ON.ORA-02041: client database did not begin a transaction (dblink)
Что это: распределённая транзакция ожидается, но не начата.
Как чинить: убедиться вcommit/rollback, настройках двухфазного коммита; минимизировать DML через dblink.ORA-02019: query blocked by RLS policy
Что это: политика VPD/FGAC ограничила доступ.
Как чинить: проверить политикиDBA_POLICIES; скорректировать predicate-функцию или выдачу прав.ORA-28113: policy predicate has error
Что это: ошибка в функции политики безопасности.
Как чинить: отладить predicate-функцию, смотретьUSER_ERRORS.ORA-01732: data manipulation operation not legal on this view
Что это: DML по необновляемому представлению.
Как чинить: INSTEAD OF триггеры, либо DML по базовым таблицам.ORA-01779: cannot modify a column which maps to a non key-preserved table
Что это: обновление через join-view без key-preservation.
Как чинить: обновлять базовую таблицу; обеспечить key-preserved join или INSTEAD OF триггер.ORA-06553: PLS-306/PLS-307 (wrong number/types)
Что это: несовпадение параметров вызова (часто сXMLTYPE,JSON, UDT).
Как чинить: выровнять типы, использовать корректные конструкторы.ORA-29400: data cartridge error
Что это: ошибка в внешнем движке/доменном индексе/карридже.
Как чинить: смотреть текст под-ошибки, логи компонента; пересоздавать индекс/пакет.ORA-08102: index key not found / ORA-01578: ORACLE data block corrupted
Что это: логическая/физическая порча блока/индекса.
Как чинить (ДБА):ANALYZE … VALIDATE STRUCTURE, перестроить индекс; для порчи блока — RMAN-восстановление, блок-media recovery.ORA-29273: HTTP request failed (UTL_HTTP)
Что это: сетевой сбой/ACL/SSL.
Как чинить: ACL, валидные сертификаты (wallet), таймауты, прокси.ORA-29532: Java call terminated by uncaught Java exception
Что это: исключение из встроенной Java.
Как чинить: смотреть текст Java-исключения; обновить Java-класс; проверить права Java-песочницы.ORA-31011 / ORA-19202: XML parsing failed
Что это: плохо сформированный XML/кодировка.
Как чинить: валидировать XML, указатьAL32UTF8, использоватьXMLPARSE.ORA-40442 / ORA-40441 (JSON): invalid JSON path / not a JSON
Что это: неверный JSONPath или данные не JSON.
Как чинить: валидироватьIS JSON, исправить путь, хранить вJSON-колонках (23c)/CLOBс проверкой.ORA-56901: non-JSON character found in JSON textual value
Что это: сломанный JSON.
Как чинить: чистить вход, использоватьJSON_TRANSFORM/JSON_MERGEPATCHвместо ручной склейки.ORA-12801: error signaled in parallel query server
Что это: ошибка в параллельном сервере (вторичное сообщение).
Как чинить: искать первичную ошибку в стеке; снизить DOP; проверить статистики/память PQ.ORA-01555 (вариант с долгими курсорами)
Что это: «snapshot too old» при длительном чтении курсора.
Как чинить: коммитить реже «между» выборками; увеличить UNDO_RETENTION; переписать на более селективный план.ORA-27300/27301/27302: OS system dependent operation
Что это: ошибки уровня ОС (job scheduler, внешние прогоны).
Как чинить: права ОС, пути, лимиты ulimit; корректные скрипты дляDBMS_SCHEDULER.ORA-06598: insufficient INHERIT PRIVILEGES
Что это: безопасность ролей (минимизация привилегий, 12c+).
Как чинить:GRANT INHERIT PRIVILEGES ON USER … TO …при необходимости.ORA-28547 / ORA-28500: connection to server failed, probable Net8 admin error (hetero services)
Что это: проблемы с HS/ODBC gateway.
Как чинить: проверитьlistener.ora,tnsnames.ora,initSID.oragateway; версии драйверов.
ORA-00060: deadlock detected while waiting for resource
Что это: дедлок транзакций.
Как чинить: упорядочить порядок обновлений, ставить индексы по условиям, дробить транзакции, повторять при ловле дедлока; анализировать трассу дедлока изtrace/alert.log.ORA-00018: maximum number of sessions exceeded
Что это: достигнут предел сессий.
Как чинить: увеличитьSESSIONS, включить пул соединений, закрывать простаивающие сессии.ORA-00020: maximum number of processes (… ) exceeded
Что это: превышен лимит процессов инстанса.
Как чинить: увеличитьPROCESSES, оптимизировать пул соединений/джобы.ORA-01008: not all variables bound
Что это: не все bind-переменные заданы.
Как чинить: проверить количество:-плейсхолдеров и привязок в драйвере/ORM.ORA-01036: illegal variable name/number
Что это: неверные имена/число bind-переменных.
Как чинить: не использовать зарезервированные/дубли имён; выровнять плейсхолдеры и привязки.ORA-01045: user … lacks CREATE SESSION privilege; logon denied
Что это: у пользователя нет права на логин.
Как чинить:GRANT CREATE SESSION TO user;(ДБА).ORA-01741: illegal zero-length identifier
Что это: пустой идентификатор, часто из-за двойных кавычек.
Как чинить: убрать кавычные пустые имена; использовать валидные идентификаторы.ORA-01747: invalid user.table.column, table.column, or column specification
Что это: неверная спецификация столбца/схемы.
Как чинить: проверить синтаксисschema.table.column, алиасы и зарезервированные слова.ORA-01790: expression must have same datatype as corresponding expression
Что это: типы вUNION/CASE/DECODEне совпадают.
Как чинить: явно привести типы (CAST) к единому.ORA-01407: cannot update (… ) to NULL
Что это: попытка обновитьNOT NULLстолбец наNULL.
Как чинить: давать значение или менять ограничение/DEFAULT.ORA-01418: specified index does not exist
Что это: индекс не найден/в другой схеме.
Как чинить: проверить имя/владельца; использовать префикс схемы.ORA-01408: such column list already indexed
Что это: дублирующийся состав индекса.
Как чинить: не создавать однотипный индекс; использовать покрывающий/частичный.ORA-01450: maximum key length exceeded
Что это: ключ индекса слишком длинный.
Как чинить: укоротить строки (SUBSTR), уменьшить число колонок, сменитьBLOCK_SIZE/тип индекса.ORA-02270: no matching unique or primary key for this column-list
Что это: FK ссылается не на уникальный/PK ключ.
Как чинить: обеспечить PK/UNIQUE на родительской колонке(ах) или скорректировать FK.ORA-02449: unique/primary keys in table referenced by foreign keys (TRUNCATE)
Что это: нельзяTRUNCATE, пока на таблицу ссылаются FK.
Как чинить: удалять детей/отключать FK/использоватьON DELETE CASCADE, либоDELETE.ORA-01940: cannot drop a user that is currently connected
Что это: у пользователя активные сессии.
Как чинить: завершить сессии (ALTER SYSTEM KILL SESSION …) и затемDROP USER.ORA-02055: distributed update operation failed; rollback required
Что это: сбой распределённой транзакции.
Как чинить: настроить двухфазный коммит, сократить DML через dblinks, обработать возможный частичный откат.ORA-02089: COMMIT is not allowed in a subordinate session
Что это: попыткаCOMMITв подчинённой распределённой сессии.
Как чинить: коммитит координатор; убрать явные коммиты внутри вызовов по dblink.ORA-06519: active autonomous transaction detected and rolled back
Что это: автономная транзакция не завершена.
Как чинить: вPRAGMA AUTONOMOUS_TRANSACTIONобязательно делатьCOMMIT/ROLLBACKперед выходом.ORA-06511: PL/SQL: cursor already open
Что это: повторныйOPENуже открытого курсора.
Как чинить: проверять состояние/делатьCLOSEперед повторнымOPEN.ORA-06510: PL/SQL: unhandled user-defined exception
Что это: исключение не перехвачено.
Как чинить: добавить обработчикEXCEPTION WHEN … THEN …, логировать и возвращать понятную ошибку.ORA-06592: CASE not found while executing CASE statement
Что это: ни одна веткаCASEне сработала, аELSEнет.
Как чинить: добавитьELSEили гарантировать покрытие всех вариантов.ORA-01481: invalid number format model
Что это: неверная маска вTO_CHAR/TO_NUMBER.
Как чинить: проверить форматные элементы (FM,999D99,MIи др.), локали.ORA-01843: not a valid month
Что это: строка не парсится в дату (месяц некорректен).
Как чинить: корректныйTO_DATEс маской, вернаяNLS_DATE_LANGUAGE.ORA-01840/01861 (варианты даты): input value not long enough / literal does not match format
Что это: длина/формат строки даты не совпадают с маской.
Как чинить: сверить маску и вход (включая разделители).ORA-03134: connections to this server version are no longer supported
Что это: слишком старый клиент.
Как чинить: обновить драйвер/клиент Oracle на поддерживаемую версию.ORA-28002: the password will expire within N days
Что это: пароль скоро истечёт.
Как чинить: сменить пароль; настроитьPASSWORD_LIFE_TIMEпрофиля.ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
Что это: логинSYSбез нужной роли.
Как чинить: подключаться какSYSDBA/SYSOPERили под другим пользователем.ORA-27486: insufficient privileges (Scheduler)
Что это: нет прав наDBMS_SCHEDULER.
Как чинить:GRANT CREATE JOB/MANAGE SCHEDULERи права на job class/программы.ORA-27492: unable to run job because of resource limit
Что это: ограничения класса заданий/ресурсов.
Как чинить: изменить job class/ресурсную директиву или переносить запуск.ORA-29913: error in executing ODCIEXTTABLEOPEN callout (external table)
Что это: проблема чтения внешней таблицы (файлы/директория/драйвер).
Как чинить: проверить объектDIRECTORY, права ОС/файлы, формат access driver.ORA-08002: sequence CURRVAL is not yet defined in this session
Что это:CURRVALдо первогоNEXTVAL.
Как чинить: сначала вызватьsequence.NEXTVAL, затемCURRVAL.ORA-08004: sequence … exceeds MAXVALUE / reaches limit
Что это: последовательность дошла до предела.
Как чинить:ALTER SEQUENCE … INCREMENT BY … MAXVALUE … CYCLEили расширить диапазон.ORA-12054: cannot set the ON COMMIT refresh attribute
Что это: невозможен refresh MVON COMMIT.
Как чинить: использоватьON DEMAND, обеспечить key-preserved логи/условия.ORA-12034: materialized view log on … younger than last refresh
Что это: лог моложе времени последнего refresh.
Как чинить: полный refresh (COMLETE) или пересоздать лог/МV.ORA-14300: partitioning key maps to a partition outside range
Что это: значение вне диапазона секции.
Как чинить: добавить нужный раздел/интервальный партиционинг, скорректировать ключ.ORA-12638/12640: credential retrieval/authentication adapter failed
Что это: сетевое/безопасностное (SQL*Net/TLS/Kerberos).
Как чинить: проверитьsqlnet.ora, wallet/сертификаты, механизмы аутентификации.ORA-29900/29861/29876 (domain index failures)
Что это: сбой доменных индексов (Text/Spatial).
Как чинить: перепостроить/синхронизировать индекс, проверить окружение CTXSYS/MDSYS.ORA-40444: JSON path expression syntax error
Что это: синтаксис JSONPath неверен.
Как чинить: валидировать путь, экранировать$, ключи с пробелами["key"].ORA-28150/28115: proxy not authorized / policy violation
Что это: политики безопасности/прокси-пользователи.
Как чинить:GRANT CONNECT THROUGH, проверить RLS-политики (DBA_POLICIES) и роли.ORA-01733: virtual column not allowed here (дополнение)
Что это: виртуальная колонка в неподдерживаемом месте.
Как чинить: вычислять вSELECT/материализовать в обычную колонку.ORA-01735: invalid ALTER TABLE option
Что это: неподдерживаемая опция вALTER TABLE.
Как чинить: сверить синтаксис для версии; возможно, надоALTER INDEX/CONSTRAINTотдельно.ORA-01799: a column may not be outer-joined to a subquery
Что это:(+ )/LEFT JOINк подзапросу.
Как чинить: переписать на JOIN с инлайновой таблицей/CTE и корректными условиями.ORA-03113/03114 (дополнение): end-of-file on communication channel / not connected to ORACLE
Что это: разрыв соединения/потеря сессии.
Как чинить: сетевые таймауты, стабильность сервера, логи listener/alert.ORA-01466: unable to read data – table definition has changed (дополнение)
Что это: объект изменён во время долгого запроса.
Как чинить: развести DDL и SELECT по окнам; применять edition-based redefinition.ORA-29471: DBMS_SQL access denied
Что это: нет прав на динамический SQL через пакет.
Как чинить:GRANT EXECUTE ON DBMS_SQLи разрешения на выполняемые объекты.ORA-29541: class … not found (Java)
Что это: Java-класс не загружен в БД.
Как чинить: загрузить черезloadjava/CREATE JAVA SOURCE/CLASS, выдать права.ORA-27370/27371: job “…” disabled / already running
Что это: состояния job в Scheduler.
Как чинить: включить/переименовать/изменить расписание; избегать пересечений.ORA-29276: transfer timeout (UTL_TCP/HTTP)
Что это: таймаут сетевой передачи.
Как чинить: увеличить таймауты API, проверить сеть/прокси.ORA-01712: attempt to drop or rename a user-owned object
Что это: ограничение на DDL внутри триггеров/предикатов.
Как чинить: выполнять DDL вне триггеров; использоватьDBMS_SCHEDULER/скрипты администрирования.
ORA-04030: out of process memory when trying to allocate
Что это: процесс (PGA) не смог выделить память.
Как чинить: уменьшать объёмы сорт/хеш-операций, батчить, следить заPGA_AGGREGATE_TARGET/LIMIT, править запрос/параллелизм, обновить/настроить клиент/драйвер.ORA-00604: error occurred at recursive SQL level N
Что это: ошибка во «внутреннем» SQL (системные триггеры логина/DDL, политики, словари).
Как чинить: смотреть первое последующее сообщение в стеке, проверять логон-триггеры, RLS-политики, профили.ORA-04043: object does not exist
Что это: объект не найден в контексте компиляции/вызова (часто PL/SQL).
Как чинить: префикс схемы, права, перекомпиляция зависящих объектов, проверить синонимы/неймспейсы.ORA-01775: looping chain of synonyms
Что это: синонимы ссылаются циклически.
Как чинить: разорвать цикл: исправить целевой объект/удалить лишний синоним.ORA-01012: not logged on
Что это: сессия потеряна/разорвана.
Как чинить: переподключение, убрать «долгоживущие» курсоры без пинга, включить keepalive/health-checks в пуле.ORA-01157: cannot identify/lock data file
Что это: БД не видит/не может залочить datafile.
Как чинить (ДБА): проверить ФС/права/путь;RECOVER DATAFILEпри необходимости; исправитьcontrolfile/asmссылки.ORA-01114/01110: write error to data file / data file …
Что это: ошибка записи в файл данных.
Как чинить: место/права/диск; проверка ОС/ASM; возможен офлайн/восстановление.ORA-01109: database not open
Что это: инстанс не открыт для работы.
Как чинить:STARTUPдоOPEN, устранить причины MOUNT-состояния (восстановление, архивирование).ORA-01089: immediate shutdown in progress
Что это: сервер гасится, сессии завершаются.
Как чинить: корректно отрабатывать retry в клиенте; подождать старта инстанса админами и переподключиться.ORA-01219: database not open: queries allowed on fixed tables/views only
Что это: доступ только кX$/V$на этапе MOUNT/NOMOUNT.
Как чинить: довести БД доOPEN, завершить восстановление/архивирование.ORA-01628/01629: max # extents/rollback segments reached (на старых DMT)
Что это: достигнут лимит экстентов/undo-сегментов.
Как чинить: (современно) локально-управляемые TBS, увеличитьUNDO/переразбить объекты.ORA-01424: missing or illegal character following the escape character
Что это: неверное использование ESCAPE вLIKE.
Как чинить: корректно экранировать и указатьESCAPE '\', проверить «хвост» после escape.ORA-01730: invalid number of arguments for function
Что это: неверное число параметров функции/агрегата.
Как чинить: сверить сигнатуру, убрать лишние/добавить недостающие аргументы.ORA-01719: outer join operator (+) not allowed in operand of OR
Что это: старый синтаксис(+ )вместе сOR.
Как чинить: перейти на ANSILEFT/RIGHT JOINи переписать условие.ORA-01466 (вариант партиционирования): read data – table definition changed
Что это: DDL/перемещение партиций во время чтения.
Как чинить: окна обслуживания для DDL; edition-based redefinition/рефреш MV.ORA-14074/14075: partition bound must collate higher/overlaps
Что это: границы партиций перекрываются или нарушают порядок.
Как чинить: корректныеVALUES LESS THANпо возрастанию; проверить коллацию/формат ключа.ORA-14402: updating partition key column would cause row to move
Что это: апдейт ключа партиционирования ведёт к миграции строки.
Как чинить: включитьENABLE ROW MOVEMENTили запрещать такие апдейты.ORA-14196: specified index is not partitioned
Что это: операция партиционирования применена к непартиционированному индексу.
Как чинить: создать локальный/глобальный партиц. индекс или убрать партиц-операцию.ORA-01555 (Flashback Query вариант): snapshot too old during flashback
Что это: недоступная версия дляAS OF TIMESTAMP/SCN.
Как чинить: увеличитьUNDO_RETENTION/объём UNDO; ближе выбирать время.ORA-08181: specified number is not a valid system change number
Что это: некорректный SCN.
Как чинить: использовать действительный SCN/временную метку;TIMESTAMP_TO_SCN.ORA-01427 (вариант MERGE): single-row subquery returns more than one row
Что это: вMERGEскалярный подзапрос вернул >1.
Как чинить: агрегировать/ограничить; обеспечить уникальность матчинга.ORA-01452/01451: cannot CREATE UNIQUE INDEX … / column to be modified to NULL
Что это: конфликт существующих данных с DDL.
Как чинить: очистить дубликаты/несоответствия; временноDEFERRABLEи почистить.ORA-20001: constraint violated (из триггера/логики)
Что это: бизнес-проверка вRAISE_APPLICATION_ERROR.
Как чинить: исправить вход/логику; логировать параметры для отладки.ORA-39002/39014/39087: Data Pump job aborted/worker died
Что это: сбой EXPDP/IMPDP.
Как чинить: проверить DIRECTORY/права/место, совместимостьVERSION, логи джоба; перезапустить сPARALLELразумно.ORA-29259: end-of-file reached (UTL_FILE/HTTP)
Что это: неожиданный EOF.
Как чинить: проверять длины/размеры, режимы чтения, корректность источника.ORA-06575: Package or function is in an invalid state
Что это: объект компилирован с ошибками.
Как чинить:ALTER … COMPILE,USER_ERRORS; обеспечить валидность зависимостей.ORA-04045: errors during recompilation/revalidation
Что это: сбой при автоматической перевалидации объекта.
Как чинить: вручную компилировать по зависимостям; устранить первопричину (USER_DEPENDENCIES,USER_ERRORS).ORA-01578: ORACLE data block corrupted (дополнение)
Что это: порча блока.
Как чинить (ДБА): RMAN block media recovery/восстановление из бэкапа; исключить плохой блок черезDBMS_REPAIRвременно.ORA-12899 (многобайт): value too large (byte vs char semantics)
Что это: строка укладывается по символам, но не по байтам.
Как чинить: хранить вCHAR-семантике/увеличить размер; проверятьNLS_LENGTH_SEMANTICS.ORA-00984: column not allowed here
Что это: колонка используется там, где допускается только литерал/выражение (например, DEFAULT).
Как чинить: заменить на допустимое выражение, использовать триггер/генерируемую колонку.ORA-24323: value not allowed
Что это: неверное значение bind-переменной/атрибута в драйвере.
Как чинить: корректно маппить типы, не передавать NULL туда, где запрещено.ORA-01453: SET TRANSACTION must be first statement of transaction
Что это: команда не первая.
Как чинить: выполнять сразу после начала сессии/после коммита.ORA-08177 (вариант batch): can’t serialize access …
Что это: конфликт вSERIALIZABLEпри массовых апдейтах.
Как чинить: ретрай с экспоненциальной паузой, снизить конфликтность ключей, рассмотретьREAD COMMITTED.ORA-27102/27103: out of memory / shared memory realm does not exist
Что это: ОС-лимиты SGA/PGA или неверные параметры.
Как чинить: увеличить shm/hugepages/ulimits; выровнятьMEMORY_TARGET/SGA_TARGET/PGA_TARGET.ORA-08102 (дополнение): index key not found
Что это: «сломанный» индекс.
Как чинить: перестроить индекс (ALTER INDEX … REBUILD), проверить дисковую подсистему.ORA-07445 (дополнение): core dump in function …
Что это: падение на нативном уровне.
Как чинить: патчи PSU/RU, SR в Oracle Support, минимизировать воспроизводимый кейс.ORA-29261: bad argument passed to UTL_ call*
Что это: неверные параметры UTL_FILE/HTTP/SMTP.
Как чинить: сверить режимы (r/w/a), кодировки, длины буфера.ORA-20011: Approximate NDV failed: strings longer than 64 characters (статистики)
Что это: ошибка при оценке кардинальности.
Как чинить: собрать статистики с подходящими опциями (METHOD_OPT, histograms), обновить БД/пакеты.ORA-01438 (дополнение к NUMBER): too large precision for target
Что это: число не помещается поp,sприCAST/INSERT.
Как чинить: увеличить точность колонки/каста; предварительно округлять.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, что и прод.