У дома / Новини / Характеристики на обработка на грешки на сървъра на база данни Oracle. Грешки на Oracle: грешки в базата данни, обяснение и коригиращи действия Варианти на изключение на Oracle

Характеристики на обработка на грешки на сървъра на база данни Oracle. Грешки на Oracle: грешки в базата данни, обяснение и коригиращи действия Варианти на изключение на Oracle

Обработка на изключения в PL/SQL

Във всеки процедурен език е изключително важно да запомните, че програмите са завършена и отделна единица от базата данни. Следователно, когато програмата поиска редове от базата данни, програмистът трябва да се увери, че заявката е завършена успешно.

В релационните бази данни базата данни винаги ще предава специална променлива, наречена SQLCODE обратно на всяка извикваща програма. SQLCODE, върнат от повикване за достигане от програмата към базата данни, се превежда от Oracle в именувана булева променлива (вижте таблицата по-долу).

Променлива за изключение на PL/SQL

ACCESS_INTO_NULL

COLLECTION_IS_NULL

CURSOR_ALREADY_OPEN

DUP_VAL_ON_INDEX

ROWTYPE_MISMATCH

SUBSCRIPT_BEYOND_COUNT

SUBSCRIPT_OUTSIDE_LIMIT

SYS_INVALID_ROWID

TIMEOUT_ON_RESOURCE

Например, ако базата данни върне SQLCODE=100, PL/SQL променливата NO_DATA_FOUND ще бъде зададена на TRUE.

Без изключение всички PL/SQL програми трябва да бъдат накарани да прекъсват всеки път, когато базата данни на Oracle върне неочакван SQLCODE.

Това може да има катастрофален ефект върху базата данни, особено когато PL/SQL зарежда данни в таблици въз основа на фалшиви предпоставки. За да предотврати тази трагедия, Oracle предоставя променлива WHEN OTHERS, която е настроена на TRUE, ако неочакван SQLCODE бъде върнат от базата данни на Oracle.

Например, разгледайте следния код:

ДЕКЛАРИРАЙТЕ
err_num НОМЕР;
err_msg VARCHAR2(100);
НАЧАЛО
...
ИЗКЛЮЧЕНИЕ
...
КОГАТО ДРУГИТЕ ТОГАВА
err_num:= SQLCODE;
err_msg:= SUBSTR(SQLERRM, 1, 100);
INSERT INTO грешки VALUES (err_num, err_msg);
КРАЙ;

Тук виждаме, че нашата обработка на изключения има EXCEPTIONS област тестване WHEN OTHERS. Ако булевата променлива WHEN OTHERS е TRUE, PL/SQL кодът улавя SQLCODE и свързаното съобщение за грешка (SQLERRM) и съхранява тези стойности в специална таблица за грешки на Oracle.

Обработка на изключения на Oracle

Разработчиците често отбелязват състояния на грешки и ги обработват с помощта на обработка на изключения на Oracle и използването на логиката IF-THEN.

Oracle обработка на изключения с помощта на логиката IF-THEN за отбелязване на грешки

Горният пример илюстрира обработката на изключения на Oracle с помощта на булевата променлива bAidAmountOkза да следите състояние по време на обработката на всеки студентски запис.

Това използване на обработка на изключения от Oracle оказва влияние върху производителността. Обработката на изключения на Oracle използва множество инструкции за тестване за условието за грешка. Всяка инструкция за обработка на изключение на Oracle изисква цикли на процесора, за да завърши. Много по-добър подход включва използването на обработка на изключения на Oracle, за да се избегне загубата на CPU цикли, както се вижда по-долу:

Използване на манипулатори на изключения на Oracle за подобряване на производителността.

В този пример за обработка на изключения от Oracle, xAID_AMOUNT_OKизключение е изрично повдигнато вътре в цикъла. Това позволява изпълнението да пропусне инструкциите, които се появяват след проверка на GPA на ученика, намалявайки процесора, използван при обработката на изключение на Oracle.

Обработката на изключения от Oracle е с висока производителност. Когато се повдигне изключение на Oracle, всички последващи инструкции в рамките на блока се заобикалят, така че изключението може да бъде обработено от манипулатор на изключения на Oracle. Обработката на изключения от Oracle може да се използва за значително повишаване на производителността.

Бърлесън е американският отбор

Забележка: Тази документация на Oracle е създадена като справочник за поддръжка и обучение на Oracle за използване от нашите консултантски специалисти по настройка на производителността на DBA. Чувствайте се свободни да задавате въпроси в нашия форум на Oracle.

Проверете опит! Всеки, който обмисля да използва услугите на експерт по поддръжката на Oracle, трябва самостоятелно да проучи своите пълномощия и опит, а не да разчита на реклами и самопровъзгласил се опит. Всички законни експерти на Oracle публикуват своите .

грешка? настройка на производителността


Авторско право 1996 - 2017

Всички права запазени от Burleson

® е регистрирана търговска марка на Oracle Corporation.

Дистанционна спешна поддръжка, предоставена от Conversational

В тази глава ще обсъдим изключенията в PL/SQL. Изключение е състояние на грешка по време на изпълнение на програма. PL/SQL поддържа програмистите да уловят такива условия с помощта ИЗКЛЮЧЕНИЕблок в програмата и се предприема подходящо действие срещу състоянието на грешка. Има два вида изключения −

  • Дефинирани от системата изключения
  • Дефинирани от потребителя изключения

Синтаксис за обработка на изключения

Общият синтаксис за обработка на изключения е както следва. Тук можете да изброите колкото се може повече изключения, с които можете да се справите. Изключението по подразбиране ще се обработва с помощта на КОГАТО другите ТОГАВА

ДЕКЛАРИРАЙТЕ НАЧАЛО ИЗКЛЮЧЕНИЕ КОГАТО изключение1 ТОГАВА инструкции за обработка на изключение1 WHEN изключение2 ТОГАВА инструкции за обработка на изключение2 КОГАТО изключение3 ТОГАВА инструкции за обработка на изключение3 ........ КОГАТО други ТОГАВА инструкции за обработка на изключение3 END;

пример

Нека напишем код, за да илюстрираме концепцията. Ще използваме таблицата CUSTOMERS, която създадохме и използвахме в предишните глави −

ДЕКЛАРИРАЙТЕ c_id customers.id%type:= 8; c_name customerS.Name%type; c_addr клиенти.адрес%тип; НАЧАЛО ИЗБЕРИ име, адрес INTO c_name, c_addr ОТ клиенти WHERE id = c_id; DBMS_OUTPUT.PUT_LINE("Име: "|| c_name); DBMS_OUTPUT.PUT_LINE("Адрес: " || c_addr); ИЗКЛЮЧЕНИЕ WHEN no_data_found THEN dbms_output.put_line("Няма такъв клиент!"); WHEN other THEN dbms_output.put_line("Грешка!"); КРАЙ; /

Няма такъв клиент! PL/SQL процедурата е завършена успешно.

Горната програма показва името и адреса на клиент, чийто идентификатор е даден. Тъй като в нашата база данни няма клиент с ID стойност 8, програмата повдига изключението по време на изпълнение НЯМА_НАМЕРЕНИ_ДАННИ, който е заловен в блок EXCEPTION.

Създаване на изключения

Изключенията се повдигат автоматично от сървъра на базата данни, когато има вътрешна грешка в базата данни, но изключенията могат да бъдат повдигнати изрично от програмиста с помощта на командата ПОВИШАВАНЕ. Следва простият синтаксис за повдигане на изключение −

DECLARE изключение_име EXCEPTION; BEGIN IF условие THEN RAISE име_на изключение; КРАЙ АКО; EXCEPTION WHEN изключение_име THEN оператор; КРАЙ;

Можете да използвате горния синтаксис за повдигане на стандартното изключение на Oracle или всяко дефинирано от потребителя изключение. В следващия раздел ще ви дадем пример за повдигане на дефинирано от потребителя изключение. Можете да повдигнете стандартните изключения на Oracle по подобен начин.

Дефинирани от потребителя изключения

PL/SQL ви позволява да дефинирате свои собствени изключения според нуждите на вашата програма. Дефинирано от потребителя изключение трябва да бъде декларирано и след това изрично повдигнато, като се използва или оператор RAISE, или процедурата DBMS_STANDARD.RAISE_APPLICATION_ERROR.

Синтаксисът за деклариране на изключение е −

ОБЯВИ моето изключение ИЗКЛЮЧЕНИЕ;

пример

Следващият пример илюстрира концепцията. Тази програма иска клиентски идентификатор, когато потребителят въведе невалиден идентификатор, изключение invalid_idе повдигнат.

ДЕКЛАРИРАЙТЕ c_id customers.id%type:= &cc_id; c_name customerS.Name%type; c_addr клиенти.адрес%тип; -- дефинирано от потребителя изключение ex_invalid_id EXCEPTION; BEGIN IF c_id<= 0 THEN RAISE ex_invalid_id; ELSE SELECT name, address INTO c_name, c_addr FROM customers WHERE id = c_id; DBMS_OUTPUT.PUT_LINE ("Name: "|| c_name); DBMS_OUTPUT.PUT_LINE ("Address: " || c_addr); END IF; EXCEPTION WHEN ex_invalid_id THEN dbms_output.put_line("ID must be greater than zero!"); WHEN no_data_found THEN dbms_output.put_line("No such customer!"); WHEN others THEN dbms_output.put_line("Error!"); END; /

Когато горният код се изпълни на SQL подкана, той произвежда следния резултат −

Въведете стойност за cc_id: -6 (нека "въведем стойност -6) old 2: c_id customers.id%type:= &cc_id; new 2: c_id customers.id%type:= -6; ID трябва да е по-голям от нула !PL/SQL процедурата е завършена успешно.

Предварително дефинирани изключения

PL/SQL предоставя много предварително дефинирани изключения, които се изпълняват, когато някое правило за база данни е нарушено от програма. Например, предварително дефинираното изключение NO_DATA_FOUND се поражда, когато оператор SELECT INTO не върне редове. Следващата таблица изброява няколко от важните предварително дефинирани изключения −

Изключение Грешка в Oracle SQLCODE Описание
ACCESS_INTO_NULL 06530 -6530 Той се повдига, когато на нулев обект автоматично се присвои стойност.
CASE_NOT_FOUND 06592 -6592 Повдига се, когато не е избран нито един от изборите в клаузата WHEN на оператор CASE и няма клауза ELSE.
COLLECTION_IS_NULL 06531 -6531 Той се повдига, когато програма се опита да приложи методи за събиране, различни от EXISTS, към неинициализирана вложена таблица или променлив или програмата се опита да присвои стойности на елементите на неинициализирана вложена таблица или променлив.
DUP_VAL_ON_INDEX 00001 -1 Той се повдига, когато се опитват да се съхранят дублирани стойности в колона с уникален индекс.
INVALID_CURSOR 01001 -1001 Повдига се, когато се правят опити да се направи операция с курсора, която не е разрешена, като например затваряне на неотворен курсор.
НЕВАЛИДЕН НОМЕР 01722 -1722 Той се повдига, когато преобразуването на символен низ в число е неуспешно, защото низът не представлява валидно число.
ВХОД_ОТКАЗАН 01017 -1017 Той се повдига, когато програма се опита да влезе в базата данни с невалидно потребителско име или парола.
НЯМА_НАМЕРЕНИ_ДАННИ 01403 +100 Повдига се, когато оператор SELECT INTO не върне нито един ред.
NOT_LOGGED_ON 01012 -1012 Повдига се, когато се осъществи извикване на база данни, без да сте свързани с базата данни.
PROGRAM_ERROR 06501 -6501 Повдига се, когато PL/SQL има вътрешен проблем.
ROWTYPE_MISMATCH 06504 -6504 Повдига се, когато курсорът извлича стойност в променлива с несъвместим тип данни.
SELF_IS_NULL 30625 -30625 Той се повдига, когато се извика членски метод, но екземплярът на обектния тип не е инициализиран.
STORAGE_ERROR 06500 -6500 Повдига се, когато PL/SQL изчерпа паметта или паметта е повредена.
TOO_MANY_ROWS 01422 -1422 Повдига се, когато оператор SELECT INTO върне повече от един ред.
VALUE_ERROR 06502 -6502 Той се повдига, когато възникне грешка при аритметика, преобразуване, съкращаване или ограничение на размера.
НУЛА_ДЕЛЕНИЕ 01476 1476 Повдига се, когато се направи опит да се раздели число на нула.

Доцент доктор. Владимир Лихачов, Калужски педагогически университет на името на К. Е. Циолковски

За програмите, работещи с бази данни, е важно не само да обработват правилно своите грешки, но и да генерират информационни съобщения за тези грешки. Наличието на такива съобщения ви позволява бързо да идентифицирате причините и да коригирате грешките. Това е особено вярно при работа с програмата на крайния потребител, тъй като в повечето случаи той не познава не само структурата на конкретна база данни, но и теоретичните основи на релационните бази данни.

Колкото и да е странно, ситуацията с формирането на съобщения за грешки в програмите доста често е много различна от обработката на самите грешки. Когато обработвате грешки, обикновено е възможно да се разработи обща стратегия, която ви позволява да локализирате обработката им в една или повече функции. Подобен подход за съобщения за грешка може да се приложи на базата на това, че в съобщението за грешка сървърът на Oracle посочва вида на грешката и обекта на базата данни, който я е причинил. Такива обекти обикновено са ограничения, като първични, уникални и чужди ключове, уникални индекси, ограничения "not null" и т.н. Подробна информация за тези ограничения може да бъде получена от системните таблици и изгледи на бази данни и стойностите, които могат да бъдат променяни и променен може да се определи.води до грешка. Но проблемът е, че прилагането на такъв механизъм за генериране на съобщения за грешка в реални приложения среща редица трудности:

  • Зависимостта на съобщението за грешка от целта на програмата. Дори за програми, работещи с една и съща база данни, може да е необходимо да се генерират различни съобщения за една и съща грешка. Например, в програма за редактиране на потребителски данни, съобщението трябва да бъде: "Продукт с това име вече е регистриран! Проверете името на продукта!". Но в програмата за импортиране на данни се изисква съобщение със съвсем различно съдържание: „Импортираните данни се дублират – проверете датата, за която се импортират данните!“.
  • Трудност при генериране на съобщения за някои грешки, причинени от ограничения на базата данни. Например, ограниченията CHECK върху таблици могат да използват доста сложни заявки и условия. Следователно формирането на съобщения въз основа на техния анализ може да бъде доста трудна задача.
  • Използване на персонализирани имена на таблици и колони в клиентски програми, които са различни от техните имена в базата данни. Например таблицата има име "СТОКИ", а в клиентското приложение данните от тази таблица могат да се показват в директорията като "Продукти" или "Продукти".

Комбинацията от тези фактори обикновено води до факта, че формирането на съобщения дори за същия тип грешки се изпълнява индивидуално за всяка транзакция. В резултат на това кодът за генериране на съобщения за грешки е разпределен в цялото приложение, което усложнява поддръжката му. Поради необходимостта от писане на код за почти всяка възможна грешка, някои от грешките, за които програмистът знае, се оказват без съответните съобщения до потребителя. В резултат на това се формират достатъчно информативни съобщения за крайния потребител само за някои от грешките, в други случаи той трябва да се задоволява в най-добрия случай със съобщения от самия сървър на база данни. Информативността на такива съобщения за обикновения потребител в повечето случаи не е достатъчна, за да идентифицира причината за проблема и да го отстрани.

Методът за генериране на информативни съобщения за грешки за потребителя, разгледан в статията, е доста универсален, той може да бъде приложен както в клиентски приложения, така и от страна на сървъра на Oracle. Може да се използва в различни видове програми, като например:

  • Програми, които използват специален интерфейс за въвеждане и промяна на данни от базата данни. В повечето случаи информативни съобщения за грешки могат да бъдат получени от анализ на структурата на базата данни. Това ще информира потребителя за тяхната кауза с минимални усилия от страна на разработчиците и софтуера.
  • Програми с възможност за изграждане на произволни SQL заявки от потребителя. Формирането на съобщения въз основа на анализа на структурата на базата данни може да бъде особено подходящо за програми, които са насочени към широк кръг потребители, включително такива с ниско ниво на познания в тази област. Това ще направи съобщенията за грешка в SQL заявките по-разбираеми за потребителя.
  • предметни платформи. Използването на методите, описани в статията, ще позволи на самата предметна платформа да генерира информативни съобщения за грешки в базата данни въз основа на анализа на нейната структура. Това ще направи възможно съкращаването на езиковия код на платформата, използван за справяне със ситуации на грешка. А грешките, които изискват специални съобщения, но се оказаха без такива, ще бъдат достатъчно информативни, за да улеснят много по-лесното идентифициране на причината за тях.

Проблемите с формирането на съобщения, описани по-горе, могат да бъдат решени, ако съобщенията за грешка условно се разделят на две групи:

  • универсални съобщения, които се формират въз основа на анализа на структурата на базата данни;
  • специални съобщения, които се дефинират индивидуално за всяка грешка.

Методът за генериране на съобщения за грешки в базата данни, описан в статията, може да се приложи към много сървъри на релационни бази данни. Пример за използването му за сървърни бази данни на Firebird е разгледан в статията. Ако клиентското приложение е разработено в Object Pascal (Delphi, Kylix, Free Pascal), тогава възможностите на библиотеката JEDI могат да бъдат полезни за идентифициране на причините за неочаквани грешки.

1. Универсални съобщения за грешка, причинени от ограничения на базата данни

Както бе споменато по-горе, основната идея за създаване на универсални съобщения е да се формира съобщение, което е достатъчно информативно и разбираемо за крайния потребител въз основа на данните от съобщението за грешка от Oracle и структурата на базата данни. Да приемем, че в таблицата "СТОКИ" (скрипт 1.1) потребителят се опитва да добави продукт с име (колона "ЗАГЛАВИЕ"), което вече е в таблицата.

CREATE TABLE DEMO.GOODS (CODE INTEGER NOT NULL, TITLE VARCHAR2(50 byte) NOT NULL, PRICE NUMBER(16, 2) NOT NULL, CONSTRAINT CK_PRICE CHECK (PRICE > 0), CONSTRAINT PK_GOODS PRIMARY KEY (CODE)); КОМЕНТАР КЪМ ТАБЛИЦА DEMO.GOODS е "Стоки"; КОМЕНТАР КЪМ КОЛОНАТА DEMO.GOODS.CODE е "Код на продукта"; КОМЕНТАР КЪМ КОЛОНАТА DEMO.GOODS.TITLE е "Заглавие"; КОМЕНТАР КЪМ КОЛОНАТА DEMO.GOODS.PRICE е "Цена"; СЪЗДАВАЙТЕ УНИКАЛЕН ИНДЕКС DEMO.IDX_GOODS_TITLE НА DEMO.GOODS(TITLE);

Скрипт 1.1. Създаване на таблица "СТОКИ".

В този случай сървърът ще генерира грешка, тъй като колоната "TITLE", която съхранява името на продукта, е включена в уникалния индекс "DEMO.IDX_GOODS_TITLE":

Вместо това може да се формира съобщение за потребителя, например едно от съобщенията:

  • Стойността на полето "Име" в таблица "Продукти" трябва да е уникална!
  • Продукт с това име вече е регистриран! Проверете името на продукта!
  • Продукти с едно и също име не могат да бъдат в продуктовата директория!

Въпреки че тези съобщения се различават, всички те показват информация за обекта, за който е нарушено ограничението за уникалност - това е полето "Име" на таблицата "Продукти".

Един от проблемите при генерирането на този тип съобщение е, че персонализираните имена на полета и таблици са различни от имената на таблици и колони в базата данни. За да може потребителят да разбере съобщението за грешка, той трябва да използва потребителски имена. Отделна таблица или коментари за таблици и колони могат да се използват за съпоставяне на имена на таблици и полета и техните персонализирани имена. Последният вариант може да се счита за по-предпочитан, тъй като ви позволява да документирате базата данни едновременно. Ето защо в скрипт 1.1 дефинираните от потребителя имена са дадени като коментари за таблицата и нейните колони. Ако сравним горните съобщения и коментари за таблицата и колоните, можем да видим, че формирането на първото съобщение е най-простият вариант. За формирането на другите две съобщения може да е необходим лексикален синтез, но това е отделна задача. Бих искал да обърна внимание на факта, че в бъдеще в статията е дадена само една от възможните опции за съобщение за всеки случай на грешка. На практика изборът на стил и съдържание на съобщение може да зависи от редица фактори и ще се определя от дизайнера на системата.

Разбира се, не може да се изключи, че няма коментари за таблица или колона, които трябва да бъдат включени в съобщението. В тази ситуация съобщението за грешка може да показва директно името на таблицата или колоната.

2. Стойността на задължителното поле не е посочена (ограничението NOT NULL)

Тази грешка се генерира от сървъра в няколко случая:

  • ограничението "not null" на колоната е нарушено;
  • не е посочена стойност за колона, която е част от уникален индекс, главен ключ или уникален ключ.

Във всички тези случаи сървърът генерира грешка:

За да получите описанието на таблицата и колоната от съобщението за грешка, може да се използва заявка 2.1.

изберете tc.comments като table_comment, cc.comments като column_comment от all_tab_columns c, all_tab_comments tc, all_col_comments cc c.owner и cc.table_name = c.table_name и cc.column_name = c.column_name

Заявка 2.1. Вземете описание на таблица и колона

Като параметри на заявката "owner", "table_name", "column_name" трябва да посочите съответно името на схемата, таблицата и колоната от съобщението за грешка. Заявката връща коментарите за таблицата и колоната.

Използвайки резултатите от тази заявка, може да се генерира съобщение за грешка, например следното съдържание:

Трябва да посочите стойността на колоната "<Описание поля>"на масата"<Описание таблицы>" при<добавлении новой/изменении>записи.

3. Уникалността на стойността на поле или набор от колони е нарушена

Необходимостта от въвеждане на уникална стойност за колона може да се изисква главно в три случая:

  • колоната е част от главния ключ;
  • колоната е включена в уникалния ключ;
  • колоната е включена в уникален индекс.

И в трите случая Oracle Database генерира една и съща грешка:
ORA-00001: нарушено уникално ограничение (<Схема>.<Ограничение>)

Съобщението за грешка указва ограничението, което е причинило грешката. За да получите информация за колоните, включени в главния или уникален ключ, можете да използвате заявка 3.1, за да получите информация за индекса - заявка 3.2.

изберете dcs.constraint_type, cc.table_name, tc.comments като table_comment, cc.column_name, ccom.comments като column_comment от all_cons_columns cc join all_tab_comments tc on (tc.owner = cc.owner and tc.table_name = cc.table_name) join all_col_comments ccom on (ccom.owner = cc.owner и ccom.table_name = cc.table_name и ccom.column_name = cc. име_на_колона) присъединете всички_ограничения dcs към (dcs.constraint_name = cc.constraint_name), където cc.owner = :owner и cc.constraint_name = :key_name
Заявка 3.1. Получаване на информация за колоните на таблицата, включени в главните или уникалните ключове.
изберете ic.table_name, tc.comments като table_comment, ic.column_name, ccom.comments като column_comment от all_ind_columns ic join all_tab_comments tc on (tc.owner = ic.table_owner и tc.table_name = ic.table_name) join all_col_comments ccom on (ccom.owner = ic.table_owner и ccom.table_name = ic.table_name и ccom.column_name = ic. column_name), където table_owner = :owner и index_name = :index_name
Заявка 3.2. Получаване на информация за колоните на таблицата, включени в индекса.

Параметрите на заявката са име на схема ("owner"), име на ключ ("key_name") или име на индекс ("index_name"). Заявките връщат имената и коментарите за таблиците и колоните в ограничението. Заявка 3.1 също връща типа ограничение ("constraint_type"): "P" - главен ключ, "U" - уникален ключ. Броят на записите, върнати от заявките, съответства на броя на колоните в уникалното ограничение.

Въз основа на получената информация за ограничението за уникалност за потребителя могат да се генерират варианти на съобщения за грешка, например тези, дадени в раздел 1.

4. Грешки, причинени от ограничения на външен ключ

При извършване на операции с таблични данни, свързани с външни ключове, има няколко причини, които водят до грешки:

1. Към подчинената таблица се добавя запис, в който колоната, включена във външния ключ, няма съответстваща стойност в основната таблица. Подобна ситуация възниква при промяна на стойността на колона от подчинена таблица, ако новата стойност на колона не е в основната таблица. Oracle Database в този случай генерира грешка:

  1. Прави се опит да се промени стойността на колона в родителската таблица, която е посочена в дъщерната таблица. В този случай Oracle Database генерира грешка:
  1. Прави се опит за изтриване на данни в главната таблица, които са посочени в дъщерната таблица. Ако в дефиницията на връзка между таблици за операция за изтриване на данни е указано ограничение „БЕЗ ДЕЙСТВИЕ“, тогава Oracle не позволява изтриване на данни от главната таблица, ако дъщерната таблица има записи, свързани със записа, който се изтрива. За тази ситуация Oracle Database генерира грешка, подобна на предишния случай.

Можете да използвате заявка 4.1 по-долу, за да получите информация за колоните на главните и дъщерните таблици, които са част от външния ключ.

изберете a.constraint_name, a.table_name, tc1.comments като table_comment, a2.column_name, cc1.comments като column_comment, b.owner като r_owner, b.table_name като r_table_name, tc2.comments като r_table_comment, b2.column_name като r_column_name, cc2 .коментира като r_column_comment от all_constraints a, all_constraints b, all_cons_columns a2, all_cons_columns b2, all_tab_comments tc1, all_col_comments cc1, all_tab_comments tc2, all_col_comments cc2 където a.owner = :owner и a.constraint_type = "R" и a.constraint_name = :foreign_key и в b.constraint_type ("P","U") и b.constraint_name = a.r_constraint_name и b.owner = a.r_owner и a2.constraint_name = a.constraint_name и a2.table_name = a.table_name и a2.owner = a.owner и b2.constraint_name = b.constraint_name и b2.table_name = b.table_name и b2.owner = b.owner и b2.position = a2.position и tc1.owner = a.owner и tc1.table_name = a.table_name и cc1. owner = a2.owner и cc1.table_name = a2.table_name и cc1.column_name = a2.column_name и tc2.owner = b.owner и tc2.table_name = b.table_name и cc2.owner = b2.owner и cc2.table_name = b2.table_name и cc2.column_name = b2.column_name
Заявка 4.1. Получаване на информация за външен ключ.

Заявката има два параметъра: "owner" и "foreign_key" - схема и външен ключ, за които искате да получите информация. Връща информация за колоните, включени във външния ключ: "table_name", "table_comment" - името и описанието на подчинената таблица; "column_name", "column_comment" - името и описанието на колоната на подчинената таблица. Колоните на заявката с префикс "r_" връщат информация за основната таблица. Броят на записите, върнати от заявката, съответства на броя на колоните, включени във външния ключ.

Въз основа на тази информация могат да се генерират съобщения за грешка на външния ключ за потребителя.

5. Специални съобщения за грешка, причинени от ограничения на базата данни

Необходимостта от използване на специални съобщения може да възникне, ако универсалното съобщение за грешка по някаква причина не може да се използва или не може да се генерира. Пример за последния случай са ограниченията CHECK върху таблици. При ограничени условия могат да се използват заявки и условия, чийто анализ може да бъде доста трудна задача. Следователно за тези ограничения често е по-удобно да се използват съобщения, които са дефинирани по време на проектиране.

Могат да се разграничат две групи специални съобщения за грешка. Първият тип специални съобщения е предназначен за използване във всички приложения, които работят с обща база данни. Те могат да бъдат наречени свободно "специални съобщения за грешка на ниво база данни". Втората група съобщения е специфична за приложението. Те може да са необходими, когато различни приложения трябва да дадат на потребителя различни съобщения за една и съща грешка. Те могат условно да бъдат наречени „специални съобщения за грешка на ниво приложение“. Удобно е да съхранявате информация за първата група съобщения в самата база данни и да използвате отделна таблица за това. Съобщенията, специфични за дадена програма, могат да се съхраняват в нейните ресурси, например като отделен файл или също в база данни. Специални съобщения могат да бъдат идентифицирани въз основа на кода за грешка, името на схемата и една или повече ключови думи от съобщението за грешка.

6. ПРОВЕРЕТЕ съобщенията за грешка на ограниченията за таблици

Когато възникне грешка поради ограничение CHECK на таблица, сървърът генерира грешка:
ORA-02290: Ограничението за целостта на ПРОВЕРКА е нарушено (<Схема>.<Имя ограничения>)

Както бе споменато по-горе, често е удобно да се използват специални съобщения за такива грешки. Например ограничението "CK_PRICE" в таблицата "GOODS" може да използва персонализирано съобщение, съхранено в таблицата с персонализирани съобщения:

7. Цялостно използване на персонализирани и общи съобщения за грешки

Гъвкав механизъм за генериране на информационни съобщения за грешка за потребителя се изпълнява на няколко етапа (фиг. 1):

1. Изведете персонализирано съобщение за грешка на ниво приложение. Програмата първо търси съобщение за грешка сред конкретните съобщения за това приложение. Ако бъде намерено такова съобщение, то се показва и формирането на съобщението е завършено.

2. Изведете специално съобщение за грешка на ниво база данни. Ако в стъпка 1 не е намерено съобщение, се търси специално съобщение за грешка на ниво база данни. Ако бъде намерено, то се показва на потребителя и генерирането на съобщение за грешка приключва дотук.

3. Показване на съобщение на база анализ на структурата на базата данни (универсално съобщение). Ако на предишните етапи не са открити специални съобщения, то се формира въз основа на анализа на структурата на базата данни. То се показва на потребителя и това завършва формирането на съобщението.

4. Показване на съобщение от сървъра на базата данни. Ако не е генерирано съобщение за потребителя в предишните три стъпки, тогава се показва съобщение за грешка от Oracle. Тази ситуация може да възникне поради няколко причини. Например, когато възникне персонализирана грешка, която е умишлено генерирана в съхранена процедура или тригер с помощта на функцията RAISE_APPLICATION_ERROR и съдържанието на съобщението за което не е необходимо да се променя.

Възможни са по-сложни случаи от посочения в тази статия. Например, ако съобщението е генерирано в запомнена процедура, която от своя страна може да бъде извикана от тригер или друга запаметена процедура. В този случай може да се нуждаете и от информация за това как е извикана процедурата, генерирала съобщението за грешка. И следователно оригиналното съобщение може да бъде допълнено или променено, например въз основа на информация за стека на повикванията на съхранени процедури и тригери.

В някои случаи такива съобщения могат да бъдат дори по-информативни от тези, генерирани на предишните етапи. Например, вместо ограничението CK_PRICE за таблицата DEMO.GOODS (скрипт 1.1), можете да извършите необходимата проверка в тригера преди вмъкване и актуализиране на записа и да генерирате съобщение за потребителя във вече "готов" вид:

Ако цената на даден продукт е по-малка или равна на нула, сървърът ще генерира грешка, например:

Клиентското приложение може незабавно да изпрати това съобщение до потребителя без промяна.

Друга причина може да бъде появата на грешка, за която не е предвидено формирането на съобщение.

Ориз. 1. Последователността на генериране на съобщение за грешка в базата данни.

Бих искал да отбележа, че дори ако приложението използва само специални съобщения за грешка, тогава използването на обща функция за генериране на съобщения ще подобри структурата на програмата. Ако е необходимо, форматът на специални съобщения може да поддържа връзки към системата за помощ, снимки и др. Описаният метод за генериране на съобщения за грешки в базата данни е фокусиран повече върху имплементацията в клиентското приложение. В същото време може да се използва от страната на сървъра в запомнени процедури, тригери на таблици, както и в системни тригери за събитието SERVERERROR на базата данни или схемата.

Заключение

Целта на тази статия е да покаже основните идеи на метод, който може да се използва за генериране на информативни съобщения за грешка в базата данни на Oracle за крайния потребител. Въпреки че някои точки на внедряване останаха извън обхвата на статията, бих искал да се надявам, че подходът, описан в статията, ще намали разходите за труд при разработването на софтуер, ще подобри неговата надеждност и качество.

Когато възникнат изключения, е важно да издавате удобни за потребителя съобщения за грешка. Изключенията вече бяха споменати в раздела за основните PL/SQL блокове. Сега е време да ги разгледаме по-подробно.

Изключения

Изключение е условие за грешка, което е активирано - или развълнуван - когато възникне проблем. Има много различни изключения, всяко от които е свързано с определен тип проблем. Когато възникне изключение, изпълнението на кода спира при оператора, който е хвърлил изключението, и контролът се прехвърля към частта от блока, която обработва изключението. Ако блокът не съдържа изпълнима секция, PL/SQL се опитва да намери изпълнима секция в включително базова единица (обграждащ основен блок), т.е. в блок, който е външен за кода, който е хвърлил изключението. Ако няма манипулатор за това изключение в непосредствено обхващащия блок, тогава търсенето продължава в блокове от следващите нива, докато се намери подходящ манипулатор, а ако не може да бъде намерен, тогава изпълнението на програмата спира с необработено съобщение за грешка.

Частта за обработка на изключения на блока е идеалното място за издаване на информационни съобщения за грешка и изпълнение почистване (почистване), което ви позволява да се отървете от всичко, което може да причини объркване или проблеми в бъдеще. Ако е хвърлено изключение по време на изпълнението на процедура, която вмъква ред в таблица, тогава типичната процедура за почистване може да включва оператор ROLLBACK.

След като контролът бъде прехвърлен към манипулатор на изключения, той вече не се връща към оператора, причинил изключението. Вместо това контролът се прехвърля към обхващащия оператор на базов блок непосредствено след вложения блок или извикване на процедура/функция.

Системни изключения

Вече сте запознати с изключението ZERO_DIVIDE, предварително дефинирано в PL/SQL. Има доста други системни изключения, които се разпознават и хвърлят от PL/SQL или Oracle. Таблица 1 предоставя по-пълен списък на системните изключения.

В PL/SQL можете да дадете информация за грешка на потребителите по два начина. Първият начин е да използвате командата SQLCODE, която връща код за грешка. Този код е отрицателно число, обикновено равно на номера на ORA грешката, която се отпечатва, когато приложението се прекрати, ако изключението остане необработено. Вторият начин е да върнете текстово съобщение, описващо грешката. Не е изненадващо, че съответната команда се нарича SQLERRM. Както SQLCODE, така и SQLERRM могат да се използват в манипулатор на изключения. Забележка: Не всички системни изключения имат имена.

Таблица1 . Системни изключения

системно изключение,код на грешка

Причина за възбуда

КУРСОР_ ВЕЧЕ_ ОТВОРЕНО

ORA-06511

Опит за отваряне на вече отворен курсор

DUP_VAL_ON_INDEX

ORA-00001

Опит за вмъкване на дублирана стойност в колона, която има уникален индекс и следователно уникално ограничение

НЕВАЛИДЕН_ КУРСОР

ORA-01001

Опит за извличане на неотворен курсор или опит за затваряне на курсор, който не е бил отворен

НЯМА_НАМЕРЕНИ_ДАННИ

ORA-01403

Опит за SELECT INTO, когато SELECT връща нула редове (и други причини, които са извън обхвата на тази книга)

ПРОГРАМА_ ГРЕШКА

ORA-06501

Вътрешна грешка. Обикновено означава, че трябва да се свържете с поддръжката на Oracle

СЪХРАНЕНИЕ_ ГРЕШКА

ORA-06500

Програмата няма достатъчно системна памет

TIMEOUT_ON_RESOURCE

ORA-00051

Програмата чакаше твърде дълго, за да бъде наличен някакъв ресурс

TOO_MANY_ROWS

ORA-01422

SELECT INTO в PL/SQL върна повече от един ред

СТОЙНОСТ_ ГРЕШКА

ORA-06502

PL/SOL се натъкна на невалидно преобразуване или съкращаване на данни или невалидно ограничение на данни

НУЛА_ РАЗДЕЛЯМ

ORA-01476

Опит за деление на нула

Всички други изключения и вътрешни грешки, които не са обхванати от изключенията, дефинирани в основния блок. Използва се, когато не знаете точно кое наименувано изключение да обработите и искате да обработите всички изключения, които са хвърлени

Сега нека се върнем към първия пример в тази глава и да използваме SQLCODE и SQLERRM в него. По-долу е изходният код на примера и резултатите от неговото стартиране (фиг. 1).

Num_a ЧИСЛО:= 6;

Num_b НОМЕР;

Брой_b:= 0;

Num_a:= Num_a / Num_b;

Брой_b:= 7;

dbms_output.put_line(" Стойност на Num_b "|| Num_b);

ИЗКЛЮЧЕНИЕ

WHEN ZERO_DIVIDE THEN

err_num НОМЕР:= SQLCODE;

err_msg VARCHAR2(512) := SQLERRM;

dbms_output.put_line("Номер на грешка в ORA" || err_num);

dbms_output. put_line("ORA съобщение за грешка " || err_msg);

dbms_output.put_line("Стойност на Num_a " || Num_a);

dbms_output.put_line("Стойност на Num_b " || Num_b);

SQL> задайте сървърния изход на

SQL> ДЕКЛАРИРАНЕ

2 num_a ЧИСЛО:= 6;

3 num_b НОМЕР;

4 НАЧАЛА

5 num_b:= 0;

6 num_a:= num_a / num_b;

7 num_b:= 7;

8 dbms_output.put_line(" Стойност на num_b "|| num_b);

9 ИЗКЛЮЧЕНИЕ

10 WHEN ZERO_DIVIDE

11 ТОГАВА

13 err_num НОМЕР:= SQLCODE;

14 err_msg VARCHAR2(512) := SQLERRM;

15 НАЧАЛО

16 dbms_изход.put_line("Номер на ORA грешка "|| err_num);

17 dbms_output.put_line("ORA съобщение за грешка " || err_msg);

18 dbms_изход put_line("Стойност на num_a " || num_a);

19 dbms_output put_line("Стойност на num_b " || num_b);

20END;

21КРАЙ;

ORA номер на грешка -1476

ORA съобщение за грешка ORA-01476: делител е равен на нула

Стойност на num_а 6

Стойност на num_b 0

PL/SQL процедурата е завършена успешно.

Ориз. един.Използване на SQLCODE и SQLERRM при обработка на системни изключения

Администраторите и програмистите на база данни на Oracle понякога се сблъскват в работата си с това, че базата данни започва да "псува" и често на език, който не е напълно ясен. В тази статия ще разгледаме езика за грешки на Oracle и предупредителните съобщения. Всички грешки са групирани в големи раздели и подраздели, за да помогнат на потребителите бързо да навигират какво се случва и да предприемат мерки за коригиране на ситуацията. В тази статия ще разгледаме групите първите хиляда грешки на Oracle(по диапазони кодове от 0 до 999), както и да обясни причините за появата им с предложение за действия за коригирането им. Форматът на грешката е "ORA-xxxxx". В началото идва префиксът "ORA", а след това през тирето петцифрен код за грешка.

Групи грешки на Oracle

Съобщения за грешка ORA-00000 - ORA-00099

Съобщенията ORA-00000 са нормални, успешно завършени, т.е. не са грешка.

Методологични грешки при достъп до ядрото 0001-0049

  • ORA-00001: дублиран ключ в индекса
  • ORA-00017: надвишен максималният брой повиквания
  • ORA-00018: надвишен максималният брой сесии
  • ORA-00019: броят на сесиите надхвърли броя на лицензите
  • ORA-00020: максималният брой процеси (брой) е надвишен
  • Сесията ORA-00021 се използва от друг процес. Не превключвайте сесията
  • ORA-00022: невалиден идентификатор на сесия. Достъпът е отказан
  • ORA-00023: Сесията съдържа частни препратки към паметта. Сесията не може да се прекъсне
  • ORA-00024: свързването към повече от един процес е забранено в режим на един потребител
  • ORA-00025: не може да постави [низ]
  • ORA-00026: липсващ или невалиден идентификатор на сесия
  • ORA-00027: не може да унищожи текущата сесия
  • ORA-00028: вашата сесия е унищожена
  • ORA-00029: сесията не е потребителска сесия
  • ORA-00030: потребителска сесия с посочен идентификатор не съществува
  • ORA-00031: сесия, маркирана за унищожаване
  • ORA-00032: невалидна парола за преместване на сесия
  • ORA-00033: текуща сесия с празна парола за преместване
  • ORA-00034: не може да се ИЗПОЛЗВА или ВЪЗСТАНОВИ в текущата PL/SQL сесия
  • ORA-00035: Стойността LICENSE_MAX_USERS не може да бъде по-малка от текущия брой потребители
  • ORA-00036: достигнат максимален брой нива (стойност) на SQL рекурсия
  • ORA-00037: не може да превключи сесия към друга група сървъри
  • ORA-00038: Не може да се създаде сесия. Сървърната група е собственост на друг потребител

ENQ грешки 0050-0080

  • ORA-00050: грешка на операционната система при получаване на опашка
  • ORA-00051: ресурсът изтече
  • ORA-00052: надвишен е максималният брой върнати ресурси
  • ORA-00053: надвишен е максималният брой опашки
  • ORA-00054: ресурсът е зает с достъп до показалеца NOWAIT
  • ORA-00055: надвишен е максималният брой DML заключвания
  • ORA-00056: DDL заключване е поставено върху заключен обект
  • ORA-00057: надвишен е максималният брой временни заключвания на таблици
  • ORA-00058: DB_BLOCK_SIZE трябва да е равен на базата данни, която се монтира
  • ORA-00059: Стойността на параметъра DB_FILES е надвишена
  • ORA-00060: възникна блокиране при изчакване на ресурс
  • ORA-00061: различен екземпляр има различни DML_LOCK настройки
  • ORA-00062: DML заключване на цялата таблица не може да бъде получено. Настройката DML_LOCKS е нула
  • ORA-00063: Стойността на параметъра LOG_FILES е надвишена
  • ORA-00064: обектът не може да бъде поставен, твърде голям е за операционната система
  • ORA-00065: грешка при инициализиране на параметър FIXED_DATE
  • ORA-00066: Стойностите на LOG_FILES не съвпадат
  • ORA-00067: невалидна стойност за параметър на низ, трябва да е низ
  • ORA-00068: невалидна стойност за параметър на низ, трябва да бъде низ
  • ORA-00069: не може да заключи таблицата - заключването е отказано на [низ]
  • ORA-00070: команда [низ] е невалидна
  • ORA-00071: броят на процесите трябва да е по-голям от 1:
  • ORA-00072: Посоченият процес не е активен
  • ORA-00073: невалиден брой аргументи, посочени за командата
  • ORA-00074: няма дефиниран процес
  • ORA-00075: процес [низ] не е намерен в текущия екземпляр
  • ORA-00076: дъмп [низ] не е намерен
  • ORA-00077: Посоченият дъмп е невалиден
  • ORA-00078: не може да разреши дъмп по име
  • ORA-00079: променлива [стойност] не е намерена
  • ORA-00080: направен е опит за изхвърляне на невалидна област от паметта
  • ORA-00081: посоченият диапазон не е валиден
  • ORA-00082: диапазонът на паметта не е в посочения диапазон
  • ORA-00083: SGA вероятно е повреден
  • ORA-00084: Глобалната зона трябва да е PGA, SGA или UGA
  • ORA-00085: текущото обаждане не съществува
  • ORA-00086: потребителско обаждане не съществува
  • ORA-00087: командата не може да бъде изпълнена на отдалечено копие
  • ORA-00088: командата не може да бъде изпълнена от споделен сървър
  • ORA-00089: невалиден номер на екземпляр в командата ORADEBUG
  • ORA-00090: Командата ORADEBUG не успя да разпредели правилно паметта в клъстерирана база данни
  • ORA-00091: Трябва да се посочи LARGE_POOL_SIZE
  • ORA-00092: LARGE_POOL_SIZE трябва да е по-голям от LARGE_POOL_MIN_ALLOC
  • ORA-00093: %s е посочен неправилно
  • ORA-00094: %s трябва да съдържа цяло число
  • ORA-00096: невалидна стойност [стойност] за параметър [стойност], трябва да е в диапазона
  • ORA-00097: Функциите на Oracle SQL не се поддържат от SQL92:
  • ORA-00099: Ресурсът изтече. Потенциално блокиране на PDML

Регионални и сегментни грешки ORA-00100 - ORA-00299

  • ORA-00100: няма намерени данни
  • ORA-00101: невалидна спецификация на системния параметър DISPATCHERS
  • ORA-00102: Посоченият мрежов протокол не може да се използва от диспечерите
  • ORA-00103: невалиден мрежов протокол, запазен за използване от диспечери
  • ORA-00104: открита безизходица, всички налични сървъри са блокирани, чака се ресурс
  • ORA-00105: твърде много конфигурации на диспечера
  • ORA-00106: базата данни не може да бъде стартирана или спряна, докато е свързана с диспечера
  • ORA-00107: не може да се свърже с процеса на слушане на ORACLE
  • ORA-00108: не може да конфигурира диспечера да приема асинхронни връзки
  • ORA-00111: невалиден атрибут [низ]
  • ORA-00112: стойността на атрибута е нула
  • ORA-00113: име на протокол [низ] е твърде дълго
  • ORA-00114: невалидна стойност за системния параметър SERVICE_NAMES
  • ORA-00115: връзката е прекъсната, таблицата на връзките е пълна
  • ORA-00116: Стойността на SERVICE_NAMES е невалидна
  • ORA-00117: Трябва да се посочи ПРОТОКОЛ, АДРЕС или ОПИСАНИЕ
  • ORA-00118: може да бъде посочена само една стойност на ПРОТОКОЛ, АДРЕС или ОПИСАНИЕ
  • ORA-00119: невалидна стойност на системния параметър
  • ORA-00120: диспечерът не е разрешен или не е инсталиран
  • ORA-00121: SHARED_SERVERS дефинирани без опция DISPATCHERS
  • ORA-00122: не може да се инициализира мрежовата конфигурация
  • ORA-00123: неактивен споделен сървър
  • ORA-00124: DISPATCHERS, посочени без MAX_SHARED_SERVERS
  • ORA-00125: нулиране на връзката; погрешно схващане
  • ORA-00126: нулиране на връзката; противоречие
  • ORA-00127: диспечерът не съществува
  • ORA-00128: командата изисква име на диспечер
  • ORA-00129: невалиден адрес за слушане
  • ORA-00130: невалиден адрес за слушане
  • ORA-00131: мрежовият протокол не поддържа посочената регистрация
  • ORA-00132: синтактична грешка или невалидно мрежово име
  • ORA-00150: дублиран идентификатор на транзакция
  • ORA-00151: дублиран идентификатор на транзакция
  • ORA-00152: текущата сесия не съответства на заявената сесия
  • ORA-00153: грешка в XA библиотека
  • ORA-00154: грешка в протокола в монитора на транзакция
  • ORA-00155: не може да изпълни задание извън глобалната транзакция
  • ORA-00160: името на глобалната транзакция надвишава максималната дължина
  • ORA-00161: невалидна дължина на транзакцията
  • ORA-00162: ID на външна база данни надвишава максималната стойност
  • ORA-00163: името на външна база данни надвишава максималната стойност
  • ORA-00164: разпределените автономни транзакции не са разрешени върху преносимите разпределени транзакции
  • ORA-00165: офлайн преносими разпределени транзакции с отдалечени операции не са разрешени
  • ORA-00200: контролният файл не може да бъде създаден
  • ORA-00201: версията на контролния файл [низ] е несъвместима с версията на ORACLE [низ]
  • ORA-00202: контролен файл: [низ]
  • ORA-00203: използван невалиден контролен файл
  • ORA-00204: грешка при четене на блок с данни (блок [низ], блокове [низ]) в контролния файл
  • ORA-00205: неуспешна идентификация на контролния файл. Вижте дневника за повече информация
  • ORA-00206: грешка при запис в контролен файл (блок [низ], блокира [низ])
  • ORA-00207: контролният файл не е от тази база данни
  • ORA-00208: броят на контролните файлове надвишава разрешената стойност [низ]
  • ORA-00209: блокът с данни на контролния файл не съответства. Вижте дневника за повече информация
  • ORA-00210: Не може да се отвори определен контролен файл
  • ORA-00211: контролният файл не съответства на предишния
  • ORA-00212: размер на блок [низ] по-малък от необходимия минимум [низ]
  • ORA-00213: не може да се използва повторно контролен файл, размер на файла %1: изисква се %2:
  • ORA-00214: версията на контролния файл е несъвместима с версията на файла
  • ORA-00215: трябва да има поне един контролен файл
  • ORA-00216: размерът на контролния файл не може да бъде променен за пренасяне от 8.0.2:
  • ORA-00217: размерът на контролния файл не може да бъде променен за мигриране от 9.0.1:
  • ORA-00218: размерът на блока с данни на контролните файлове не съответства на размера, определен от DB_BLOCK_SIZE
  • ORA-00219: размерът на контролния файл надвишава зададения размер
  • ORA-00220: контролният файл не може да бъде включен, вижте журнала за предупреждения за повече подробности
  • ORA-00221: грешка при запис в контролен файл
  • ORA-00222: операцията се опитва да използва името на вече монтиран контролен файл
  • ORA-00223: Преобразуваният файл е невалиден или има грешна версия
  • ORA-00224: неуспешно преоразмеряване на контролен файл с грешен тип запис
  • ORA-00225: очакваният размер на контролния файл [низ] се различава от действителния размер [низ]
  • ORA-00226: операцията не е възможна, докато е отворен алтернативен контролен файл
  • ORA-00227: повреден блок от данни, открит в контролния файл (блок [низ] блокира [низ]).
  • ORA-00228: дължината на името на алтернативния контролен файл надвишава позволената стойност [низ]
  • Операцията ORA-00229 е отказана. Файлът със снимка вече е поставен на опашка и се обработва.
  • Операцията ORA-00230 е отказана. Опашката за моментни снимки на контролен файл не е налична
  • ORA-00231: моментна снимка на контролен файл без име
  • ORA-00232: моментната снимка на контролния файл не съществува, повредена е или нечетима
  • ORA-00233: копието на контролния файл е повредено или нечетливо
  • ORA-00234: грешка при идентифициране или отваряне на моментна снимка или копиране на контролен файл
  • ORA-00235: контролният файл е блокиран за паралелна модификация
  • ORA-00236: моментната снимка е отменена, избран е резервен контролен файл
  • ORA-00237: операцията за моментна снимка не е разрешена. Създаден е нов контролен файл
  • ORA-00238: операцията се опитва да използва име на файл като име на база данни
  • ORA-00250: архиваторът не работи
  • ORA-00251: LOG_ARCHIVE_DUPLEX_DEST не може да бъде същата директория като %1:
  • ORA-00252: регистрационният файл е празен. Архивирането не е възможно
  • ORA-00253: дължината на посочения низ надвишава ограничението
  • ORA-00254: грешка в линията за управление на архива
  • ORA-00255: грешка при архивиране на лог файл
  • ORA-00256: Възникна грешка при анализиране на архивен низ
  • ORA-00257: грешка в архиватора. Не мога да се свържа, докато ресурсът е зает
  • ORA-00258: Трябва да се посочи ръчно архивиране в регистрационния файл на NOARCHIVELOG
  • ORA-00259: дневникът на отворен екземпляр е текущият дневник и не може да бъде архивиран
  • ORA-00260: не може да се намери активен журнал на опашка [низ] за нишка [низ]
  • ORA-00261: регистрационният файл е променен или архивиран
  • ORA-00262: текущият регистрационен файл [низ] е зает с друга нишка [низ], не може да се превключи
  • ORA-00263: няма регистрационни файлове за архивиране за нишка [низ]
  • ORA-00264: не е необходимо възстановяване
  • ORA-00265: Изисква се възстановяване на екземпляр, но може да се зададе режим ARCHIVELOG
  • ORA-00266: изисква се име на архивен журнал
  • ORA-00267: не се изисква име на архивен журнал
  • ORA-00268: Посоченият регистрационен файл не съществува
  • ORA-00269: Посоченият регистрационен файл е част от поток [низ], а не [низ]
  • ORA-00270: грешка при създаване на архивен журнал [низ]
  • ORA-00271: няма регистрационни файлове за архивиране
  • ORA-00272: грешка при запис в архивен журнал [низ]
  • ORA-00273: Възстановяване на данни, заредени директно без регистриране
  • ORA-00274: посочена е невалидна стойност на параметъра за възстановяване [стойност].
  • ORA-00275: процедурата по възстановяване вече е започнала
  • ORA-00276: Указана е ключова дума CHANGE, но не е посочен номер на промяна
  • ORA-00277: невалидна опция за възстановяване ДО флаг [низ]
  • ORA-00278: регистрационният файл [низ] вече не е необходим за възстановяване
  • ORA-00279: изисква се име на регистрационен файл
  • ORA-00280: необходим поток и име на последователност
  • ORA-00281: възстановяването не може да се извърши с помощта на диспечера
  • ORA-00282: UPI повикването не се поддържа, използвайте ALTER DATABASE RECOVER
  • ORA-00283: сесията за възстановяване е отменена поради грешки
  • ORA-00284: сесия за възстановяване в ход
  • ORA-00285: невалидна стойност TIME
  • ORA-00286: няма налични файлове или валидни файлове с данни
  • ORA-00287: посочен номер на промяна [низ] не е намерен в поток [низ]
  • ORA-00288: използвайте ALTER DATABASE RECOVER CONTINUE, за да продължите възстановяването
  • ORA-00289: променлива [стойност]
  • ORA-00290: Грешка в операционната система. Вижте съобщението за грешка по-долу
  • ORA-00291: PARALLEL изисква числова стойност
  • ORA-00292: компонентът за паралелно възстановяване не е инсталиран
  • ORA-00293: контролният файл не е синхронизиран с журнала за повторно изпълнение
  • ORA-00294: невалиден формат, посочен за архивен журнал [низ]
  • ORA-00295: невалиден номер на файл с данни/временни данни [низ], трябва да е между 1: и [низ]
  • ORA-00296: Стойността на RECOVER DATAFILE LIST е надвишена
  • ORA-00297: изисква се да се посочи RECOVER DATAFILE LIST преди RECOVER DATAFILE START
  • ORA-00298: липсваща или невалидна стойност на атрибута
  • ORA-00299: възстановяване на ниво файл на файл с данни %1

Грешки при управление на I/O на базата данни ORA-00300 - ORA-00399

Грешки при управлението на влизане и излизане от базата данни на Oracle:

  • ORA-00300: невалиден размер на журналния блок за повторение, посоченият размер [низ] надвишава ограничението за размер [низ]
  • ORA-00301: грешка при добавяне на лог файл [низ] - файлът не може да бъде създаден
  • ORA-00302: ограничението е надвишено за броя файлове за повторение
  • ORA-00303: не може да се изпълни Parallel Redo
  • ORA-00304: заявеният INSTANCE_NUMBER е зает
  • ORA-00305: регистрационен файл [низ] на нишка [низ] е непоследователен и принадлежи на друга база данни
  • ORA-00306: достигнато ограничение на екземпляра [низ]
  • ORA-00307: заявен INSTANCE_NUMBER извън обхват, макс. [низ]
  • ORA-00308: не може да се отвори архивен журнал [низ]
  • ORA-00309: регистрационният файл принадлежи на друга база данни
  • ORA-00310: архивираният журнал съдържа последователност [низ]; необходима последователност [стойност]
  • ORA-00311: Не може да се прочете заглавката на архивния журнал
  • ORA-00312: наличен журнал [низ] нишка [низ]
  • ORA-00313: грешка при отваряне на loggroup файл [низ] поток [низ]
  • ORA-00314: журнал [низ], очакваната последователност [низ] не съвпада с [низ]
  • ORA-00315: лог [низ] поток [низ], невалидна стойност [низ] в заглавката
  • ORA-00316: журнал [низ], стойност [низ] в заглавката показва, че това не е лог файл
  • ORA-00317: посоченият файл [низ] не е лог файл
  • ORA-00318: лог [низ] превишава позволения размер [низ] не съвпада с [низ]
  • ORA-00319: журнал [низ] има неправилно състояние на промиване
  • ORA-00320: не може да се прочете заглавката на файла [низ] на поток [низ]
  • ORA-00321: Не може да се актуализират данни в заглавката на регистрационния файл [низ] поток [низ]
  • ORA-00322: журнал [низ] на нишка [низ] не е текущото копие
  • ORA-00323: текущият регистър на потока [низ] не е използваем и всички останали трябва да бъдат архивирани
  • ORA-00324: име на регистрационен файл [низ] преведено [низ] твърде дълго, лимитът е превишен [низ]
  • ORA-00325: дневник на архивния поток [низ] съдържа невалидна стойност на заглавката [низ]
  • ORA-00326: регистрационният файл започва с [низ], изисква се преди това променен [низ].
  • ORA-00327: регистрационен файл [низ] на нишка [низ] има физически размер [низ] по-малък от необходимия [низ]
  • ORA-00328: архивиран дневник завършва с [низ], изисква се по-късна промяна [низ]
  • ORA-00329: архивираният дневник започва с [низ], трябва да се промени [низ]
  • ORA-00330: архивен дневник завършва с [низ], необходима е промяна [низ]
  • ORA-00331: версията на журнала [низ] не е съвместима с версията на ORACLE [низ]
  • ORA-00332: архивен дневник е много малък, вероятно не е напълно архивиран
  • ORA-00333: повторно четене на журнал [низ] лоши блокове от налични [низ]
  • ORA-00334: архивен журнал [низ]
  • ORA-00335: наличен дневник [низ]: Няма дневник с този номер, дневникът не съществува
  • ORA-00336: размерът на блока на регистрационния файл е по-малък от минималния размер на блока [низ]
  • ORA-00337: лог файл [низ] не съществува и размерът не е посочен
  • ORA-00338: log [низ] е по-голям от последната стойност на контролния файл
  • ORA-00339: архивираният регистрационен файл не съдържа никакви повторни опити
  • ORA-00340: I/O грешка при обработка на журнал [низ] на нишка [низ]
  • ORA-00341: регистрационен файл [низ] има невалиден номер на заглавка [низ]
  • ORA-00342: архивният регистрационен файл не съдържа SCN информация [низ]
  • ORA-00343: твърде много грешки, логът е затворен
  • ORA-00344: не може да се пресъздаде наличен регистрационен файл [низ]
  • ORA-00345: грешка при запис в журнала за повторение, блок [низ] общо [низ]
  • ORA-00346: дневник е маркиран като неактуален (СТАЛЕ)
  • ORA-00347: регистрационен файл [низ] на нишка [низ] има размер на блок [низ], не съвпада, трябва да бъде [низ]
  • ORA-00348: неуспешна повторна обработка на възстановяването, екземплярът трябва да бъде спрян
  • ORA-00349: Неуспешно извличане на размера на блока за [низ].
  • ORA-00350: дневник [низ] (поток [низ]) на екземпляр [низ] трябва да бъде архивиран
  • ORA-00351: невалидно време за възстановяване
  • ORA-00352: всички регистрационни файлове от поток [низ] трябва да бъдат архивирани - не може да се разреши
  • ORA-00353: повреден регистрационен блок [низ] промяна [низ] време [низ]
  • ORA-00354: заглавката на блока на журнала за повторение е повредена
  • ORA-00355: промяна на номера извън последователността
  • ORA-00356: невалидна дължина на описанието на промяната
  • ORA-00357: указани са твърде много членове за лог файл, макс. [низ]
  • ORA-00358: указани са твърде много членове, максимум [низ]
  • ORA-00359: група от регистрационни файлове [низ] не съществува
  • ORA-00360: Не е член на регистрационния файл: [низ]
  • ORA-00361: не може да премахне последния журнал [низ] от група [низ]
  • ORA-00362: изискваният член е валиден лог файл в група [низ]
  • ORA-00363: регистрационният файл не е архивиран
  • ORA-00364: не може да се записва в заглавката на нов журнал
  • ORA-00365: Посоченият регистрационен файл е невалиден
  • ORA-00366: Регистър [низ] поток [низ], грешка в контролната сума в заглавката на файла
  • ORA-00367: грешка в контролната сума в заглавката на файла
  • ORA-00368: грешка в контролната сума в журналния блок за повторение
  • ORA-00369: текущият регистрационен файл на нишката [низ] е повреден и други регистрационни файлове са изчистени
  • ORA-00371: няма достатъчно памет в споделения пул, трябва да бъде поне [низ]
  • ORA-00372: файл [низ] не може да бъде модифициран в момента
  • ORA-00373: версията на отворения журнал [низ] е несъвместима с версията на ORACLE [низ]
  • ORA-00374: стойността на параметъра db_block_size=[стойност] е невалидна; трябва да бъде съставен в диапазона [стойност..стойност]
  • ORA-00375: не може да получи стойността по подразбиране на db_block_size
  • ORA-00376: файл [низ] не може да бъде прочетен в момента
  • ORA-00377: често архивиране на файл [низ] причинява блокиране при операции за запис
  • ORA-00378: буферният кеш не може да бъде създаден, както е посочено
  • ORA-00379: няма свободни буфери в буферния кеш [низ] за блок [низ]K
  • ORA-00380: не може да се посочи db_[стойност]k_cache_size [стойност]K е стандартният размер на блока.
  • ORA-00381: не може да използва стари и нови опции за определяне на размера на буферния кеш
  • ORA-00382: %s невалиден размер на блока, валидна стойност [str..value]
  • ORA-00383: стойността по подразбиране на кеша не може да бъде намалена до нула
  • ORA-00384: няма достатъчно памет за увеличаване на кеша
  • ORA-00390: регистрационен файл [низ] на нишка [низ] е изчистен и не може да бъде текущият регистрационен файл
  • ORA-00391: всички нишки от сега нататък трябва да преминат към нов формат на журнал
  • ORA-00392: журнал [низ] на нишка [низ] беше изчистен, операцията не е разрешена
  • ORA-00393: регистрационен файл [низ] на нишка [низ], необходим за възстановяване на офлайн база данни.
  • ORA-00394: наличният регистрационен файл се използва повторно при архивиране
  • ORA-00395: регистрационният файл за клониране на база данни трябва да бъде преименуван
  • ORA-00396: грешка [низ] изисква връщане към еднократно възстановяване
  • ORA-00397: възстановяването на екземпляр е прекъснато с грешка
  • ORA-00398: възстановяването е прекъснато преди правилно преконфигуриране
  • ORA-00399: повредено описание на промените в журнала за повторение

Грешки при инициализация на база данни ORA-00400 - ORA-00499

  • ORA-00400: невалидна стойност [низ] за параметър [низ]
  • ORA-00401: стойността за параметър [стойност] не се поддържа от тази версия
  • ORA-00402: промените в базата данни на версия [низ] не могат да се използват от версия [низ]
  • ORA-00403: [низ] не е същото като други екземпляри на [низ]
  • ORA-00404: Конвертираният файл не е намерен: [низ]
  • ORA-00405: тип съвместимост [низ]
  • ORA-00406: Опцията COMPATIBLE изисква [низ] или по-висок
  • ORA-00407: Не е позволено връщане на надстройка от версия [низ].[низ] до версия [низ].[низ]
  • ORA-00408: стойността на параметър [низ] е зададена на TRUE
  • ORA-00436: Oracle не е лицензиран. Свържете се с Oracle Corporation за помощ
  • ORA-00437: Разширените функции на Oracle не са лицензирани. Свържете се с Oracle Corporation за помощ
  • ORA-00438: опция [низ] не е зададена
  • ORA-00439: незадължителна функция не е разрешена: [низ]
  • ORA-00443: фонов процес [низ] не се изпълнява
  • ORA-00444: фоновият процес [низ] е неуспешен при стартиране
  • ORA-00445: фонов процес [низ] не стартира след изтичане на [низ] секунди
  • ORA-00446: процесът във фонов режим стартира, когато не се очаква
  • ORA-00447: критична грешка във фонов процес
  • ORA-00448: нормално прекратяване на фонов процес
  • ORA-00449: фонов процес [низ] прекъснат внезапно с грешка [низ]
  • ORA-00470: LGWR процесът излезе с грешка
  • ORA-00471: DBWR процесът излезе с грешка
  • ORA-00472: pmon процесът излезе с грешка
  • ORA-00473: ARCH процесът излезе с грешка
  • ORA-00474: процес smon излезе с грешка
  • ORA-00475: TRWR процесът излезе с грешка
  • ORA-00476: Процесът на RECO излезе с грешка
  • ORA-00477: SNP* процесът излезе с грешка
  • ORA-00478: процес smon излезе с грешка [низ]
  • ORA-00480: LCK* процесът излезе с грешка
  • ORA-00481: LMON процесът излезе с грешка
  • ORA-00482: LMD* процесът излезе с грешка
  • ORA-00483: процесът е прекратен необичайно по време на изключване
  • ORA-00484: LMS* процесът излезе с грешка
  • ORA-00485: Процесът на DIAG излезе с грешка [низ]

Съобщения за грешка ORA-00500 - ORA-00599

  • ORA-00568: превишен е максималният брой прекъсвания на манипулатора

Грешки при възстановяване след срив ORA-00600 - ORA-00699

  • ORA-00600: Код на вътрешна грешка, аргументи [стойност], [стойност], [стойност], [стойност], [стойност], [стойност], [стойност], [стойност]
  • ORA-00601: конфликт на заключване на мрежата
  • ORA-00602: вътрешно софтуерно изключение
  • ORA-00603: Сесията на сървъра на Oracle беше прекратена поради критична грешка
  • ORA-00604: възникна грешка на рекурсивно SQL ниво [низ]
  • ORA-00606: код за вътрешна грешка
  • ORA-00607: Вътрешна грешка при промяна на блока с данни

Грешки в речника ORA-00700 - ORA-00799

  • ORA-00701: обектът, необходим за стартиране на база данни, не може да бъде модифициран
  • ORA-00702: версия на зареждащото устройство [низ] несъвместима с версия [низ]
  • ORA-00703: надвишен е максималният брой заключвания на кеша на редове на екземпляри
  • ORA-00704: процесът на зареждане приключи необичайно
  • ORA-00705: невалидно състояние по време на стартиране; спрете инстанцията и рестартирайте
  • ORA-00706: грешка при промяна на файловия формат [низ]

Общи ORACLE грешки ORA-00800 - ORA-00899

  • ORA-0800: процесът на запис на буфер не е активен(процесът на запис в буфера не е активен).
    причина: Проблемът е свързан с опит за стартиране на ORACLE, което доведе до премахване на процеса на запис в буфера. Обикновено това съобщение се издава заедно със съобщение за системна грешка, обясняващо причината за повредата.
    Действие: Използвайте съобщението за системна грешка (ако има такова), за да разберете причината за грешката. Ако няма системна грешка, вижте Ръководството за инсталиране на ORACLE за списък с изисквания. Уверете се, че всички логически имена на ORACLE са правилни, че има достатъчно свободно дисково пространство в директорията на ORACLE и че има достатъчно глобални секции и страници. Също така се уверете, че бюджетът на ORACLE има необходимия приоритет. Ако източникът на проблема не е идентифициран, вижте съответния инсталационен софтуер.
  • ORA-0801: процесът на запис след изображение не е активен
    причина: Тази собственост не се поддържа.
    Действие: Моля, вижте съответния инсталационен софтуер.
  • ORA-0802: невалидна контекстна област
    причина
    Действие
  • ORA-0805: opiodr: номер на непоследователно ниво на рекурсия
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-0806: процесът преди изображението не е активен
    причина
    Действие
  • ORA-0807: процесът на почистване не е активен
    причина: Проблемът е свързан с опит за стартиране на ORACLE, което доведе до отмяна на процеса на предварителен преглед. Обикновено това съобщение се издава заедно със съобщение за системна грешка, обясняващо причината за неуспеха.
    Действие: Използвайте съобщението за системна грешка (ако има такова), за да разберете причината за грешката. Ако няма системна грешка, вижте ръководството за инсталиране на ORACLE за вашата операционна система, за да проверите правилната инсталация. Ако източникът на проблема не е идентифициран, вижте съответния инсталационен софтуер.
  • ORA-0809: opispf: невалиден код на специална функция.
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-0810: opiomc: контекстната област не е пренасочена към оригиналния адрес
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-0811: процесът на предварително четене не е активен
    причина: Проблемът е свързан с опит за стартиране на ORACLE, което доведе до отмяна на процеса на предварително четене. Обикновено това съобщение се издава заедно със съобщение за системна грешка, обясняващо причината за повредата.
    Действие: Използвайте съобщението за системна грешка (ако има такова), за да разберете причината за грешката. Ако няма системна грешка, вижте ръководството за инсталиране на ORACLE за вашата операционна система, за да проверите правилната инсталация. Ако източникът на проблема не е идентифициран, вижте съответния инсталационен софтуер.
  • ORA-0813: неуспешно твърдение (премахнато приложение).
    причина: Това е вътрешно съобщение за грешка, свързано с ORACLE SORT. Това не може да се случи при нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-0814: ltbdrv: незаконен режим на заключване
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-00816: неуспешен превод на съобщение за грешка
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-0817: prsgkw: маркер за вътрешна грешка не е намерен
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-0818: opispf: osf е твърде голям
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.

Синтактични грешки ORA-00900 - ORA-00999

  • ORA-00900: невалиден SQL оператор.
    причина: Въведеното от вас изявление не беше разпознато като валидна SQL команда.
    Действие: Проверете за правописни грешки, уверете се, че ключовите думи на SQL командите започват с една от следните думи: ALTER, AUDIT, CREATE, DELETE, DROP, GRANT, INSERT, NOAUDIT, RENAME, REVOKE, SELECT, UPDATE, LOCK, VALIDATE. Други команди ще причинят тази грешка.
  • ORA-00901: невалиден синтаксис на команда CREATE / Невалидна команда за създаване.
    причина: Използвана е невалидна опция CREATE в командата CREATE.
    Действие: Проверете за правописни грешки, уверете се, че командата CREATE е последвана от една от следните опции: INDEX, PARTITION, SPACE DEFINITION, SYNONYM, TABLE или VIEW.
  • ORA-00902: невалиден тип данни.
    причина: Въведеният тип данни в оператор CREATE или ALTER TABLE не е валиден.
    Действие: Проверете за правописни грешки, уверете се, че всяко име на колона е последвано от един от следните типове данни: DATA, CHAR, NUMBER, RAW, LONG или LONG RAW.
  • ORA-00903: невалидно име на таблица.
    причина: Въведените имена на таблици или групи не съществуват или са невалидни. Това съобщение се появява и ако в командата ALTER/DROP CLUSTER е указано невалидно или несъществуващо име на група.
    Действие: Проверете за правописни грешки. Валидно име на група трябва да започва с буква и да съдържа само букви, цифри и специални знаци: $, # и _. Името не трябва да е по-дълго от 30 знака и не трябва да бъде запазена дума.
  • ORA-00904: невалидно име на колона.
    причина: Въведеното име на колона липсва или е невалидно.
    Действие: Въведете валидно име на колона. Валидно име трябва да започва с буква и да съдържа само букви, цифри и специални знаци: $, # и _. Името не трябва да е по-дълго от 30 знака и не трябва да бъде запазена дума. Ако съдържа други знаци, трябва да е в двойни кавички.
  • ORA-00905: липсваща ключова дума.
    причина: Задължителната ключова дума е пропусната.
    Действие: Проверете синтаксиса на командата и добавете липсващи ключови думи.
  • ORA-00906: липсваща лява скоба.
    причина: Задължителната лява скоба е пропусната. Основните команди (като CREATE TABLE, CREATE CLUSTER и INSERT) изискват списък с елементи, оградени в скоби. Необходими са и скоби около последователностите в клаузата WHERE и в колоната SET на таблицата UPDATE = (SELECT ...).
    Действие: Проверете синтаксиса на командата и поставете липсващите скоби.
  • ORA-00907: липсваща дясна скоба
    причина: Лявата скоба е въведена без затварящата дясна скоба или предишната информация е оградена в скоби. Всички скоби трябва да са сдвоени.
    Действие: Поставете затваряща дясна скоба.
  • ORA-00908: липсваща ключова дума NULL
    причина: В инструкциите CREATE или ALTER TABLE, NOT беше въведено, за да покаже, че не са разрешени нулеви стойности в тази колона, но ключовата дума NULL беше пропусната.
    Действие: Ако се нуждаете от стойност в тази колона, заменете ключовата дума NOT с NOT NULL.
  • ORA-00909: невалиден брой аргументи
    причина: Направена е препратка към вградена ORACLE функция с грешен брой аргументи. Всички функции на ORACLE с изключение на SYSDATE изискват поне един аргумент.
    Действие: Проверете синтаксиса на командата и въведете необходимия брой аргументи.
  • ORA-00910: посочената дължина е твърде голяма за колона CHAR
    причина: Размерът на символното поле не е посочен или е посочен неправилно. Трябва да посочите максималната дължина за всяка колона със знаци. Тази дължина може да приема стойности от 0: до 240: .
    Действие: Въведете максималната дължина от 0 до 240: .
  • ORA-00911: невалиден знак
    причина: Специалният символ е невалиден или валиден само на определени места. Ако в име се използва специален знак (различен от $, # и _) и името не е затворено в двойни кавички ("), ще се появи това съобщение.
    Действие: Премахнете невалидния знак от командата.
  • ORA-00912: операция за отваряне на операнд без операнди в стека
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-00913: твърде много стойности
    причина: Командата приема два идентични набора от стойности, но вторият набор има повече елементи от първия. Например: подзаявка в клауза WHERE или HAVING може да има твърде много колони или може да има повече колони в клауза VALUES или SELECT, отколкото клауза INSERT.
    Действие: Проверете броя на елементите и ги сменете.
  • ORA-00914: липсваща ключова дума ADD
    причина: Командата ALTER PARTITION е въведена без ключовата дума ADD.
    Действие: проверете синтаксиса на командата и опитайте отново.
  • ORA-00915: достъпът до мрежата на речниковата таблица в момента не е разрешен
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-00917: липсва запетая липсва запетая
    причина: Липсва запетая в списък с колони или в списък със стойности в оператор INSERT, или в списък от формата ((c,d),(e< f),...).
    Действие: Проверете синтаксиса във вашия SQL оператор и добавете липсваща запетая, ако е необходимо.
  • ORA-00918: колона нееднозначно дефинирана
    причина: Колоната, използвана за свързване, съществува в повече от една таблица. При присъединяване всяка колона, присъстваща в повече от една таблица, трябва да съдържа името на таблицата. Името на колоната трябва да е TABLE.COLUM или TABLE_ALIAS.COLUMN, EMP.DEPTNO или E.DEPTNO, а не само EMP.
    Действие: Въведете името на таблицата в името на колоната преди точката или алтернативното име на таблицата, както е показано по-горе.
  • ORA-00919: невалидна функция
    причина: Подобен на функция вход от тип функция (аргумент) не се разпознава като функция на ORACLE.
    Действие: Вижте ръководството за списък с валидни имена на функции.
  • ORA-00920: невалиден релационен оператор
    причина: Задача за търсене с невалиден или липсващ израз на условие.
    Действие: Въведете валиден условен оператор. Разрешени са следните релационни изрази: =, !=,<>, >, >=, <, <=,IN, IS, NULL, LIKE, и BETWEEN.
  • ORA-00921: неочакван край на SQL команда
    причина: SQL командата е непълна. Беше въведена част от валидна команда, но поне един основен компонент беше пропуснат.
    Действие: Проверете синтаксиса на командата и вмъкнете липсващите компоненти.
  • ORA-00922: невалидна опция
    причина: Декларирана е невалидна опция в дефиниция на колона или дефиниция на област.
    Действие: Премахнете невалидната опция от дефиницията на колона или регион. Валидна опция, описваща колона, е NOT NULL, за да покаже, че колоната не може да съдържа NULL стойности. Всичко друго след типа данни, с изключение на запетая или затваряща скоба, се класифицира като невалидна опция. Когато описвате дължина за DATA или тип данни LONG, ще получите това съобщение за грешка. Само следните опции са разрешени в декларацията за дефиниция на обхват: INITIAL, INCREMENT и MAXEXTENTS (за DATAPAGES и INDEXPAGES) и PCTFREE (само за DATAPAGES).
  • ORA-00923: липсва ключова дума FROM
    причина: В оператор SELECT или REVOKE ключовата дума FROM е или пропусната, поставена неправилно или неправилно изписана. Ключовата дума FROM трябва да следва избрания елемент в оператора SELECT или името на избраната таблица в оператора REVOKE.
    Действие: Заменете думата FFROM. Самият избран списък може да е грешен. Уверете се, че използвате единични кавички, за да затворите псевдонима и дали псевдонимът е запазена дума или не.
  • ORA-00924: липсва ключова дума BY
    причина: Липсваща ключова дума BY в изразите GROUP BY, ORDER BY или CONNECTED BY. Освен това в командата GRANT думата INDENTIFIED трябва да бъде последвана от BY.
    Действие: Вмъкнете думата BY правилно.
  • ORA-00925: липсваща ключова дума INTO
    причина: Използвана е команда INSERT без ключовата дума INTO.
    Действие: Заменете INSERT с INSERT INTO.
  • ORA-00926: липсваща ключова дума VALUES
    причина: оператор INSERT без ключовата дума VALUES или SELECT. Оператор INSERT INTO трябва да бъде последван от последователност VALUES или SELECT.
    Действие: Въведете израз или последователност VALUES след израза INSERT INTO.
  • ORA-00927: липсва равен знак
    причина: Знакът за равенство липсва на едно от следните места: * в командата SET на командата UPDATE * след! за да посочите неравенство * в израза PCTFREE на командата CREATE INDEX
    Действие: Поставете знак за равенство.
  • ORA-00928: липсваща ключова дума SELECT
    причина: SELECT последователност трябва да бъде включена в командата CREATE VIEW.
    Действие: Вмъкнете необходимия оператор SELECT в командата CREATE VIEW.
  • ORA-00929: липсваща точка
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-00930: липсваща звездичка
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-00931: липсващ идентификатор
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-00932: непоследователни типове данни несъвместим тип данни
    причина: Опит за добавяне на символно поле към поле с данни. Данни могат да се добавят само към цифрови полета.
    Действие: Преобразувайте символно поле в числово поле с помощта на функцията TO_NUMBER, преди да добавите полето за данни.
  • ORA-00933: SQL команда и неправилно завършена
    причина: SQL командата е прекратена с невалиден израз. Например: клауза ORDER BY може да бъде включена в оператор CREATE VIEW или INSERT. Въпреки това, ORDER BY не трябва да се използва за създаване на друг изглед или да бъде включена в основната поръчка.
    Действие: Проверете синтаксиса на командата и премахнете ненужните компоненти. Трябва да можете да дублирате изтрити изрази с други команди. Например, ако искате да поръчате редовете за преглед, продължете по същия начин, както при заявка за преглед, но не както при създаване на такъв. Тази грешка може да възникне и при използване на SQL*Forms, ако продължението на реда е с отстъп. Проверете отместванията и премахнете интервалите. Трябва да използвате подходящите SQL окончания, ако използвате I израз с един аргумент, например: IN(X). Изразът IN трябва да приема поне два аргумента.
  • ORA-00934: зададена функция не е разрешена тук
    причина: една от груповите функции (като AVG, SUM, MAX, MIN, COUNT) е използвана в клауза WHERE или GROUP BY.
    Действие: Премахнете груповата функция от клаузите WHERE или GROUP BY. Можете да получите желания резултат, като включите функцията в заявка или клауза HAVING.
  • ORA-00935: зададената функция е вложена твърде дълбоко
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-00936: липсващ израз
    причина: Задължителната част от израза е пропусната. Например, команда SELECT е въведена без списък с колони или с израз на несъвместим тип (SAL+). Това може да се случи и ако са пропуснати запазени думи като SELECT TABLE.
    Действие: Проверете синтаксиса на командата и въведете липсващите команди.
  • ORA-00937: нито една функция за набор от групи
    причина: Не можете да включите едновременно групова функция (AVG, SUM, COUNT, MIN или MAX) и потребителски израз на колона в заявка, освен ако изразът на колона не е включен в клаузата GROUP BY.
    Действие: Премахнете или израза на колоната, или груповата функция от заявката, или добавете клауза GROUP BY, която включва изброяване на колони.
  • ORA-00938: няма достатъчно аргументи за функция
    причина: Във функцията са декларирани твърде малко аргументи.
    Действие: Проверете синтаксиса на функцията и добавете необходимите аргументи.
  • ORA-00939: твърде много аргументи за функция
    причина: Функцията има твърде много аргументи.
    Действие: Проверете синтаксиса на функцията и опишете само необходимите аргументи.
  • ORA-00940: невалидна команда ARTER невалидна команда ALTER
    причина: Описана е невалидна опция ALTER. Само секции и таблици могат да бъдат неповтарящи се. Валидна команда ALTER трябва да започва с една от следните опции: ALTER TABLE или ALTER PARTITION.
    ДействиеЗабележка: Проверете синтаксиса за правилното изписване на командата ALTER.
  • ORA-00941: липсващо име на клъстер
    причина: Името на групата липсва или е невалидно.
    Действие: Опишете правилното име на групата. Валидно име на група започва с буква, съдържа не повече от 30 знака и се състои само от букви, цифри и специалните знаци $, _ и #. Не трябва да е запазена дума. Името трябва да бъде отпечатано непосредствено след ключовата дума CREATE CLUSTER.
  • ORA-00942: таблица или изглед не съществува
    причина: Тази таблица или преглед не съществува. или се въвежда име на изглед вместо таблица. Съществуващите потребителски таблици и прегледи могат да бъдат прегледани в TAB преглед.
    Действие: Проверете за правописни грешки и дали сте въвели име на преглед вместо таблица. Въведете съществуващи имена.
  • ORA-00943: клъстерът не съществува
    причина: Потребителският ресурс не е включен в групата с описаното име.
    Действие: Опишете правилното име на групата непосредствено след ключовата дума CLUSTER.
  • ORA-00944: недостатъчен брой групирани колони
    причина: Направен е опит за създаване на таблица с по-малко групирани колони, отколкото е описано в командата CREATE CLUSTER. Изразът CLUSTER на командата CREATE TABLE трябва да описва всички групирани колони, дефинирани при създаването на групата. Като използвате името на групата, можете да видите всички колони на групата в таблицата на речника COL.
    Действие: Опишете всички имена на колони в командата CREATE TABLE.
  • ORA-00945: посочената клъстерирана колона не съществува
    причина: Колоната, описана в израза на оператора CREATE TABLE, не е колона в тази таблица.
    Действие: Повторете, като използвате името на колоната в таблицата.
  • ORA-00946: липсваща ключова дума TO
    причина: Командата GRANT е въведена без ключовата дума TO или е използвана невалидна форма на тази команда.
    Действие: Проверете синтаксиса на двете основни форми на командата GRANT (предоставяне на достъп до база данни и предоставяне на привилегии). Вмъкнете правилно ключовата дума TO в командата GRANT.
  • ORA-00947: няма достатъчно стойности
    причина: SQL изразът изисква два идентични набора от стойности, а вторият набор съдържа по-малко стойности. Това може да се случи и ако вложен SELECT намери по-малко колони в израз WHERE или HAVING, както в: WHERE(A,B) IN (SELECT C FROM..) Грешка може да възникне и в оператор INSERT, в който изразът VALUES или SELECT не съдържа достатъчно стойности за INSERT, както в: INSERT INTO таблица (A,B) VALUES("C").
    Действие: Проверете силата на всеки комплект и ги направете еднакви по брой.
  • ORA-00948: Операторът ALTER CLUSTER вече не се поддържа
    причина: Командата ALTER CLUSTER е премахната
    Действие: За да добавите данни от таблица, използвайте следния набор от SQL изрази: CREATE TABLE<новая_таблица>ИЗБЕРЕТЕ*ОТ<старая_таблица>КЛЪСТЕР<имя_группы>ИЗПУСКАЙТЕ<старая_таблица>и ПРЕИМЕНУВАНЕ НА ТАБЛИЦА<новая_таблица> <старая_таблица>.
  • ORA-00949: незаконно препращане към външна база данни
    причина: Това е вътрешно съобщение за грешка, което не може да се появи по време на нормална работа.
    Действие: Моля, обърнете се към съответния софтуер за настройка за подробно описание на проблема.
  • ORA-00950: невалидна опция за пускане невалидна опция DROP
    причина: След командата DROP нямаше опция DROP като TABLE, VIEW, SYNONYM, CLUSTER или SPACE.
    Действие: Проверете синтаксиса на командата и използвайте правилния формат за опцията DROP.
  • ORA-00951: клъстерът не е празен
    причина: Командата DROP описва непразна група. Група може да бъде изтрита само ако не съдържа таблици. Премахнете таблица от група с помощта на командата DROP TABLE.
    Действие: Премахнете всички таблици от групата и след това използвайте командата DROP CLUSTER.
  • ORA-00952: липсваща ключова дума GROUP
    причина: Групата е неправилно внедрена.
    Действие: Не се изисква действие от потребителя.
  • ORA-00953: липсващо име на индекс
    причина: В командите CREATE, DROP, VALIDATE INDEX името на индекса е неправилно или липсва.
    Действие: Въведете правилното име на индекс след ключовата дума INDEX. Ако искате да изтриете или коригирате индекс, проверете името, като погледнете прегледа на ИНДЕКСИТЕ. Ако трябва да създадете нов индекс, първо проверете синтаксиса.
  • ORA-00954: липсваща ИНДЕНТФИЦИРАНА ключова дума
    причина: Командата GRANT CONNECTION е издадена без ключовата дума INDENTIFIED.
    Действие: Вмъкнете ключовата дума INDENTIFIED след потребителското име. Форматът на командата е както следва: GRANT CONNECTION TO<список пользователей>НЕИДЕНТИФИЦИРАН ОТ<пароль списка>.
  • ORA-00955: името вече се използва от съществуващ обект
    причина: Направен е опит за създаване на таблица, изглед, група или синоним, който вече съществува. Всяко име на потребителска таблица трябва да е различно от други имена на таблици, изгледи, групи или синоними, притежавани от други потребители.
    Действие: Или въведете уникално име на таблица, изглед, група или синоним, или променете или изтрийте съществуващо.
  • ORA-00956: невалидна опция за одит - невалидна опция за одит
    причина: Имаше невалидна опция за проверка.
    Действие: Проверете синтаксиса на командата и опитайте отново с правилната опция.
  • ORA-00957: дублирано име на колона
    причина: Името на колоната е декларирано два пъти в оператор CREATE или INSERT. Името на колона в таблица, преглед или група трябва да бъде уникално.
    Действие: Заменете името на колоната в командата CREATE с ново уникално. В командата INSERT премахнете дублиращите се имена.
  • ORA-00958: липсваща ключова дума CHECK
    причина: Липсва CHECK непосредствено след ключовата дума WHITH в клаузата WITH CHECK OPTION на оператора CREATE VIEW.
    Действие: Проверете синтаксиса на SQL оператора.
  • ORA-00959: име на дефиниция на пространство не съществува
    причина: Командата A DROP SPACE описва несъществуващо име на област.
    Действие: Използвайте съществуващи имена на дефиниции на обхват. За да видите съществуващи имена, изберете SNAME от SPACES.
  • ORA-00960: невалидна НАЧАЛНА стойност
    причина: В командата CREATE SPACE е посочена невалидна начална страница с данни или индексна страница. Тази стойност трябва да бъде поне 3.
    Действие: Въведете НАЧАЛНА стойност от поне 3.
  • ORA-00961: невалидна стойност INCREMENT
    причина: Описана е невалидна стойност на броя стъпки за страница с данни или индексна страница. Стойността на стъпката трябва да е по-голяма от 3.
    Действие: Въведете стойност на INCREMENT, по-голяма от 3.
  • ORA-00962: невалидна PCTFREE стойност
    причина: Неправилна процентна стойност на свободното пространство е описана в дефиницията на SPACE. Тази стойност трябва да бъде в диапазона от 1: до 99.
    Действие: Въведете стойност на PCTFREE между 1: и 99.
  • ORA-00963: невалидна стойност SIZE
    причина: В командата CREATE CLUSTER е посочена невалидна стойност за размер на логически блок. Размерът на логическия блок се използва за ефективно съхраняване на малки групи от данни.
    Действие: Опишете позволената стойност на размера на логическия блок (по-голяма от 0).
  • ORA-00964: невалидно име на дефиниция на пространство
    причина: Посочено е невалидно име на област в командата CREATE/DROP SPACE или в CREATE TABLE, или е посочено несъществуващо име на област в командата CREATE TABLE.
    Действие: Въведете валидно име на област. Валидното име започва с буква, съдържа не повече от 30 знака и се състои само от букви, цифри и специалните знаци $, _ и #. Не трябва да е запазена дума. Ако името ви е правилно, може по невнимание да сте премахнали дефиницията на обхвата TEMP.
  • ORA-00965: име на дефиниция на пространство вече съществува
    причина: Използвано е съществуващо име на област в командата CREATE SPACE. Имената на дефиниции на области трябва да са уникални.
    Действие: Въведете уникално име за района.
  • ORA-00966: липсваща ключова дума TABLE
    причина: Използвана е команда LOCK и ключовата дума TABLE е изписана неправилно, или пропусната, или неправилно поставена. Командата LOCK трябва да започва така: LOCK TABLE<имя таблицы> ... .
    Действие: Вмъкнете ключовата дума TABLE на подходящото място.
  • ORA-00968: липсва ключова дума INDEX
    причина: Използвана е командата CREATE UNIQUE и ключовата дума INDEX е изписана неправилно, или пропусната, или неправилно поставена.
    Действие: Моля, проверете синтаксиса и опитайте отново.
  • ORA-00969: липсва ключова дума ON
    причина: Използвана е команда GRANT или CREATE INDEX и ключовата дума ON е изписана неправилно, или пропусната, или неправилно поставена.
    Действие: Вмъкнете ключовата дума ON на подходящото място.
  • ORA-00970: липсва ключова дума WITH - липсва ключова дума WITH
    причина: Ключовата дума START е използвана без WITH. И двете ключови думи са задължителни в клаузата START WITH за заявката.
    Действие: Заменете думата ЗАПОЧНЕТЕ с ЗАПОЧНЕТЕ С.
  • ORA-00971: липсваща ключова дума SET - липсваща ключова дума SET
    причина: В командата UPDATE ключовата дума SET е изписана неправилно, пропусната или неправилно поставена.
    Действие: Вмъкнете ключовата дума SET след името на таблицата за промяна.
  • ORA-00972: идентификаторът е твърде голям
    причина: Името на обекта на базата данни е дълго повече от 30 знака (Обектите на базата данни са таблици, групи, изгледи, индекси, синоними, области и потребителски имена.
    Действие: Съкратете името до максимум 30 знака.
  • ORA-00973: невалиден приблизителен брой редове
    причина: Стойността на броя на редовете, описана в командата CREATE INDEX, е число, по-малко от 0.
    Действие: Опишете валидна стойност (по-голяма от 0).
  • ORA-00974: невалиден коефициент на зареждане на индексен блок (процент)
    причина: Процент от използвания обем, описан в командата CREATE INDEX, областта не принадлежи към интервала от 1: до 90%.
    Действие: Въведете стойност за PCTFREE между 1 и 90. По подразбиране е 10.
  • ORA-00975: Дата + дата не са разрешени
    причина: Опит за добавяне на две полета с данни заедно. Данните могат да се добавят само към полетата с числа, но не и към други данни.
    Действие: Добавяне на поле с данни към числово поле.
  • ORA-00977: опция за дублиране на одит - опция за двоен одит
    причина: Същата опция за управление е описана отново.
    Действие: Премахнете излишното описание на управлението.
  • ORA-00978: функция за вложен набор без GROUP BY
    причина: Групова функция (като MIN, MAX или AVG) е използвана в друга групова функция (като MAX(COUNT(*))) без съответна клауза GROUP BY.
    Действие: Или добавете клауза GROUP BY, или премахнете външното ниво на влагане.
  • ORA-00979: изразът не е GROUP BY, не принадлежи към GROUP BY
    причина: Клаузата GROUP BY не съдържа всички изрази на клаузата SELECT. Изрази от SELECT, които не са включени в груповите функции (COUNT, SUM, AVG, MAX, MIN), трябва да бъдат изброени в клаузата GROUP BY.
    Действие: Включете всички SELECT изрази, които не са аргументи за групови функции в клаузата GROUP BY.
  • ORA-00980: преводът на синоним вече не е валиден
    причина: Синонимът, който сте използвали, е за таблица, изглед или синоним, който е бил изтрит или преименуван.
    Действие: Заменете синонима с името на таблицата, изгледа, синонима, за който е предназначен. Или генерирайте отново синонима за правилните таблици, изгледи или синоними.
  • ORA-00981: не може да смесва опции за одит на таблица и система
    причина: Едновременно опцията за ширина както на таблицата, така и на системата са описани в една и съща декларация AUDIT.
    Действие: Коригирайте оператора.
  • ORA-00982: липсващ знак плюс
    причина: Когато е добавено, няма знак плюс (+) след лявата скоба. При добавяне лявата (отворена) скоба се тълкува като описваща допълнение и се очаква знак плюс. За да се опише прикачен файл към колона, описанието на колоната трябва да бъде последвано от знак плюс, заграден в скоби (+).
    Действие: Коригирайте SQL синтаксиса.
  • ORA-00984: колоната не е разрешена тук
    причина: Името на колоната е използвано там, където не е позволено, като например в клаузата VALUES на оператор INSERT.
    Действие: Проверете синтаксиса на командата и използвайте имена на колони само там, където е позволено.
  • ORA-00985: невалидно име на програма
    причина
    Действие
  • ORA-00986: липсващо или невалидно име(на) на група - липсващо или невалидно име(на) на група
    причина: Това свойство не е внедрено.
    Действие: Не се изисква действие от потребителя.
  • ORA-00987: липсващи или невалидни потребителски имена
    причина: Потребителското име не е посочено в командата GRANT или едно от посочените имена е неправилно. Валидни потребителски имена трябва да се показват след думата TO в командата GRANT. Валидното потребителско име започва с буква, ограничено е до 30 знака и се състои само от букви, цифри и специалните знаци $, _ и #. Не трябва да е запазена дума.
    Действие: Опишете валидно потребителско име (или списък с потребители) след ключовата дума TO в командата GRANT.
  • ORA-00988: липсваща или невалидна парола(и)
    причина: В командата GRANT има повече потребителски имена, отколкото пароли. Трябва да се посочи валидна парола за всеки потребител, посочен в командата GRANT.
    Действие: Въведете правилната парола за всеки потребител.
  • ORA-00989: дадени са твърде много пароли за потребителски имена
    причина: Има повече пароли, отколкото са описани от потребителските имена в командата GRANT. Трябва да се въведе само една парола за всеки потребител, посочен в командата GRANT.
    Действие: Въведете същия брой потребители и пароли.
  • ORA-00990: липсваща или невалидна привилегия
    причина: В командата за привилегии GRANT не са декларирани привилегии или една от тях е невалидна.
    Действие: Въведете една или повече валидни привилегии. Разрешени са следните привилегии: ИЗБОР, ВМЪКВАНЕ, ИЗТРИВАНЕ, АКТУАЛИЗИРАНЕ, ПРОМЯНА, ИНДЕКС, ПУСКАНЕ, КЛУСТЕР и ВСИЧКИ. Могат да бъдат предоставени повече от една привилегия, като ги въведете в списък, разделени със запетаи (,) или като опишете думата ВСИЧКИ, за да предоставите всички привилегии.
  • ORA-00991: неразпознаваем формат за команда GRANT
    причина: Въведена е невалидна форма на командата GRANT.
    Действие: Проверете синтаксиса на командата Има два вида команда GRANT. Първият тип се използва за дефиниране на потребителски достъп до базата данни и трябва да има следния формат: GRANT CONNECT/RESOURCE/DBA TO<имя пользователя>ИДЕНТИФИЦИРАН ОТ<пароль>. Трябва да присъства поне една от ключовите думи CONNECT, RESOURCE или DBA. Вторият тип се използва за предоставяне на привилегии на обекти на база данни и има формат: GRANT<список привелегий>НА<обзор/ таблица>ДА СЕ< индентификатор пользователя>/ПУБЛИЧНО.
  • ORA-00992: неразпознаваем формат за командата REVOKE
    причина: Въведена е невалидна форма на командата REVOKE.
    Действие: Проверете синтаксиса на командата и опитайте отново.
  • ORA-00993: липсва ключова дума GRANT
    причина: Опцията WITH е декларирана в края на команда GRANT без опция GRANT. За да предоставите привилегии на потребител и разрешение да ги предоставите на други потребители, използвайте опцията WITH GRANT OPTIO в края на команда GRANT.
    Действие: Заменете ключовата дума WITH с WITH GRANT OPTION.
  • ORA-00994: липсваща ключова дума OPTION - липсва ключова дума OPTIO
    причина: Опцията WITH GRANT беше използвана в края на командата GRANT без думата OPTION.
    Действие: Променете ключа от WITH GRANT на WITH GRANT OPTION.
  • ORA-00995: липсващ или невалиден идентификатор на синоним
    причина: В команда CREATE или DROP SYNONYM име на синоним е било пропуснато или невалидно.
    Действие: Проверете за правописни грешки и синтаксис на командите. Валидно име на синоним трябва да следва незабавно ключа SYNONYM и в двете команди. Валидно име на синоним започва с буква, ограничено е до 30 знака и се състои само от букви, цифри и специалните знаци $, _ и #. Не трябва да е запазена дума.
  • ORA-00996: операторът за свързване е ¦¦ не ¦ - операторът за свързване е ||, а не |
    причина: Единичният удар (|) се разбира като опит да се опише конкатенация, но операторът за конкатенация се състои от два удара (||).
    Действие: Въведете двойна черта за операцията за конкатенация или премахнете единична черта, ако конкатенацията не е необходима.
  • ORA-00997: незаконно използване на дълъг тип данни
    причина: Използвали сте типа данни LONG, който се използва за съхраняване на данни, по-големи от 240 знака, във функция или в клаузи WHERE, GROUP BY, ORDER BY. Стойността LONG може да се използва само в клауза SELECT.
    Действие: Премахнете това поле от функцията или офертата.
  • ORA-00998: трябва да назове този израз с етикет на колона
    причина: Използвана е функция или израз в командата CREATE VIEW, но съответното име на колона не е декларирано. Когато израз или функция се използва за изглед, всички имена на колони и изгледи трябва да бъдат правилно изброени в командата CREATE VIEW.
    Действие: Въведете всички имена на колони за преглед в скоби след името на прегледа.
  • ORA-00999: невалидно име на изглед.
    причина: Липсващо или невалидно име на изглед в командата CREATE VIEW.
    Действие: Въведете валидно име на изглед веднага след CREATE VIEW. Валидно име за сърфиране започва с буква, ограничено е до 30 знака и се състои само от букви, цифри и специалните знаци $,_ и #. Не трябва да е запазена дума.