Acasă / Știri / Caracteristici de tratare a erorilor a serverului de baze de date Oracle. Erori Oracle: erori ale bazei de date, explicații și acțiuni de remediere opțiuni de excepție Oracle

Caracteristici de tratare a erorilor a serverului de baze de date Oracle. Erori Oracle: erori ale bazei de date, explicații și acțiuni de remediere opțiuni de excepție Oracle

Gestionarea excepțiilor în PL/SQL

În orice limbaj procedural, este esențial să ne amintim că programele sunt o entitate completă și separată de baza de date. Prin urmare, ori de câte ori programul solicită rânduri din baza de date, programatorul trebuie să se asigure că cererea a fost finalizată cu succes.

În bazele de date relaționale, baza de date va transmite întotdeauna o variabilă specială numită SQLCODE înapoi oricărui program apelant. SQLCODE returnat de la apelul de acoperire de la program la baza de date este tradus de Oracle într-o variabilă booleană numită (vezi tabelul de mai jos).

Variabila de excepție PL/SQL

ACCESS_INTO_NULL

COLLECTION_IS_NULL

CURSOR_DEJA_DESCHIS

DUP_VAL_ON_INDEX

ROWTYPE_MISMATCH

SUBSCRIPT_BEYOND_COUNT

SUBSCRIPT_OUTSIDE_LIMIT

SYS_INVALID_ROWID

TIMEOUT_ON_RESOURCE

De exemplu, dacă baza de date returnează un SQLCODE=100, variabila PL/SQL NO_DATA_FOUND va fi setată la TRUE.

Fără excepție, toate programele PL/SQL ar trebui să se anuleze ori de câte ori un SQLCODE neașteptat este returnat de baza de date Oracle.

Acest lucru poate avea un efect dezastruos asupra bazei de date, mai ales atunci când PL/SQL încarcă date în tabele bazate pe premise false. Pentru a preveni această tragedie, Oracle oferă o variabilă WHEN OTHERS, care este setată la TRUE dacă orice cod SQLCODE neașteptat este returnat din baza de date Oracle.

De exemplu, luați în considerare următorul cod:

DECLARA
err_num NUMBER;
err_msg VARCHAR2(100);
ÎNCEPE
...
EXCEPȚIE
...
CÂND ALȚII ATUNCI
err_num:= SQLCODE;
err_msg:= SUBSTR(SQLERRM, 1, 100);
INSERT INTO errors VALUES (err_num, err_msg);
SFÂRŞIT;

Aici vedem că gestionarea excepțiilor are o zonă EXCEPȚII care testează WHEN OTHERS. Dacă variabila booleană WHEN OTHERS este TRUE, codul PL/SQL captează SQLCODE și mesajul de eroare asociat (SQLERRM) și stochează aceste valori într-un tabel special de erori Oracle.

Gestionarea excepțiilor Oracle

Dezvoltatorii semnalează adesea condițiile de eroare și le gestionează folosind gestionarea excepțiilor Oracle și utilizarea logicii IF-THEN.

Gestionarea excepțiilor Oracle folosind logica IF-THEN pentru a semnaliza erorile

Exemplul de mai sus ilustrează gestionarea excepțiilor Oracle folosind variabila booleană bAidAmountOk pentru a ține evidența unei stări pe parcursul procesării fiecărei dosare de elev.

Această utilizare a gestionării excepțiilor Oracle are un impact asupra performanței. Gestionarea excepțiilor Oracle utilizează mai multe instrucțiuni pentru a testa starea de eroare. Fiecare instrucțiune de tratare a excepțiilor Oracle necesită cicluri CPU pentru a fi finalizate. O abordare mult mai bună implică utilizarea gestionării excepțiilor Oracle pentru a evita irosirea ciclurilor CPU, așa cum se vede mai jos:

Utilizarea gestionarilor de excepții Oracle pentru a îmbunătăți performanța.

În acest exemplu de gestionare a excepțiilor Oracle, xAID_AMOUNT_OK excepția este ridicată în mod explicit în interiorul buclei. Acest lucru permite execuției să omite instrucțiunile care apar după ce GPA-ul studentului este verificat, reducând CPU-ul utilizat în gestionarea excepțiilor Oracle.

Gestionarea excepțiilor Oracle este foarte eficientă. Când se ridică o excepție Oracle, toate instrucțiunile ulterioare din bloc sunt ocolite, astfel încât excepția să poată fi gestionată de un handler de excepții Oracle. Gestionarea excepțiilor Oracle poate fi utilizată pentru a crește semnificativ performanța.

Burleson este echipa americană

Notă: Această documentație Oracle a fost creată ca suport și referință de instruire Oracle pentru a fi utilizată de către profesioniștii noștri de consultanță în reglarea performanței DBA. Nu ezitați să puneți întrebări pe forumul nostru Oracle.

Verifica experienţă! Oricine se gândește să utilizeze serviciile unui expert de asistență Oracle ar trebui să-și investigheze în mod independent acreditările și experiența și să nu se bazeze pe reclame și pe expertiza autoproclamată. Toți experții legitimi Oracle își publică .

Erată? reglaj de performanță


Copyright 1996 - 2017

Toate drepturile rezervate de Burleson

® este marcă înregistrată a Oracle Corporation.

Suport de urgență de la distanță oferit de Conversational

În acest capitol, vom discuta Excepțiile în PL/SQL. O excepție este o condiție de eroare în timpul execuției unui program. PL/SQL sprijină programatorii să prindă astfel de condiții folosind EXCEPȚIE bloc în program și se ia o acțiune adecvată împotriva condiției de eroare. Există două tipuri de excepții −

  • Excepții definite de sistem
  • Excepții definite de utilizator

Sintaxă pentru gestionarea excepțiilor

Sintaxa generală pentru gestionarea excepțiilor este următoarea. Aici puteți enumera cât mai multe excepții puteți gestiona. Excepția implicită va fi gestionată folosind CÂND alţii ATUNCI

DECLARA ÎNCEPE EXCEPȚIE WHEN exception1 THEN exception1-handling-statements WHEN exception2 THEN exception2-handling-statements WHEN exception3 THEN exception3-handling-statements ........ WHEN others THEN exception3-handling-statements END;

exemplu

Să scriem un cod pentru a ilustra conceptul. Vom folosi tabelul CLIENȚI pe care l-am creat și folosit în capitolele anterioare −

DECLARE c_id customers.id%type:= 8; c_nume clientS.Nume%tip; c_addr customers.address%type; BEGIN SELECT name, address INTO c_name, c_addr FROM customers WHERE id = c_id; DBMS_OUTPUT.PUT_LINE("Nume: "|| c_name); DBMS_OUTPUT.PUT_LINE("Adresa: " || c_addr); EXCEPȚIE CÂND no_data_found ATUNCI dbms_output.put_line("Nu există un astfel de client!"); CÂND alții ATUNCI dbms_output.put_line("Eroare!"); SFÂRŞIT; /

Niciun astfel de client! Procedura PL/SQL finalizată cu succes.

Programul de mai sus afișează numele și adresa unui client al cărui ID este dat. Deoarece nu există un client cu valoarea ID 8 în baza noastră de date, programul ridică excepția de rulare NU S-AU GASIT DATE, care este surprins în bloc EXCEPȚIE.

Ridicarea excepțiilor

Excepțiile sunt generate automat de serverul bazei de date ori de câte ori există vreo eroare internă a bazei de date, dar excepțiile pot fi ridicate în mod explicit de către programator folosind comanda A RIDICA. Mai jos este sintaxa simplă pentru ridicarea unei excepții −

DECLARE exception_name EXCEPTION; BEGIN IF condiția THEN RAISE exception_name; END IF; EXCEPTION WHEN exception_name THEN instructiune; SFÂRŞIT;

Puteți utiliza sintaxa de mai sus pentru a ridica excepția standard Oracle sau orice excepție definită de utilizator. În secțiunea următoare, vă vom oferi un exemplu despre ridicarea unei excepții definite de utilizator. Puteți ridica excepțiile standard Oracle într-un mod similar.

Excepții definite de utilizator

PL/SQL vă permite să definiți propriile excepții în funcție de nevoile programului dumneavoastră. O excepție definită de utilizator trebuie să fie declarată și apoi ridicată în mod explicit, folosind fie o instrucțiune RAISE, fie procedura DBMS_STANDARD.RAISE_APPLICATION_ERROR.

Sintaxa pentru declararea unei excepții este −

DECLARE EXCEPȚIA my-exception;

exemplu

Următorul exemplu ilustrează conceptul. Acest program solicită un ID de client, atunci când utilizatorul introduce un ID nevalid, excepție ID invalid este ridicat.

DECLARE c_id customers.id%type:= &cc_id; c_nume clientS.Nume%tip; c_addr customers.address%type; -- excepție definită de utilizator 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; /

Când codul de mai sus este executat la promptul SQL, acesta produce următorul rezultat -

Introduceți valoarea pentru cc_id: -6 (să introducem o valoare -6) vechi 2: c_id customers.id%type:= &cc_id; nou 2: c_id customers.id%type:= -6; ID-ul trebuie să fie mai mare decât zero Procedura !PL/SQL finalizată cu succes.

Excepții predefinite

PL/SQL oferă multe excepții predefinite, care sunt executate atunci când orice regulă a bazei de date este încălcată de un program. De exemplu, excepția predefinită NO_DATA_FOUND este ridicată atunci când o instrucțiune SELECT INTO nu returnează niciun rând. Următorul tabel listează câteva dintre excepțiile importante predefinite -

Excepție Eroare Oracle SQLCODE Descriere
ACCESS_INTO_NULL 06530 -6530 Este ridicată atunci când unui obiect nul i se atribuie automat o valoare.
CASE_NOT_FOUND 06592 -6592 Este ridicată atunci când nu este selectată nici una dintre opțiunile din clauza WHEN a unei instrucțiuni CASE și nu există nicio clauză ELSE.
COLLECTION_IS_NULL 06531 -6531 Este ridicată atunci când un program încearcă să aplice metode de colectare, altele decât EXISTS, unui tabel imbricat sau varray neinițializat, sau programul încearcă să atribuie valori elementelor unui tabel imbricat sau varray neinițializat.
DUP_VAL_ON_INDEX 00001 -1 Este ridicată atunci când se încearcă stocarea valorilor duplicate într-o coloană cu index unic.
INVALID_CURSOR 01001 -1001 Este ridicată atunci când se încearcă efectuarea unei operații cu cursorul care nu este permisă, cum ar fi închiderea unui cursor nedeschis.
NUMAR INVALID 01722 -1722 Este ridicată atunci când conversia unui șir de caractere într-un număr eșuează, deoarece șirul nu reprezintă un număr valid.
LOGIN_DENIED 01017 -1017 Este generată atunci când un program încearcă să se conecteze la baza de date cu un nume de utilizator sau o parolă nevalidă.
NU S-AU GASIT DATE 01403 +100 Este ridicată atunci când o instrucțiune SELECT INTO nu returnează niciun rând.
NOT_LOGGED_ON 01012 -1012 Este generat atunci când un apel la baza de date este emis fără a fi conectat la baza de date.
PROGRAM_ERROR 06501 -6501 Este ridicată atunci când PL/SQL are o problemă internă.
ROWTYPE_MISMATCH 06504 -6504 Este ridicată atunci când un cursor preia valoare într-o variabilă cu tip de date incompatibil.
SELF_IS_NULL 30625 -30625 Este ridicată atunci când este invocată o metodă membru, dar instanța tipului de obiect nu a fost inițializată.
STORAGE_ERROR 06500 -6500 Este generat atunci când PL/SQL a rămas fără memorie sau memoria a fost coruptă.
TOO_MANY_ROWS 01422 -1422 Este ridicată atunci când o instrucțiune SELECT INTO returnează mai mult de un rând.
VALUE_ERROR 06502 -6502 Este ridicată atunci când apare o eroare de aritmetică, conversie, trunchiere sau restricție de dimensiune.
ZERO_DIVIDE 01476 1476 Este crescut atunci când se încearcă împărțirea unui număr la zero.

Ph.D. Vladimir Likhachev, Universitatea Pedagogică din Kaluga, numită după K.E. Ciolkovski

Pentru programele care lucrează cu baze de date, este important nu numai să gestioneze corect erorile acestora, ci și să genereze mesaje informative despre aceste erori. Prezența unor astfel de mesaje vă permite să identificați rapid cauzele și să corectați erorile. Acest lucru este valabil mai ales atunci când lucrează cu programul utilizatorului final, deoarece în cele mai multe cazuri el nu cunoaște nu numai structura unei anumite baze de date, ci și bazele teoretice ale bazelor de date relaționale.

Destul de ciudat, situația cu formarea mesajelor de eroare în programe este destul de adesea foarte diferită de procesarea erorilor în sine. La tratarea erorilor, este de obicei posibilă dezvoltarea unei strategii comune, care vă permite să localizați procesarea acestora în una sau mai multe funcții. O abordare similară pentru mesajele de eroare poate fi implementată pe baza faptului că în mesajul de eroare serverul Oracle indică tipul de eroare și obiectul bazei de date care a provocat-o. Astfel de obiecte sunt de obicei constrângeri, cum ar fi chei primare, unice și străine, indecși unici, constrângeri „nu nule” etc. Informații detaliate despre aceste constrângeri pot fi obținute din tabelele de sistem și din vizualizările bazei de date și din valorile care pot fi modificate şi modificate pot fi determinate.dus la o eroare. Dar problema este că implementarea unui astfel de mecanism pentru generarea de mesaje de eroare în aplicațiile reale întâmpină o serie de dificultăți:

  • Dependența mesajului de eroare de scopul programului. Chiar și pentru programele care lucrează cu aceeași bază de date, poate fi necesar să se genereze mesaje diferite despre aceeași eroare. De exemplu, într-un program de editare a datelor utilizatorului, mesajul ar trebui să fie: „Un produs cu acest nume este deja înregistrat! Verificați numele produsului!”. Dar în programul de import de date este necesar un mesaj cu un conținut complet diferit: „Datele importate sunt duplicate - verificați data pentru care datele sunt importate!”.
  • Dificultate la generarea de mesaje pentru unele erori cauzate de limitările bazei de date. De exemplu, constrângerile CHECK de pe tabele pot folosi interogări și condiții destul de complexe. Prin urmare, formarea mesajelor pe baza analizei lor poate fi o sarcină destul de dificilă.
  • Utilizarea numelor personalizate de tabele și coloane în programele client care sunt diferite de numele lor din baza de date. De exemplu, tabelul are denumirea „BUNURI”, iar în aplicația client, datele acestui tabel pot fi afișate în director ca „Produse” sau „Produse”.

Combinația acestor factori duce de obicei la faptul că formarea de mesaje chiar și despre același tip de erori este implementată individual pentru fiecare tranzacție. Drept urmare, codul pentru generarea mesajelor de eroare este distribuit în întreaga aplicație, ceea ce complică întreținerea acesteia. Datorită necesității de a scrie cod pentru aproape fiecare eroare posibilă, unele dintre erorile de care este conștient de dezvoltator se dovedesc a fi fără mesaje corespunzătoare pentru utilizator. Ca urmare, se formează mesaje suficient de informative pentru utilizatorul final doar pentru unele dintre erori, în alte cazuri, acesta trebuie să se mulțumească, în cel mai bun caz, cu mesaje de la serverul bazei de date însuși. Informația unor astfel de mesaje pentru utilizatorul obișnuit în majoritatea cazurilor nu este suficientă pentru a identifica cauza problemei și pentru a o elimina.

Metoda de generare a mesajelor de eroare informative pentru utilizatorul luată în considerare în articol este destul de universală, putând fi implementată atât în ​​aplicațiile client, cât și pe partea serverului Oracle. Poate fi folosit în diferite tipuri de programe, cum ar fi:

  • Programe care utilizează o interfață specială pentru a introduce și modifica datele bazei de date. În cele mai multe cazuri, mesajele de eroare informative pot fi obținute dintr-o analiză a structurii bazei de date. Acest lucru va informa utilizatorul despre cauza lor cu un efort minim din partea dezvoltatorilor și a software-ului.
  • Programe cu capacitatea de a construi interogări SQL arbitrare de către utilizator. Formarea mesajelor pe baza analizei structurii bazei de date poate fi deosebit de relevantă pentru programele care se adresează unei game largi de utilizatori, inclusiv celor cu un nivel scăzut de cunoștințe în acest domeniu. Acest lucru va face mesajele de eroare din interogările SQL mai ușor de înțeles pentru utilizator.
  • platforme de subiecte. Utilizarea metodelor descrise în articol va permite platformei subiectului însăși să genereze mesaje informative de eroare a bazei de date pe baza analizei structurii acesteia. Acest lucru va face posibilă scurtarea codului de limbă al platformei utilizat pentru a gestiona situațiile de eroare. Iar erorile care necesită mesaje speciale, dar care s-au dovedit a fi fără ele, vor fi suficient de informative pentru a facilita identificarea cauzei lor.

Problemele de formare a mesajelor descrise mai sus pot fi rezolvate dacă mesajele de eroare sunt împărțite în mod convențional în două grupuri:

  • mesaje universale care se formează pe baza analizei structurii bazei de date;
  • mesaje speciale care sunt definite individual pentru fiecare eroare.

Metoda de generare a mesajelor de eroare a bazei de date descrisă în articol poate fi aplicată la multe servere de baze de date relaționale. Un exemplu de utilizare a acestuia pentru bazele de date server Firebird este discutat în articol. Dacă aplicația client este dezvoltată în Object Pascal (Delphi, Kylix, Free Pascal), atunci capacitățile bibliotecii JEDI pot fi utile pentru a identifica cauzele erorilor neașteptate.

1. Mesaje de eroare universale cauzate de restricțiile bazei de date

După cum am menționat mai sus, ideea principală a creării de mesaje universale este de a forma un mesaj suficient de informativ și de înțeles pentru utilizatorul final, pe baza datelor din mesajul de eroare de la Oracle și a structurii bazei de date. Să presupunem că în tabelul „BUNURI” (script 1.1) utilizatorul încearcă să adauge un produs cu un nume (coloana „TITLU”), care este deja în tabel.

CREATE TABLE DEMO.GOODS (COD INTEGER NOT NULL , TITLE VARCHAR2(50 byte) NOT NULL , PRICE NUMBER(16, 2) NOT NULL , CONSTRAINT CK_PRICE CHECK (PRIT > 0), CONSTRAINT PK_GOODS PRIMARY KEY (COD)); COMENTARIU LA TABLE DEMO.GOODS este „Marfa”; COMENTARIU LA COLONA DEMO.GOODS.CODE este „Codul produsului”; COMENTARIU LA COLONA DEMO.GOODS.TITLE este „Titlu”; COMENTARIU LA COLONA DEMO.GOODS.PRICE este „Preț”; CREAȚI INDEX UNIC DEMO.IDX_GOODS_TITLE PE DEMO.GOODS(TITLE);

Scriptul 1.1. Crearea tabelului „MARFURI”.

Serverul va genera o eroare în acest caz, deoarece coloana „TITLE”, care stochează numele produsului, este inclusă în indexul unic „DEMO.IDX_GOODS_TITLE”:

În schimb, un mesaj pentru utilizator poate fi format, de exemplu, unul dintre mesajele:

  • Valoarea câmpului „Nume” din tabelul „Produse” trebuie să fie unică!
  • Un produs cu acest nume este deja înregistrat! Verificați numele produsului!
  • Produsele cu același nume nu pot fi în directorul de produse!

Deși aceste mesaje diferă, toate indică informații despre obiectul pentru care este încălcată constrângerea de unicitate - acesta este câmpul „Nume” din tabelul „Produse”.

Una dintre problemele cu generarea acestui tip de mesaj este că numele câmpurilor și tabelelor personalizate sunt diferite de numele tabelelor și coloanelor din baza de date. Pentru ca utilizatorul să înțeleagă mesajul de eroare, trebuie să folosească nume personalizate. Un tabel sau comentarii separate pentru tabele și coloane pot fi folosite pentru a potrivi numele tabelelor și câmpurilor și numele lor personalizate. Ultima opțiune poate fi considerată mai preferabilă, deoarece vă permite să documentați baza de date în același timp. De aceea, în scriptul 1.1, numele definite de utilizator sunt date ca comentarii pentru tabel și coloanele acestuia. Dacă comparăm mesajele și comentariile de mai sus pentru tabel și coloane, putem observa că formarea primului mesaj este cea mai simplă opțiune. Pentru a forma celelalte două mesaje, poate fi necesară sinteza lexicală, dar aceasta este o sarcină separată. Aș dori să vă atrag atenția asupra faptului că în viitor în articol este dată doar una dintre posibilele opțiuni de mesaj pentru fiecare caz de eroare. În practică, alegerea stilului și a conținutului mesajului poate depinde de o serie de factori și va fi determinată de proiectantul sistemului.

Desigur, nu se poate exclude să nu existe comentarii pentru un tabel sau o coloană care să fie incluse în mesaj. În această situație, mesajul de eroare poate afișa direct numele tabelului sau al coloanei.

2. Nu este specificată valoarea câmpului obligatoriu (restricție NOT NULL)

Această eroare este generată de server în mai multe cazuri:

  • a fost încălcată constrângerea „nu nulă” de pe coloană;
  • nu a fost specificată nicio valoare pentru o coloană care face parte dintr-un index unic, cheie principală sau cheie unică.

În toate aceste cazuri, serverul generează o eroare:

Pentru a obține descrierea tabelului și a coloanei din mesajul de eroare, poate fi utilizată interogarea 2.1.

selectați tc.comments ca table_comment, cc.comments ca column_comment din all_tab_columns c, all_tab_comments tc, all_col_comments cc c.owner și cc.table_name = c.table_name și cc.column_name = c.column_name

Cererea 2.1. Obțineți o descriere a tabelului și a coloanei

Ca parametri de interogare „owner”, „table_name”, „column_name” trebuie să specificați numele schemei, tabelului și, respectiv, coloanei din mesajul de eroare. Interogarea returnează comentariile pentru tabel și coloană.

Folosind rezultatele acestei interogări, se poate genera un mesaj de eroare, de exemplu, următorul conținut:

Trebuie să specificați valoarea coloanei "<Описание поля>"in masa"<Описание таблицы>" la<добавлении новой/изменении>înregistrări.

3. Unicitatea valorii unui câmp sau a unui set de coloane este ruptă

Necesitatea introducerii unei valori unice pentru o coloană poate fi cerută în principal în trei cazuri:

  • coloana face parte din cheia principală;
  • coloana este inclusă în cheia unică;
  • coloana este inclusă într-un index unic.

În toate cele trei cazuri, Oracle Database generează aceeași eroare:
ORA-00001: constrângere unică încălcată (<Схема>.<Ограничение>)

Mesajul de eroare specifică constrângerea care a cauzat eroarea. Pentru a obține informații despre coloanele incluse în cheile principale sau unice, puteți folosi interogarea 3.1, pentru a obține informații despre index - interogarea 3.2.

selectați dcs.constraint_type, cc.table_name, tc.comments ca table_comment, cc.column_name, ccom.comments ca column_comment din all_cons_columns cc join all_tab_comments tc on (tc.owner = cc.owner și tc.table_name = cc.table_name) join all_col_comments ccom on (ccom.owner = cc.owner și ccom.table_name = cc.table_name și ccom.cclumn_name = cc. column_name) alăturați toate_constraints dcs on (dcs.constraint_name = cc.constraint_name) unde cc.owner = :owner și cc.constraint_name = :key_name
Cererea 3.1. Obținerea de informații despre coloanele tabelului incluse în cheile principale sau unice.
selectați ic.table_name, tc.comments ca table_comment, ic.column_name, ccom.comments ca column_comment din all_ind_columns ic join all_tab_comments tc on (tc.owner = ic.table_owner și tc.table_name = ic.table_name) join all_col_comments ccom on (ccom.owner = ic.table_owner și ccom.table_name = ic.table_name și ccom.column_name = ic.column_name) column_name) unde table_owner = :owner și index_name = :index_name
Cererea 3.2. Obținerea de informații despre coloanele tabelului incluse în index.

Parametrii de interogare sunt numele schemei ("proprietar"), numele cheii ("nume_cheie") sau numele indexului ("nume_index"). Interogările returnează numele și comentariile pentru tabelele și coloanele din constrângere. Interogarea 3.1 returnează și tipul de constrângere ("constraint_type"): "P" - cheia principală, "U" - cheia unică. Numărul de înregistrări returnate de interogări se potrivește cu numărul de coloane din constrângerea unică.

Pe baza informațiilor primite despre constrângerea de unicitate pentru utilizator, pot fi generate variante de mesaje de eroare, de exemplu cele prezentate în secțiunea 1.

4. Erori cauzate de constrângeri de cheie străină

Atunci când se efectuează operațiuni pe date tabulare asociate cheilor străine, există mai multe motive care duc la erori:

1. La tabelul subordonat se adaugă o înregistrare, în care coloana inclusă în cheia externă nu are o valoare corespunzătoare în tabelul principal. O situație similară apare la modificarea valorii unei coloane dintr-un tabel subordonat dacă noua valoare a coloanei nu se află în tabelul principal. Oracle Database în acest caz generează o eroare:

  1. Se încearcă modificarea valorii unei coloane din tabelul părinte la care se face referire în tabelul copil. În acest caz, Oracle Database generează o eroare:
  1. Se încearcă ștergerea datelor din tabelul principal la care se face referire în tabelul copil. Dacă o constrângere „NO ACTION” este specificată în definiția unei relații între tabele pentru o operație de ștergere a datelor, atunci Oracle nu permite ștergerea datelor din tabelul principal dacă tabelul copil are înregistrări asociate cu înregistrarea care este ștearsă. În această situație, Oracle Database generează o eroare similară cu cazul precedent.

Puteți utiliza interogarea 4.1 de mai jos pentru a obține informații despre coloanele tabelelor master și copil care fac parte din cheia externă.

selectați a.constraint_name, a.table_name, tc1.comments ca table_comment, a2.column_name, cc1.comments ca column_comment, b.owner ca r_owner, b.table_name ca r_table_name, tc2.comments ca r_table_comment, b2.column_nameccn ca _r_name_column2 .commentări ca r_column_comment din 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 unde a.owner = :owner și a.constraint_type and_type a.constraint_type:. ("P","U") și b.constraint_name = a.r_constraint_name și b.owner = a.r_owner și a2.constraint_name = a.constraint_name și a2.table_name = a.table_name și a2.owner = a.owner și b2.constraint_name = b.constraint_name și b2.table_name = b.table_name și b2.owner = b.owner și b2.position = a2.position și tc1.owner = a.owner și tc1.table_name = a.table_name și cc1. proprietar = a2.owner și cc1.table_name = a2.table_name și cc1.column_name = a2.column_name și tc2.owner = b.owner și tc2.table_name = b.table_name și cc2.owner = b2.owner și cc2.table_name = b2.nume_tabel și cc2.nume_coloană = b2.nume_coloană
Cererea 4.1. Obținerea de informații despre o cheie străină.

Solicitarea are doi parametri: „owner” și „foreign_key” - schema și cheia externă, despre care doriți să obțineți informații. Returnează informații despre coloanele incluse în cheia externă: „table_name”, „table_comment” - numele și descrierea tabelului subordonat; „nume_coloană”, „column_comment” - numele și descrierea coloanei din tabelul subordonat. Coloanele de interogare prefixate cu „r_” returnează informații despre tabelul principal. Numărul de înregistrări returnate de interogare corespunde numărului de coloane incluse în cheia externă.

Pe baza acestor informații, mesajele de eroare cu cheie străină pot fi generate pentru utilizator.

5. Mesaje de eroare speciale cauzate de restricțiile bazei de date

Necesitatea de a utiliza mesaje speciale poate apărea dacă mesajul de eroare universal din anumite motive nu poate fi utilizat sau nu poate fi generat. Un exemplu al ultimului caz este constrângerile CHECK pe tabele. În condiții constrânse, pot fi utilizate interogări și condiții, a căror analiză poate fi o sarcină destul de dificilă. Prin urmare, pentru aceste constrângeri, este adesea mai convenabil să folosiți mesaje care sunt definite în momentul proiectării.

Se pot distinge două grupuri de mesaje de eroare speciale. Primul tip de mesaje speciale este destinat utilizării în toate aplicațiile care funcționează cu o bază de date comună. Acestea pot fi denumite în mod vag „mesaje de eroare speciale la nivel de bază de date”. Al doilea grup de mesaje este specific aplicației. Acestea pot fi necesare atunci când aplicații diferite trebuie să ofere utilizatorului mesaje diferite despre aceeași eroare. Ele pot fi numite provizoriu „mesaje de eroare speciale la nivel de aplicație”. Este convenabil să stocați informații despre primul grup de mesaje în baza de date în sine și să utilizați un tabel separat pentru aceasta. Mesajele specifice unui program pot fi stocate în resursele acestuia, de exemplu, ca fișier separat sau, de asemenea, într-o bază de date. Mesajele speciale pot fi identificate pe baza codului de eroare, a numelui schemei și a unuia sau mai multor cuvinte cheie din mesajul de eroare.

6. VERIFICAȚI mesajele de eroare ale constrângerii pentru tabele

Când apare o eroare din cauza unei constrângeri CHECK pe un tabel, serverul generează o eroare:
ORA-02290: constrângerea de integritate CHECK a fost încălcată (<Схема>.<Имя ограничения>)

După cum am menționat mai sus, este adesea convenabil să folosiți mesaje speciale pentru astfel de erori. De exemplu, constrângerea „CK_PRICE” din tabelul „GOODS” poate folosi un mesaj personalizat stocat în tabelul cu mesaje personalizate:

7. Utilizarea cuprinzătoare a mesajelor de eroare personalizate și generice

Un mecanism flexibil pentru generarea de mesaje informative de eroare pentru utilizator este implementat în mai multe etape (Fig. 1):

1. Trimiteți un mesaj de eroare personalizat la nivel de aplicație. Programul caută mai întâi un mesaj de eroare printre mesajele specifice aplicației respective. Dacă se găsește un astfel de mesaj, acesta este afișat și formarea mesajului este finalizată.

2. Trimiteți un mesaj de eroare special la nivelul bazei de date. Dacă nu a fost găsit niciun mesaj la pasul 1, se caută un mesaj de eroare special la nivel de bază de date. Dacă este găsit, acesta este afișat utilizatorului și generarea mesajului de eroare se termină acolo.

3. Afișarea unui mesaj pe baza analizei structurii bazei de date (mesaj universal). Dacă nu au fost găsite mesaje speciale în etapele anterioare, atunci acesta se formează pe baza analizei structurii bazei de date. Este afișat utilizatorului și aceasta completează formarea mesajului.

4. Afișarea unui mesaj de la serverul bazei de date. Dacă nu a fost generat niciun mesaj pentru utilizator în cei trei pași anteriori, atunci este afișat un mesaj de eroare de la Oracle. Această situație poate apărea din mai multe motive. De exemplu, atunci când apare o eroare personalizată care a fost generată în mod intenționat într-o procedură stocată sau declanșare folosind funcția RAISE_APPLICATION_ERROR și conținutul mesajului despre care nu este necesar să se modifice.

Sunt posibile cazuri mai complexe decât cel prezentat în acest articol. De exemplu, dacă mesajul este generat într-o procedură stocată, care la rândul său poate fi apelată de la un declanșator sau o altă procedură stocată. În acest caz, este posibil să aveți nevoie și de informații despre cum a fost apelată procedura care a generat mesajul de eroare. Și, prin urmare, mesajul original poate fi suplimentat sau modificat, de exemplu, pe baza informațiilor despre stiva de apeluri de proceduri stocate și declanșatoare.

În unele cazuri, astfel de mesaje pot fi chiar mai informative decât cele generate în etapele anterioare. De exemplu, în locul constrângerii CK_PRICE pentru tabelul DEMO.GOODS (scriptul 1.1), puteți efectua verificarea necesară a declanșatorului înainte de a introduce și actualiza înregistrarea și de a genera un mesaj pentru utilizator într-o formă deja „gata”:

Dacă prețul unui produs este mai mic sau egal cu zero, serverul va genera o eroare, de exemplu:

Aplicația client poate trimite imediat acest mesaj utilizatorului fără modificare.

Un alt motiv poate fi apariția unei erori pentru care nu este prevăzută formarea unui mesaj.

Orez. 1. Secvența generării unui mesaj de eroare al bazei de date.

Aș dori să notez că, chiar dacă aplicația folosește doar mesaje de eroare speciale, atunci utilizarea unei funcții comune pentru a genera mesaje va îmbunătăți structura programului. Dacă este necesar, formatul mesajelor speciale poate suporta link-uri către sistemul de ajutor, imagini etc. Metoda descrisă de generare a mesajelor de eroare a bazei de date se concentrează mai mult pe implementarea în aplicația client. În același timp, poate fi folosit pe partea de server în procedurile stocate, declanșatoarele de tabel, precum și în declanșatoarele de sistem pentru evenimentul SERVERERROR de bază de date sau de schemă.

Concluzie

Scopul acestui articol este de a arăta ideile principale ale unei metode care poate fi utilizată pentru a genera mesaje informative de eroare a bazei de date Oracle pentru utilizatorul final. Deși unele puncte de implementare au rămas în afara domeniului articolului, aș dori să sper că abordarea descrisă în articol va reduce costurile forței de muncă în dezvoltarea de software, va îmbunătăți fiabilitatea și calitatea acestuia.

Când apar excepții, este important să se emită mesaje de eroare ușor de utilizat. Excepțiile au fost deja menționate în secțiunea despre blocurile de bază PL/SQL. Acum este timpul să le luăm în considerare mai detaliat.

Excepții

O excepție este o condiție de eroare care este activată - sau excitat - când apare o problemă. Există multe excepții diferite, fiecare asociată cu un anumit tip de problemă. Când apare o excepție, execuția codului se oprește la instrucțiunea care a lansat excepția, iar controlul este transferat părții din bloc care se ocupă de excepție. Dacă blocul nu conține o secțiune executabilă, PL/SQL încearcă să găsească o secțiune executabilă în inclusiv unitate de baza (incluzând blocul de bază), adică într-un bloc care este extern codului care a aruncat excepția. Dacă nu există un handler pentru această excepție în blocul imediat inclus, atunci căutarea continuă în blocuri ale următoarelor niveluri până când este găsit un handler adecvat, iar dacă acesta nu poate fi găsit, atunci execuția programului se oprește cu un mesaj de eroare necontrolat.

Partea de gestionare a excepțiilor a blocului este un loc ideal pentru a emite mesaje de eroare informative și pentru a executa curatenie (curățare), care vă permite să scăpați de tot ceea ce ar putea cauza confuzie sau probleme în viitor. Dacă a fost aruncată o excepție în timpul execuției unei proceduri care a inserat un rând într-un tabel, atunci o procedură de curățare tipică ar putea include o instrucțiune ROLLBACK.

Odată ce controlul a fost transferat la un handler de excepție, acesta nu mai este returnat la instrucțiunea care a cauzat excepția. În schimb, controlul este transferat către instrucțiunea blocului de bază, imediat după blocul imbricat sau apelul de procedură/funcție.

Excepții de sistem

Sunteți deja familiarizat cu excepția ZERO_DIVIDE predefinită în PL/SQL. Există destul de multe alte excepții de sistem care sunt recunoscute și aruncate de PL/SQL sau Oracle. Tabelul 1 oferă o listă mai completă a excepțiilor de sistem.

În PL/SQL, puteți oferi informații despre erori utilizatorilor în două moduri. Prima modalitate este să utilizați comanda SQLCODE, care returnează un cod de eroare. Acest cod este un număr negativ, de obicei egal cu numărul erorii ORA care este tipărită atunci când aplicația se termină dacă excepția este lăsată netratată. A doua modalitate este de a returna un mesaj text care descrie eroarea. Nu este surprinzător, comanda corespunzătoare se numește SQLERRM. Atât SQLCODE, cât și SQLERRM pot fi utilizate într-un handler de excepții. Notă: Nu toate excepțiile de sistem au nume.

Masa1 . Excepții de sistem

excepție de sistem,cod de eroare

Motiv pentru excitare

CURSOR_ DEJA_ DESCHIS

ORA-06511

Încercarea de a deschide un cursor deja deschis

DUP_VAL_ON_INDEX

ORA-00001

Se încearcă inserarea unei valori duplicate într-o coloană care are un index unic și, prin urmare, o constrângere unică

INVALID_ CURSOR

ORA-01001

Încercarea de a AFECTA un cursor nedeschis sau încercarea de a închide un cursor care nu a fost deschis

NU S-AU GASIT DATE

ORA-01403

Încercarea de a SELECT INTO când SELECT returnează zero rânduri (și alte motive care depășesc domeniul de aplicare al acestei cărți)

PROGRAM_ EROARE

ORA-06501

Eroare internă. De obicei înseamnă că trebuie să contactați asistența Oracle

DEPOZITARE_ EROARE

ORA-06500

Programul nu are suficientă memorie de sistem

TIMEOUT_ON_RESOURCE

ORA-00051

Programul a așteptat prea mult pentru ca o resursă să fie disponibilă

TOO_MANY_ROWS

ORA-01422

SELECT INTO în PL/SQL a returnat mai mult de un rând

VALOARE_ EROARE

ORA-06502

PL/SOL a întâlnit o conversie sau trunchiere a datelor nevalidă sau o constrângere de date nevalidă

ZERO_ DIVIDE

ORA-01476

Încercați să împărțiți la zero

Toate celelalte excepții și erori interne care nu sunt acoperite de excepțiile definite în blocul de bază. Folosit atunci când nu știți exact ce excepție numită să gestionați și doriți să gestionați orice excepții care sunt aruncate

Acum să ne întoarcem la primul exemplu din acest capitol și să folosim SQLCODE și SQLERRM în el. Mai jos este codul sursă al exemplului și rezultatele lansării acestuia (Fig. 1).

Num_a NUMĂR:= 6;

Num_b NUMBER;

Num_b:= 0;

Num_a:= Num_a / Num_b;

Num_b:= 7;

dbms_output.put_line(" Valoarea lui Num_b "|| Num_b);

EXCEPȚIE

CÂND ZERO_DIVIDE ATUNCI

err_num NUMBER:= SQLCODE;

err_msg VARCHAR2(512) := SQLERRM;

dbms_output.put_line("Număr de eroare ORA" || err_num);

dbms_output.put_line("Mesaj de eroare ORA" || err_msg);

dbms_output.put_line ("Valoarea lui Num_a " || Num_a);

dbms_output.put_line ("Valoarea lui Num_b " || Num_b);

SQL> setează ieșirea serverului

SQL> DECLARE

2 num_a NUMĂR:= 6;

3 num_b NUMĂR;

4 ÎNCEPE

5 num_b:= 0;

6 num_a:= num_a / num_b;

7 num_b:= 7;

8 dbms_output. put_line(" Valoarea num_b "|| num_b);

9 EXCEPȚIE

10 CÂND ZERO_DIVIDE

11 ATUNCI

13 err_num NUMBER:= SQLCODE;

14 err_msg VARCHAR2(512) := SQLERRM;

15 ÎNCEPE

16 dbms_output.put_line("Număr de eroare ORA "|| err_num);

17 dbms_output.put_line("Mesaj de eroare ORA " || err_msg);

18 dbms_output.put_line(„Valoarea num_a” || num_a);

19 dbms_output.put_line(„Valoarea num_b” || num_b);

20 SFÂRȘIT;

21 SFÂRȘIT;

Numărul de eroare ORA -1476

Mesaj de eroare ORA ORA-01476: divizorul este egal cu zero

Valoarea num_a 6

Valoarea num_b 0

Procedura PL/SQL finalizată cu succes.

Orez. unu. Utilizarea SQLCODE și SQLERRM atunci când se gestionează excepțiile de sistem

Administratorii și programatorii de baze de date Oracle se confruntă uneori în munca lor că baza de date începe să „jure” și adesea într-un limbaj care nu este complet clar. În acest articol, vom analiza limbajul Oracle Errors și mesajele de avertizare. Toate erorile sunt grupate în secțiuni și subsecțiuni mari pentru a ajuta utilizatorii să navigheze rapid în ceea ce se întâmplă și să ia măsuri pentru a corecta situația. În acest articol, ne vom uita la grupuri primele mii de erori Oracle(pe intervale coduri de la 0 la 999), precum și să explice motivele apariției acestora cu o propunere de acțiuni pentru corectarea acestora. Formatul erorii este „ORA-xxxxx”. La început apare prefixul „ORA”, iar apoi prin liniuță un cod de eroare din cinci cifre.

Grupuri de erori Oracle

Mesaje de eroare ORA-00000 - ORA-00099

Mesajele ORA-00000 sunt normale, finalizate cu succes, adică nu sunt o eroare.

Erori metodologice de acces la kernel 0001-0049

  • ORA-00001: cheie duplicat în index
  • ORA-00017: numărul maxim de apeluri depășit
  • ORA-00018: numărul maxim de sesiuni depășit
  • ORA-00019: numărul de sesiuni a depășit numărul de licențe
  • ORA-00020: numărul maxim de procese (num) depășit
  • Sesiunea ORA-00021 este utilizată de un alt proces. Nu schimbați sesiunea
  • ORA-00022: ID de sesiune nevalid. Accesul este interzis
  • ORA-00023: Sesiunea conține referințe de memorie privată. Nu se poate deconecta sesiunea
  • ORA-00024: conexiune la mai mult de un proces interzisă în modul utilizator unic
  • ORA-00025: nu se poate plasa [șir]
  • ORA-00026: ID-ul sesiunii lipsă sau nevalid
  • ORA-00027: nu se poate distruge sesiunea curentă
  • ORA-00028: sesiunea dvs. a fost distrusă
  • ORA-00029: sesiunea nu este o sesiune de utilizator
  • ORA-00030: sesiunea utilizator cu ID specificat nu există
  • ORA-00031: sesiune marcată pentru distrugere
  • ORA-00032: parolă nevalidă pentru mutarea sesiunii
  • ORA-00033: sesiune curentă cu parola de mutare goală
  • ORA-00034: nu se poate COMMIT sau ROLLBACK în sesiunea PL/SQL curentă
  • ORA-00035: valoarea LICENSE_MAX_USERS nu poate fi mai mică decât numărul curent de utilizatori
  • ORA-00036: numărul maxim de niveluri (valoare) de recursivitate SQL atins
  • ORA-00037: nu se poate comuta sesiunea la alt grup de servere
  • ORA-00038: Imposibil de creat sesiunea. Grupul de servere este deținut de un alt utilizator

Erori ENQ 0050-0080

  • ORA-00050: eroare de sistem de operare la primirea cozii
  • ORA-00051: resursa a expirat
  • ORA-00052: numărul maxim de resurse returnate a fost depășit
  • ORA-00053: numărul maxim de cozi depășit
  • ORA-00054: resursa ocupată accesând pointerul NOWAIT
  • ORA-00055: a fost depășit numărul maxim de blocări DML
  • ORA-00056: O blocare DDL este plasată pe un obiect blocat
  • ORA-00057: a fost depășit numărul maxim de blocări temporare ale tabelului
  • ORA-00058: DB_BLOCK_SIZE trebuie să fie egal cu baza de date care se montează
  • ORA-00059: Valoarea parametrului DB_FILES a fost depășită
  • ORA-00060: a apărut un blocaj în timp ce se aștepta o resursă
  • ORA-00061: instanță diferită are setări DML_LOCK diferite
  • ORA-00062: Blocarea DML pe întreaga masă nu poate fi obținută. Setarea DML_LOCKS este nulă
  • ORA-00063: Valoarea parametrului LOG_FILES a fost depășită
  • ORA-00064: obiectul nu poate fi plasat, este prea mare pentru sistemul de operare
  • ORA-00065: eroare la inițializarea parametrului FIXED_DATE
  • ORA-00066: Valorile LOG_FILES nu se potrivesc
  • ORA-00067: valoare nevalidă pentru parametrul șir, trebuie să fie un șir
  • ORA-00068: valoare nevalidă pentru parametrul șir, trebuie să fie șir
  • ORA-00069: nu se poate bloca tabelul - blocarea a fost refuzată pe [șir]
  • ORA-00070: comanda [șir] nevalidă
  • ORA-00071: numărul de procese trebuie să fie mai mare decât 1:
  • ORA-00072: Procesul specificat nu este activ
  • ORA-00073: număr nevalid de argumente specificat pentru comandă
  • ORA-00074: niciun proces definit
  • ORA-00075: procesul [șir] nu a fost găsit în instanța curentă
  • ORA-00076: dump [șir] nu a fost găsit
  • ORA-00077: Dump-ul specificat este nevalid
  • ORA-00078: nu se poate rezolva descărcarea după nume
  • ORA-00079: variabila [valoare] nu a fost găsită
  • ORA-00080: a fost făcută o încercare de a descărca o zonă nevalidă de memorie
  • ORA-00081: intervalul specificat nu este valid
  • ORA-00082: intervalul de memorie nu este în intervalul specificat
  • ORA-00083: SGA este posibil corupt
  • ORA-00084: Zona globală trebuie să fie PGA, SGA sau UGA
  • ORA-00085: apelul curent nu există
  • ORA-00086: apelul utilizatorului nu există
  • ORA-00087: comanda nu poate fi executată pe o instanță la distanță
  • ORA-00088: comanda nu poate fi executată de serverul partajat
  • ORA-00089: număr de instanță nevalid în comanda ORADEBUG
  • ORA-00090: Comanda ORADEBUG nu a reușit să aloce corect memoria într-o bază de date în cluster
  • ORA-00091: LARGE_POOL_SIZE trebuie specificat
  • ORA-00092: LARGE_POOL_SIZE trebuie să fie mai mare decât LARGE_POOL_MIN_ALLOC
  • ORA-00093: %s specificat incorect
  • ORA-00094: %s trebuie să conțină o valoare întreagă
  • ORA-00096: valoare [valoare] nevalidă pentru parametrul [valoare], trebuie să fie în interval
  • ORA-00097: Caracteristicile Oracle SQL nu sunt acceptate de SQL92:
  • ORA-00099: Resursa a expirat. Potențial blocaj PDML

Erori de regiune și segment ORA-00100 - ORA-00299

  • ORA-00100: nu au fost găsite date
  • ORA-00101: specificația nevalidă a parametrului de sistem DISPATCHERS
  • ORA-00102: Protocolul de rețea specificat nu poate fi utilizat de dispeceri
  • ORA-00103: protocol de rețea nevalid, rezervat pentru utilizare de către dispeceri
  • ORA-00104: blocaj detectat, toate serverele disponibile blocate, așteaptă resursă
  • ORA-00105: prea multe configurații de dispecer
  • ORA-00106: baza de date nu poate fi pornită sau oprită în timp ce este conectată la dispecer
  • ORA-00107: nu se poate conecta la procesul de ascultare ORACLE
  • ORA-00108: nu se poate configura dispecerul să accepte conexiuni asincrone
  • ORA-00111: atribut nevalid [șir]
  • ORA-00112: valoarea atributului este nulă
  • ORA-00113: numele protocolului [șir] prea lung
  • ORA-00114: valoare nevalidă pentru parametrul de sistem SERVICE_NAMES
  • ORA-00115: conexiune întreruptă, tabelul de conexiuni plin
  • ORA-00116: valoarea SERVICE_NAMES este nevalidă
  • ORA-00117: Trebuie specificat PROTOCOL, ADRESĂ sau DESCRIERE
  • ORA-00118: poate fi specificată o singură valoare PROTOCOL, ADRESĂ sau DESCRIERE
  • ORA-00119: valoare nevalidă a parametrului de sistem
  • ORA-00120: dispecerul nu este permis sau nu este instalat
  • ORA-00121: SHARED_SERVERS definit fără opțiunea DISPATCHERS
  • ORA-00122: nu se poate inițializa configurația rețelei
  • ORA-00123: server partajat inactiv
  • ORA-00124: DISPATCHERS specificat fără MAX_SHARED_SERVERS
  • ORA-00125: resetarea conexiunii; concepție greșită
  • ORA-00126: resetare conexiune; contradicţie
  • ORA-00127: dispecerul nu există
  • ORA-00128: comanda necesită numele dispecerului
  • ORA-00129: adresa de ascultare nevalidă
  • ORA-00130: adresa de ascultare nevalidă
  • ORA-00131: protocolul de rețea nu acceptă înregistrarea specificată
  • ORA-00132: eroare de sintaxă sau nume de rețea nevalid
  • ORA-00150: ID tranzacție duplicat
  • ORA-00151: ID tranzacție duplicat
  • ORA-00152: sesiunea curentă nu se potrivește cu sesiunea solicitată
  • ORA-00153: eroare în biblioteca XA
  • ORA-00154: eroare de protocol în monitorul tranzacției
  • ORA-00155: nu se poate executa jobul în afara tranzacției globale
  • ORA-00160: numele tranzacției globale depășește lungimea maximă
  • ORA-00161: lungimea tranzacției nevalidă
  • ORA-00162: ID-ul bazei de date externă depășește valoarea maximă
  • ORA-00163: numele bazei de date externă depășește valoarea maximă
  • ORA-00164: tranzacțiile autonome distribuite nu sunt permise pe lângă tranzacțiile distribuite portabile
  • ORA-00165: tranzacții distribuite portabile offline cu operațiuni la distanță nu sunt permise
  • ORA-00200: fișierul de control nu a putut fi creat
  • ORA-00201: versiunea fișierului de control [șir] este incompatibilă cu versiunea ORACLE [șir]
  • ORA-00202: fișier de control: [șir]
  • ORA-00203: fișier de control nevalid utilizat
  • ORA-00204: eroare la citirea blocului de date (bloc [șir], blocuri [șir]) în fișierul de control
  • ORA-00205: identificarea fișierului de control a eșuat. Consultați jurnalul pentru mai multe informații
  • ORA-00206: eroare la scrierea în fișierul de control (bloc [șir], blocuri [șir])
  • ORA-00207: fișierul de control nu este din această bază de date
  • ORA-00208: numărul de fișiere de control depășește valoarea permisă [șir]
  • ORA-00209: blocul de date al fișierului de control nu s-a potrivit. Consultați jurnalul pentru mai multe informații
  • ORA-00210: Nu se poate deschide fișierul de control specificat
  • ORA-00211: fișierul de control nu se potrivește anterior
  • ORA-00212: dimensiunea blocului [șir] mai mică decât minimul necesar [șir]
  • ORA-00213: nu se poate reutiliza fișierul de control, dimensiunea fișierului %1: este necesară %2:
  • ORA-00214: versiunea fișierului de control incompatibilă cu versiunea fișierului
  • ORA-00215: trebuie să existe cel puțin un fișier de control
  • ORA-00216: dimensiunea fișierului de control nu poate fi modificată pentru portare de la 8.0.2:
  • ORA-00217: dimensiunea fișierului de control nu poate fi modificată pentru a migra de la 9.0.1:
  • ORA-00218: dimensiunea blocului de date a fișierelor de control nu se potrivește cu dimensiunea specificată de DB_BLOCK_SIZE
  • ORA-00219: dimensiunea fișierului de control depășește dimensiunea setată
  • ORA-00220: fișierul de control nu a putut fi inclus, consultați jurnalul de alerte pentru mai multe detalii
  • ORA-00221: eroare la scrierea în fișierul de control
  • ORA-00222: operația încearcă să folosească numele unui fișier de control deja montat
  • ORA-00223: Fișierul care este convertit este invalid sau are versiunea greșită
  • ORA-00224: a eșuat redimensionarea fișierului de control cu ​​tip de înregistrare greșit
  • ORA-00225: dimensiunea așteptată a fișierului de control [șir] diferă de dimensiunea reală [șir]
  • ORA-00226: operațiunea nu este posibilă în timp ce fișierul de control alternativ este deschis
  • ORA-00227: bloc de date corupt găsit în fișierul de control (bloc [șir] blocuri [șir]).
  • ORA-00228: lungimea numelui fișierului de control alternativ depășește valoarea permisă [șir]
  • Operațiunea ORA-00229 a fost respinsă. Fișierul instantaneu a fost deja pus în coadă și este în curs de procesare.
  • Operațiunea ORA-00230 a fost respinsă. Coada de instantanee ale fișierului de control nu este disponibilă
  • ORA-00231: instantaneul fișierului de control nu este numit
  • ORA-00232: instantaneul fișierului de control nu există, este corupt sau imposibil de citit
  • ORA-00233: copierea fișierului de control este coruptă sau ilizibilă
  • ORA-00234: eroare la identificarea sau deschiderea instantaneului sau copierea fișierului de control
  • ORA-00235: fișier de control blocat pentru modificare paralelă
  • ORA-00236: instantaneu anulat, fișierul de control alternativ selectat
  • ORA-00237: operațiunea instantanee nu este permisă. S-a creat un nou fișier de control
  • ORA-00238: operațiunea încearcă să folosească nume de fișier ca nume de bază de date
  • ORA-00250: arhivatorul nu rulează
  • ORA-00251: LOG_ARCHIVE_DUPLEX_DEST nu poate fi același director cu %1:
  • ORA-00252: jurnalul este gol. Arhivarea nu este posibilă
  • ORA-00253: lungimea șirului specificat depășește limita
  • ORA-00254: eroare în linia de control arhivă
  • ORA-00255: eroare la arhivarea fișierului jurnal
  • ORA-00256: A apărut o eroare la analizarea unui șir de arhivă
  • ORA-00257: eroare de arhivare. Nu mă pot conecta în timp ce resursa este ocupată
  • ORA-00258: Trebuie specificată arhivarea manuală în jurnalul NOARCHIVELOG
  • ORA-00259: jurnalul de instanță deschisă este jurnalul curent și nu poate fi arhivat
  • ORA-00260: nu se poate găsi jurnalul de coadă activ [șir] pentru firul [șir]
  • ORA-00261: jurnalul a fost modificat sau arhivat
  • ORA-00262: jurnalul curent [șir] este ocupat cu un alt fir [șir], nu poate comuta
  • ORA-00263: nu există jurnale de arhivat pentru fluxul [șir]
  • ORA-00264: nu este nevoie de restaurare
  • ORA-00265: Este necesară recuperarea instanței, dar modul ARCHIVELOG poate fi setat
  • ORA-00266: este necesar numele jurnalului de arhivare
  • ORA-00267: numele jurnalului de arhivă nu este necesar
  • ORA-00268: Fișierul jurnal specificat nu există
  • ORA-00269: fișierul jurnal specificat face parte din fluxul [șir] nu [șir]
  • ORA-00270: eroare la crearea jurnalului arhivei [șir]
  • ORA-00271: nu există jurnale de arhivat
  • ORA-00272: eroare la scrierea în jurnalul de arhivă [șir]
  • ORA-00273: Restaurarea datelor încărcate direct fără înregistrare
  • ORA-00274: valoarea [valoare] a parametrului de recuperare nevalidă specificată
  • ORA-00275: procedura de recuperare a început deja
  • ORA-00276: S-a specificat cuvântul cheie CHANGE, dar nu s-a specificat niciun număr de modificare
  • ORA-00277: opțiune de restaurare nevalidă UNTIL flag [șir]
  • ORA-00278: fișierul jurnal [șir] nu mai este necesar pentru recuperare
  • ORA-00279: este necesar numele fișierului jurnal
  • ORA-00280: fluxul necesar și numele secvenței
  • ORA-00281: restaurarea nu poate fi efectuată folosind dispecer
  • ORA-00282: Apelul UPI nu este acceptat, utilizați ALTER DATABASE RECOVER
  • ORA-00283: sesiune de restaurare a fost anulată din cauza unor erori
  • ORA-00284: sesiune de recuperare în curs
  • ORA-00285: valoare TIME nevalidă
  • ORA-00286: nu există fișiere disponibile sau fișiere de date valide
  • ORA-00287: numărul de modificare specificat [șir] nu a fost găsit în fluxul [șir]
  • ORA-00288: utilizați ALTER DATABASE RECOVER CONTINUE pentru a continua recuperarea
  • ORA-00289: variabilă [valoare]
  • ORA-00290: Eroare de sistem de operare. Vezi mai jos mesajul de eroare
  • ORA-00291: PARALLEL necesită o valoare numerică
  • ORA-00292: componenta de restaurare paralelă nu este instalată
  • ORA-00293: fișierul de control desincronizat cu jurnalul de refacere
  • ORA-00294: format nevalid specificat pentru jurnalul de arhivă [șir]
  • ORA-00295: numărul fișierului de date/date temporale nevalid [șir], trebuie să fie între 1: și [șir]
  • ORA-00296: Valoarea RECOVER DATAFILE LIST a fost depășită
  • ORA-00297: necesar pentru a specifica RECOVER DATAFILE LIST înainte de RECOVER DATAFILE START
  • ORA-00298: valoarea atributului lipsă sau nevalidă
  • ORA-00299: restaurarea la nivel de fișier a fișierului de date %1

Erori de management I/O baze de date ORA-00300 - ORA-00399

Erori în gestionarea intrării și ieșirii din baza de date Oracle:

  • ORA-00300: Dimensiunea blocului de jurnal de refacere nevalidă, dimensiunea specificată [șir] depășește limita de dimensiune [șir]
  • ORA-00301: eroare la adăugarea fișierului jurnal [șir] - fișierul nu a putut fi creat
  • ORA-00302: limita depășită pentru numărul de fișiere reface
  • ORA-00303: nu se poate executa Parallel Redo
  • ORA-00304: solicitat INSTANCE_NUMBER este ocupat
  • ORA-00305: jurnalul [șir] al firului [șir] este inconsecvent și aparține unei alte baze de date
  • ORA-00306: limita de instanță atinsă [șir]
  • ORA-00307: solicitat INSTANCE_NUMBER în afara intervalului, max [șir]
  • ORA-00308: nu se poate deschide jurnalul de arhivă [șir]
  • ORA-00309: jurnalul aparține unei alte baze de date
  • ORA-00310: jurnalul arhivat conține secvența [șir]; secvența necesară [valoare]
  • ORA-00311: Imposibil de citit antetul jurnalului arhivei
  • ORA-00312: jurnal disponibil [șir] fir [șir]
  • ORA-00313: eroare la deschiderea fișierului grup de jurnal [șir] flux [șir]
  • ORA-00314: jurnal [șir], secvența așteptată [șir] nu se potrivește cu [șir]
  • ORA-00315: jurnal [șir] flux [șir], valoare nevalidă [șir] în antet
  • ORA-00316: jurnal [șir], valoarea [șir] din antet indică faptul că acesta nu este un fișier jurnal
  • ORA-00317: fișierul specificat [șir] nu este un fișier jurnal
  • ORA-00318: jurnalul [șir] a depășit dimensiunea permisă [șir] nu se potrivește cu [șirul]
  • ORA-00319: jurnalul [șir] are o stare incorectă de spălare
  • ORA-00320: nu se poate citi antetul fișierului [șir] al fluxului [șir]
  • ORA-00321: Nu se pot actualiza datele din antetul fișierului jurnal [șir] flux [șir]
  • ORA-00322: jurnalul [șir] firului [șir] nu este copia curentă
  • ORA-00323: jurnalul curent de flux [șir] nu este utilizabil și toate celelalte trebuie arhivate
  • ORA-00324: numele fișierului jurnal [șir] tradus [șir] prea lung, limita depășită [șir]
  • ORA-00325: jurnalul de arhivare a fluxului [șir] conține valoarea antetului [șir] nevalidă
  • ORA-00326: jurnalul începe cu [șir], [șir] modificat anterior este necesar
  • ORA-00327: jurnalul [șir] al fluxului [șir] are dimensiunea fizică [șir] mai mică decât [șirul] necesar
  • ORA-00328: jurnalul arhivat se termină cu [șir], este necesară modificarea ulterioară [șir]
  • ORA-00329: jurnalul arhivat începe cu [șir], trebuie schimbat [șir]
  • ORA-00330: jurnalul de arhivă se termină cu [șir], este necesară modificarea [șir]
  • ORA-00331: versiunea de jurnal [șir] nu este compatibilă cu versiunea ORACLE [șir]
  • ORA-00332: jurnal de arhivă foarte mic, posibil să nu fie complet arhivat
  • ORA-00333: redo log citi [șir] blocuri greșite din [șir] disponibil
  • ORA-00334: jurnal de arhivare [șir]
  • ORA-00335: jurnal disponibil [șir]: nu există jurnal cu acest număr, jurnal nu există
  • ORA-00336: dimensiunea blocului fișierului jurnal mai mică decât dimensiunea minimă a blocului [șir]
  • ORA-00337: fișierul jurnal [șir] nu există și dimensiunea nu este specificată
  • ORA-00338: jurnal [șir] mai mare decât valoarea ultimului fișier de control
  • ORA-00339: jurnalul arhivat nu conține reîncercări
  • ORA-00340: Eroare I/O la procesarea jurnalului [șir] firului [șir]
  • ORA-00341: fișierul jurnal [șir] are un număr de antet [șir] nevalid
  • ORA-00342: jurnalul de arhivă nu conține informații SCN [șir]
  • ORA-00343: prea multe erori, jurnal închis
  • ORA-00344: nu se poate recrea jurnalul disponibil [șir]
  • ORA-00345: eroare la scrierea în jurnal de refacere, blocare [șir] total [șir]
  • ORA-00346: jurnal marcat ca învechit (SALE)
  • ORA-00347: jurnalul [șir] al firului [șir] are dimensiunea blocului [șir], nu se potrivește, ar trebui să fie [șir]
  • ORA-00348: procesarea refacerii eșuate, instanța trebuie oprită
  • ORA-00349: Preluarea dimensiunii blocului pentru [șir] a eșuat
  • ORA-00350: jurnalul [șir] (flux [șir]) al instanței [șir] trebuie arhivat
  • ORA-00351: timp de recuperare nevalid
  • ORA-00352: toate jurnalele din fluxul [șir] trebuie arhivate - nu pot fi permise
  • ORA-00353: bloc de jurnal corupt [șir] modificare [șir] timp [șir]
  • ORA-00354: antetul blocului redo log corupt
  • ORA-00355: modificarea numărului în afara secvenței
  • ORA-00356: lungimea descrierii modificării nevalidă
  • ORA-00357: prea mulți membri specificați pentru fișierul jurnal, max [șir]
  • ORA-00358: au fost specificati prea mulți membri, max [șir]
  • ORA-00359: grupul de fișiere jurnal [șir] nu există
  • ORA-00360: Nu este membru al fișierului jurnal: [șir]
  • ORA-00361: nu se poate elimina ultimul jurnal [șir] din grup [șir]
  • ORA-00362: membrul necesar este un fișier jurnal valid în grup [șir]
  • ORA-00363: jurnalul nu este arhivat
  • ORA-00364: nu se poate scrie în noul antet de jurnal
  • ORA-00365: Jurnalul specificat este nevalid
  • ORA-00366: Jurnal [șir] flux [șir], eroare de sumă de verificare în antetul fișierului
  • ORA-00367: eroare de sumă de control în antetul fișierului
  • ORA-00368: eroare de sumă de control în blocul de jurnal redo
  • ORA-00369: jurnalul curent al firului [șir] este corupt și alt jurnal șters
  • ORA-00371: memorie insuficientă în pool-ul partajat, trebuie să fie cel puțin [șir]
  • ORA-00372: fișierul [șir] nu poate fi modificat în acest moment
  • ORA-00373: versiunea jurnalului deschis [șir] este incompatibilă cu versiunea ORACLE [șir]
  • ORA-00374: valoarea parametrului db_block_size=[valoare] este nevalidă; trebuie să fie compus în intervalul [valoare..valoare]
  • ORA-00375: nu se poate obține valoarea implicită a db_block_size
  • ORA-00376: fișierul [șir] nu poate fi citit în acest moment
  • ORA-00377: copierea frecventă a fișierului [șir] cauzează blocaj în operațiunile de scriere
  • ORA-00378: memoria cache nu a putut fi creată așa cum este specificat
  • ORA-00379: nu există buffer-uri libere în memoria cache [șir] pentru blocul [șir] K
  • ORA-00380: nu se poate specifica db_[value]k_cache_size [valoarea]K este dimensiunea standard a blocului.
  • ORA-00381: nu se poate utiliza opțiunile vechi și noi pentru a specifica dimensiunea memoriei cache a tamponului
  • ORA-00382: %s dimensiune bloc nevalidă, valoare validă [str..value]
  • ORA-00383: valoarea implicită cache nu poate fi redusă la zero
  • ORA-00384: memorie insuficientă pentru a crește memoria cache
  • ORA-00390: jurnalul [șir] al firului [șir] a fost șters și nu poate fi jurnalul curent
  • ORA-00391: toate thread-urile de acum înainte trebuie să treacă la noul format de jurnal
  • ORA-00392: jurnalul [șir] al firului [șir] a fost șters, operațiunea nu este permisă
  • ORA-00393: jurnal [șir] de fir [șir] necesar pentru a restabili o bază de date offline.
  • ORA-00394: jurnalul disponibil este reutilizat în timpul arhivării
  • ORA-00395: jurnalul pentru clona bazei de date trebuie redenumit
  • ORA-00396: eroarea [șir] necesită rollback la restaurarea cu o singură trecere
  • ORA-00397: restaurarea instanței a fost anulată cu eroare
  • ORA-00398: restaurare anulată înainte de reconfigurarea corespunzătoare
  • ORA-00399: descrierea coruptă a modificărilor jurnalului de refacere

Erori de inițializare a bazei de date ORA-00400 - ORA-00499

  • ORA-00400: valoare nevalidă [șir] pentru parametrul [șir]
  • ORA-00401: valoarea pentru parametrul [valoare] nu este acceptată de această versiune
  • ORA-00402: modificările bazei de date ale versiunii [șir] nu pot fi utilizate de versiunea [șir]
  • ORA-00403: [șir] nu este același cu alte instanțe de [șir]
  • ORA-00404: Fișierul convertit nu a fost găsit: [șir]
  • ORA-00405: tip de compatibilitate [șir]
  • ORA-00406: opțiunea COMPATIBLE necesită [șir] sau mai mare
  • ORA-00407: Upgrade de rollback de la versiunea [șir].[șir] la versiunea [șir].[șir] nu este permisă
  • ORA-00408: valoarea parametrului [șir] setată la TRUE
  • ORA-00436: Oracle nu este licențiat. Contactați Oracle Corporation pentru ajutor
  • ORA-00437: Caracteristicile avansate Oracle nu au licență. Contactați Oracle Corporation pentru ajutor
  • ORA-00438: opțiunea [șir] nu este setată
  • ORA-00439: caracteristica opțională nu este permisă: [șir]
  • ORA-00443: procesul de fundal [șir] nu rulează
  • ORA-00444: procesul de fundal [șir] a eșuat la pornire
  • ORA-00445: procesul de fundal [șir] nu a început după ce au trecut [șir] secunde
  • ORA-00446: procesul de fundal a început când nu era de așteptat
  • ORA-00447: eroare critică în procesul de fundal
  • ORA-00448: terminarea normală a unui proces de fundal
  • ORA-00449: procesul de fundal [șir] s-a încheiat brusc cu eroare [șir]
  • ORA-00470: Procesul LGWR a ieșit cu o eroare
  • ORA-00471: Procesul DBWR a ieșit cu o eroare
  • ORA-00472: procesul pmon a ieșit cu o eroare
  • ORA-00473: Procesul ARCH a ieșit cu o eroare
  • ORA-00474: procesul smon a ieșit cu o eroare
  • ORA-00475: Procesul TRWR a ieșit cu o eroare
  • ORA-00476: Procesul RECO a ieșit cu o eroare
  • ORA-00477: Procesul SNP* a ieșit cu o eroare
  • ORA-00478: procesul smon a ieșit cu eroare [șir]
  • ORA-00480: Procesul LCK* a ieșit cu eroare
  • ORA-00481: Procesul LMON a ieșit cu o eroare
  • ORA-00482: Procesul LMD* a ieșit cu o eroare
  • ORA-00483: procesul sa încheiat anormal în timpul opririi
  • ORA-00484: Procesul LMS* a ieșit cu o eroare
  • ORA-00485: Procesul DIAG a ieșit cu eroare [șir]

Mesaje de eroare ORA-00500 - ORA-00599

  • ORA-00568: a fost depășit numărul maxim de întreruperi de gestionare

Erori de recuperare în caz de dezastru ORA-00600 - ORA-00699

  • ORA-00600: Cod de eroare intern, argumente [valoare], [valoare], [valoare], [valoare], [valoare], [valoare], [valoare], [valoare]
  • ORA-00601: conflict de blocare a rețelei
  • ORA-00602: excepție software internă
  • ORA-00603: Sesiunea de server Oracle a fost încheiată de o eroare critică
  • ORA-00604: a apărut o eroare la nivel recursiv SQL [șir]
  • ORA-00606: cod de eroare intern
  • ORA-00607: Eroare internă la modificarea blocului de date

Erori de dicționar ORA-00700 - ORA-00799

  • ORA-00701: obiectul necesar pentru a porni baza de date nu poate fi modificat
  • ORA-00702: versiunea încărcător [șir] incompatibilă cu versiunea [șir]
  • ORA-00703: a fost depășit numărul maxim de blocări în cache-ul rândurilor de instanță
  • ORA-00704: procesul de pornire sa încheiat anormal
  • ORA-00705: stare invalidă în timpul pornirii; opriți instanța și reporniți
  • ORA-00706: eroare la modificarea formatului fișierului [șir]

Erori generale ORACLE ORA-00800 - ORA-00899

  • ORA-0800: procesul de scriere în buffer nu este activ(procesul de scriere în buffer nu este activ).
    Cauză: Problema este legată de o încercare de a porni ORACLE, care a determinat eliminarea procesului de scriere în buffer. De obicei, acest mesaj este emis împreună cu un mesaj de eroare de sistem care explică motivul eșecului.
    Acțiune: Utilizați mesajul de eroare de sistem (dacă există) pentru a afla cauza erorii. Dacă nu există nicio eroare de sistem, consultați Ghidul de instalare ORACLE pentru o listă de cerințe. Asigurați-vă că toate numele logice ORACLE sunt corecte, că există suficient spațiu liber pe disc în directorul ORACLE și că există suficiente secțiuni și pagini globale. De asemenea, asigurați-vă că bugetul ORACLE are prioritatea necesară. Dacă sursa problemei nu este identificată, consultați software-ul de instalare corespunzător.
  • ORA-0801: după procesul de scriere a imaginii nu este activ
    Cauză: Această proprietate nu este acceptată.
    Acțiune: Vă rugăm să consultați software-ul de instalare corespunzător.
  • ORA-0802: zonă de context nevalidă
    Cauză
    Acțiune
  • ORA-0805: opiodr: număr de nivel de recursivitate inconsecvent
    Cauză: Acesta este un mesaj de eroare intern care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-0806: înainte ca procesul de imagine nu este activ
    Cauză
    Acțiune
  • ORA-0807: procesul de curățare nu este activ
    Cauză: Problema este legată de o încercare de a porni ORACLE, care a determinat anularea procesului de previzualizare. De obicei, acest mesaj este emis împreună cu un mesaj de eroare de sistem care explică motivul eșecului.
    Acțiune: Utilizați mesajul de eroare de sistem (dacă există) pentru a afla cauza erorii. Dacă nu există nicio eroare de sistem, consultați ghidul de instalare ORACLE pentru sistemul dvs. de operare pentru a verifica instalarea corectă. Dacă sursa problemei nu este identificată, consultați software-ul de instalare corespunzător.
  • ORA-0809: opispf: cod de funcție specială nevalid.
    Cauză: Acesta este un mesaj de eroare intern care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-0810: opiomc: zona de context nu remapată la adresa originală
    Cauză: Acesta este un mesaj de eroare intern care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-0811: procesul readhead nu este activ
    Cauză: Problema este legată de o încercare de a porni ORACLE, care a determinat anularea procesului de citire anticipată. De obicei, acest mesaj este emis împreună cu un mesaj de eroare de sistem care explică motivul eșecului.
    Acțiune: Utilizați mesajul de eroare de sistem (dacă există) pentru a afla cauza erorii. Dacă nu există nicio eroare de sistem, consultați ghidul de instalare ORACLE pentru sistemul dvs. de operare pentru a verifica instalarea corectă. Dacă sursa problemei nu este identificată, consultați software-ul de instalare corespunzător.
  • ORA-0813: eșec de afirmare (anexa eliminată).
    Cauză:Acesta este un mesaj de eroare intern legat de ORACLE SORT. Acest lucru nu se poate întâmpla în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-0814: ltbdrv: mod de blocare ilegal
    Cauză: Acesta este un mesaj de eroare intern care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-00816: traducerea mesajului de eroare a eșuat
    Cauză: Acesta este un mesaj de eroare intern care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-0817: prsgkw: indicativul de eroare internă nu a fost găsit
    Cauză: Acesta este un mesaj de eroare intern care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-0818: opispf: osf prea mare
    Cauză: Acesta este un mesaj de eroare intern care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.

Erori de sintaxă ORA-00900 - ORA-00999

  • ORA-00900: instrucțiune SQL nevalidă.
    Cauză: Declarația pe care ați introdus-o nu a fost recunoscută ca o comandă SQL validă.
    Acțiune: Verificați dacă există greșeli de scriere, asigurați-vă că cuvintele cheie ale comenzii SQL încep cu unul dintre următoarele cuvinte: ALTER, AUDIT, CREATE, DELETE, DROP, GRANT, INSERT, NOAUDIT, RENAME, REVOKE, SELECT, UPDATE, LOCK, VALIDATE. Alte comenzi vor cauza această eroare.
  • ORA-00901: sintaxa comenzii CREATE nevalidă / Comanda de creare invalidă.
    Cauză: a fost utilizată o opțiune CREATE nevalidă pentru comanda CREATE.
    Acțiune: Verificați dacă există greșeli de scriere, asigurați-vă că comanda CREATE este urmată de una dintre următoarele opțiuni: INDEX, PARTITION, SPACE DEFINITION, SYNONYM, TABLE sau VIEW.
  • ORA-00902: tip de date nevalid.
    Cauză: Tipul de date introdus într-o instrucțiune CREATE sau ALTER TABLE nu este valid.
    Acțiune: Verificați dacă există greșeli de scriere, asigurați-vă că fiecare nume de coloană este urmat de unul dintre următoarele tipuri de date: DATA, CHAR, NUMBER, RAW, LONG sau LONG RAW.
  • ORA-00903: nume de tabel nevalid.
    Cauză: Tabelele introduse sau numele grupurilor nu există sau sunt nevalide. Acest mesaj apare și dacă în comanda ALTER/DROP CLUSTER este specificat un nume de grup invalid sau inexistent.
    Acțiune: Verificați dacă există greșeli de scriere. Un nume de grup valid trebuie să înceapă cu o literă și să conțină numai litere, cifre și caractere speciale: $, # și _. Numele nu trebuie să aibă mai mult de 30 de caractere și nu trebuie să fie un cuvânt rezervat.
  • ORA-00904: nume de coloană nevalid.
    Cauză: Numele coloanei introdus lipsește sau este invalid.
    Acțiune: introduceți un nume de coloană valid. Un nume valid trebuie să înceapă cu o literă și să conțină numai litere, cifre și caractere speciale: $, # și _. Numele nu trebuie să aibă mai mult de 30 de caractere și nu trebuie să fie un cuvânt rezervat. Dacă conține alte caractere, trebuie să fie între ghilimele duble.
  • ORA-00905: cuvânt cheie lipsă.
    Cauză: cuvântul cheie obligatoriu este omis.
    Acțiune: Verificați sintaxa comenzii și adăugați cuvintele cheie lipsă.
  • ORA-00906: lipsește paranteza stângă.
    Cauză: Paranteza stângă obligatorie a fost omisă. Comenzile de bază (cum ar fi CREATE TABLE, CREATE CLUSTER și INSERT) necesită o listă de elemente incluse în paranteze. Parantezele sunt, de asemenea, necesare în jurul secvențelor din clauza WHERE și din tabelul UPDATE coloana SET = (SELECT ...).
    Acțiune: Verificați sintaxa comenzii și introduceți parantezele lipsă.
  • ORA-00907: lipsește paranteza dreaptă
    Cauză: Paranteza din stânga a fost introdusă fără paranteza de închidere din dreapta sau informațiile anterioare au fost incluse în paranteze. Toate parantezele trebuie să fie împerecheate.
    Acțiune: Introduceți un suport drept de închidere.
  • ORA-00908: lipsește cuvântul cheie NULL
    Cauză: În instrucțiunile CREATE sau ALTER TABLE, NOT a fost introdus pentru a indica faptul că nu au fost permise valori nule în această coloană, dar cuvântul cheie NULL a fost omis.
    Acțiune: Dacă aveți nevoie de o valoare în această coloană, înlocuiți cuvântul cheie NOT cu NOT NULL.
  • ORA-00909: număr nevalid de argumente
    Cauză: O referire la o funcție ORACLE încorporată a fost făcută cu un număr greșit de argumente. Toate funcțiile ORACLE, cu excepția SYSDATE, necesită cel puțin un argument.
    Acțiune: Verificați sintaxa comenzii și introduceți numărul necesar de argumente.
  • ORA-00910: lungimea specificată prea mare pentru coloana CHAR
    Cauză: dimensiunea câmpului de caractere nu este specificată sau specificată incorect. Trebuie să specificați lungimea maximă pentru fiecare coloană de caractere. Această lungime poate lua valori de la 0: la 240: .
    Acțiune: Introduceți lungimea maximă de la 0 la 240: .
  • ORA-00911: caracter nevalid
    Cauză: Caracterul special este invalid sau valabil doar în anumite locuri. Dacă un caracter special (altul decât $, # și _) este folosit într-un nume și numele nu este cuprins între ghilimele duble ("), acest mesaj va apărea.
    Acțiune: Eliminați caracterul nevalid din comandă.
  • ORA-00912: operație pop operand fără operanzi pe stivă
    Cauză: Acesta este un mesaj de eroare internă care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-00913: prea multe valori
    Cauză: Comanda presupune două seturi identice de valori, dar al doilea set are mai multe elemente decât primul. De exemplu: o subinterogare într-o clauză WHERE sau HAVING poate avea prea multe coloane sau pot exista mai multe coloane într-o clauză VALUES sau SELECT decât o clauză INSERT.
    Acțiune: Verificați numărul de articole și modificați-le.
  • ORA-00914: lipsește cuvântul cheie ADD
    Cauză: Comanda ALTER PARTITION a fost introdusă fără cuvântul cheie ADD.
    Acțiune: verificați sintaxa comenzii și încercați din nou.
  • ORA-00915: accesul la rețea la tabelul dicționarului nu este permis în prezent
    Cauză: Acesta este un mesaj de eroare intern care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-00917: lipsă virgulă lipsă virgulă
    Cauză: O virgulă lipsește într-o listă de coloane sau într-o listă de valori într-o instrucțiune INSERT sau într-o listă de forma ((c,d),(e< f),...).
    Acțiune: Verificați sintaxa din instrucțiunea dvs. SQL și adăugați o virgulă lipsă dacă este necesar.
  • ORA-00918: coloană definită ambiguu
    Cauză: Coloana folosită pentru unire există în mai multe tabele. La alăturare, orice coloană prezentă în mai mult de un tabel trebuie să conțină numele tabelului. Numele coloanei trebuie să fie TABLE.COLUM sau TABLE_ALIAS.COLUMN, EMP.DEPTNO sau E.DEPTNO, nu doar EMP.
    Acțiune: Introduceți numele tabelului în numele coloanei înainte de punctul sau numele tabelului alternativ, așa cum se arată mai sus.
  • ORA-00919: funcție invalidă
    Cauză: Intrarea asemănătoare unei funcții de tip function(argument) nu este recunoscută ca o funcție ORACLE.
    Acțiune: Consultați manualul pentru o listă de nume de funcții valide.
  • ORA-00920: operator relațional nevalid
    Cauză: Sarcina de căutare cu declarație de condiție nevalidă sau lipsă.
    Acțiune: introduceți o declarație condiționată validă. Sunt permise următoarele afirmații relaționale: =, !=,<>, >, >=, <, <=,IN, IS, NULL, LIKE, и BETWEEN.
  • ORA-00921: sfârșit neașteptat al comenzii SQL
    Cauză: Comanda SQL este incompletă. A fost introdusă o parte dintr-o comandă validă, dar cel puțin o componentă majoră a fost omisă.
    Acțiune: Verificați sintaxa comenzii și introduceți componentele lipsă.
  • ORA-00922: opțiune nevalidă
    Cauză: O opțiune nevalidă a fost declarată într-o definiție de coloană sau o definiție de zonă.
    Acțiune: eliminați opțiunea nevalidă din definiția coloanei sau zonei. O opțiune validă care descrie o coloană este NOT NULL pentru a indica faptul că coloana nu poate conține valori NULL. Orice altceva care urmează tipului de date, cu excepția unei virgule sau a unei paranteze de închidere, este clasificat ca opțiune nevalidă. Când descrieți o lungime pentru DATE sau un tip de date LONG, veți primi acest mesaj de eroare. Doar următoarele opțiuni sunt permise în declarația de definire a domeniului de aplicare: INITIAL, INCREMENT și MAXEXTENTS, (pentru DATAPAGES și INDEXPAGES) și PCTFREE (doar pentru DATAPAGES).
  • ORA-00923: lipsește cuvântul cheie FROM
    Cauză: Într-o instrucțiune SELECT sau REVOKE, cuvântul cheie FROM este fie omis, plasat greșit, fie scris greșit. Cuvântul cheie FROM trebuie să urmeze elementul selectat în instrucțiunea SELECT sau numele tabelului selectat în instrucțiunea REVOKE.
    Acțiune: Înlocuiește cuvântul FFROM. Lista selectată poate fi ea însăși eronată. Asigurați-vă că utilizați ghilimele simple pentru a include aliasul și dacă aliasul este sau nu un cuvânt rezervat.
  • ORA-00924: lipsește cuvântul cheie BY
    Cauză: lipsește cuvântul cheie BY din expresiile GROUP BY, ORDER BY sau CONNECTED BY. În plus, în comanda GRANT, cuvântul INDENTIFIED trebuie urmat de BY.
    Acțiune: Introduceți corect cuvântul BY.
  • ORA-00925: lipsește cuvântul cheie INTO
    Cauză: a fost folosită o comandă INSERT fără cuvântul cheie INTO.
    Acțiune: Înlocuiți INSERT cu INSERT INTO.
  • ORA-00926: lipsește cuvântul cheie VALUES
    Cauză: instrucțiunea INSERT fără cuvântul cheie VALUES sau SELECT. O instrucțiune INSERT INTO trebuie să fie urmată de o secvență VALUES sau SELECT.
    Acțiune: introduceți o expresie sau o secvență VALUES după expresia INSERT INTO.
  • ORA-00927: lipsește semnul egal
    Cauză: Semnul egal lipsește în unul dintre următoarele locuri: * în instrucțiunea SET a comenzii UPDATE * după! pentru a indica inegalitatea * în expresia PCTFREE a comenzii CREATE INDEX
    Acțiune: Introduceți un semn egal.
  • ORA-00928: lipsește cuvântul cheie SELECT
    Cauză: O secvență SELECT trebuie inclusă în comanda CREATE VIEW.
    Acțiune: Introduceți instrucțiunea SELECT necesară în comanda CREATE VIEW.
  • ORA-00929: lipsa punct
    Cauză: Acesta este un mesaj de eroare intern care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-00930: lipsește asteriscul
    Cauză: Acesta este un mesaj de eroare intern care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-00931: identificatorul lipsă
    Cauză: Acesta este un mesaj de eroare intern care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-00932: tipuri de date inconsistente tip de date inconsistente
    Cauză: Încercați să adăugați un câmp de caractere la un câmp de date. Datele pot fi adăugate numai câmpurilor numerice.
    Acțiune: convertiți un câmp de caractere într-un câmp numeric utilizând funcția TO_NUMBER înainte de a adăuga câmpul de date.
  • ORA-00933: Comandă SQL și nu este încheiată corect
    Cauză: Comanda SQL sa încheiat cu o expresie nevalidă. De exemplu: o clauză ORDER BY poate fi inclusă într-o instrucțiune CREATE VIEW sau INSERT. Cu toate acestea, o clauză ORDER BY nu trebuie utilizată pentru a crea o altă vizualizare sau să fie inclusă în ordinea principală.
    Acțiune: Verificați sintaxa comenzii și eliminați componentele inutile. Ar trebui să puteți duplica expresiile șterse cu alte comenzi. De exemplu, dacă doriți să comandați liniile de revizuire, procedați în același mod ca atunci când solicitați o revizuire, dar nu ca atunci când creați una. Această eroare poate apărea și la utilizarea SQL*Forms dacă continuarea liniei este indentată. Verificați decalajele și eliminați spațiile. Trebuie să utilizați terminațiile SQL adecvate dacă utilizați o expresie I cu un singur argument, de exemplu: IN(X). Expresia IN trebuie să ia cel puțin două argumente.
  • ORA-00934: funcția set nu este permisă aici
    Cauză: una dintre funcțiile de grup (cum ar fi AVG, SUM, MAX, MIN, COUNT) a fost utilizată într-o clauză WHERE sau GROUP BY.
    Acțiune: Eliminați funcția de grup din clauzele WHERE sau GROUP BY. Puteți obține rezultatul dorit incluzând funcția într-o interogare sau o clauză HAVING.
  • ORA-00935: funcția set este imbricată prea adânc
    Cauză: Acesta este un mesaj de eroare intern care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-00936: lipsește expresia
    Cauză: Partea obligatorie a expresiei a fost omisă. De exemplu, o comandă SELECT este introdusă fără o listă de coloane sau cu o expresie de tip incompatibil (SAL+). Acest lucru se poate întâmpla și dacă cuvintele rezervate precum SELECT TABLE sunt omise.
    Acțiune: Verificați sintaxa comenzii și introduceți comenzile lipsă.
  • ORA-00937: nici o funcție de set de grup
    Cauză: nu puteți include simultan într-o interogare atât o funcție de grup (AVG, SUM,COUNT,MIN sau MAX) cât și o expresie de coloană personalizată, decât dacă expresia de coloană este inclusă în clauza GROUP BY.
    Acțiune: Eliminați fie expresia coloanei, fie funcția de grup din interogare, sau adăugați o clauză GROUP BY care include o enumerare a coloanei.
  • ORA-00938: nu sunt suficiente argumente pentru functio
    Cauză: Prea puține argumente sunt declarate în funcție.
    Acțiune: Verificați sintaxa funcției și adăugați orice argument necesar.
  • ORA-00939: prea multe argumente pentru functio
    Cauză: Funcția are prea multe argumente.
    Acțiune: Verificați sintaxa funcției și descrieți doar argumentele necesare.
  • ORA-00940: comandă ARTER nevalidă și comandă ALTER invalidă
    Cauză: Opțiune ALTER nevalidă descrisă. Numai secțiunile și tabelele pot fi nerepetate. O comandă ALTER validă trebuie să înceapă cu una dintre următoarele opțiuni: ALTER TABLE sau ALTER PARTITION.
    Acțiune Notă: Verificați sintaxa pentru ortografia corectă a comenzii ALTER.
  • ORA-00941: lipsește numele clusterului
    Cauză: Numele grupului fie lipsește, fie este invalid.
    Acțiune: Descrieți numele corect al grupului. Un nume de grup valid începe cu o literă, nu conține mai mult de 30 de caractere și constă numai din litere, cifre și caracterele speciale $, _ și #. Nu trebuie să fie un cuvânt rezervat. Numele trebuie tipărit imediat după cuvântul cheie CREATE CLUSTER.
  • ORA-00942: tabelul sau vizualizarea nu există
    Cauză: Acest tabel sau prezentare generală nu există. sau se introduce un nume de vizualizare în locul unui tabel. Tabelele și prezentările de ansamblu ale utilizatorilor existente pot fi vizualizate în prezentarea generală a TAB.
    Acțiune: Verificați greșelile de scriere și dacă ați introdus un nume de recenzie în loc de un tabel. Introduceți numele existente.
  • ORA-00943: clusterul nu există
    Cauză: Resursa utilizator nu este inclusă în grupul cu numele descris.
    Acțiune: Descrieți numele corect al grupului imediat după cuvântul cheie CLUSTER.
  • ORA-00944: număr insuficient de coloane grupate
    Cauză: S-a încercat crearea unui tabel cu mai puține coloane grupate decât este descris în comanda CREATE CLUSTER. Expresia CLUSTER a comenzii CREATE TABLE trebuie să descrie toate coloanele grupate definite când grupul a fost creat. Folosind numele grupului, puteți vizualiza toate coloanele grupului din tabelul dicționarului COL.
    Acțiune: Descrieți toate numele coloanelor în comanda CREATE TABLE.
  • ORA-00945: coloana grupată specificată nu există
    Cauză: Coloana descrisă în expresia instrucțiunii CREATE TABLE nu este o coloană în acest tabel.
    Acțiune: Repetați folosind numele coloanei tabelului.
  • ORA-00946: lipsește cuvântul cheie TO
    Cauză: Comanda GRANT a fost introdusă fără cuvântul cheie TO sau a fost folosită o formă nevalidă a acestei comenzi.
    Acțiune: Verificați sintaxa celor două forme principale ale comenzii GRANT (acordarea accesului la baza de date și acordarea de privilegii). Introduceți corect cuvântul cheie TO în comanda GRANT.
  • ORA-00947: valori insuficiente
    Cauză: instrucțiunea SQL necesită două seturi identice de valori, iar al doilea set conține mai puține valori. Acest lucru se poate întâmpla și dacă un SELECT imbricat găsește mai puține coloane într-o expresie WHERE sau HAVING, ca în: WHERE(A,B) IN (SELECT C FROM..) O eroare poate apărea și într-o instrucțiune INSERT în care expresia VALUES sau SELECT nu conține suficiente valori pentru INSERT, ca în: INSERT INTO tabelul (A,B) VALUES ("C").
    Acțiune: Verificați puterea fiecărui set și faceți-le egale ca număr.
  • ORA-00948: Declarația ALTER CLUSTER nu mai este acceptată
    Cauză: Instrucțiunea ALTER CLUSTER a fost eliminată
    Acțiune: Pentru a adăuga date dintr-un tabel, utilizați următorul set de instrucțiuni SQL: CREATE TABLE<новая_таблица>ALEGE DIN<старая_таблица>CLUSTER<имя_группы>CĂDERE BRUSCA<старая_таблица>și REDENUMIȚI TABELUL<новая_таблица> <старая_таблица>.
  • ORA-00949: trimitere ilegală la baza de date externă
    Cauză: Acesta este un mesaj de eroare intern care nu poate apărea în timpul funcționării normale.
    Acțiune: Vă rugăm să consultați software-ul de configurare relevant pentru o descriere detaliată a problemei.
  • ORA-00950: opțiune de eliminare nevalidă opțiune de eliminare invalidă
    Cauză: După comanda DROP, nu a existat nicio opțiune DROP, cum ar fi TABLE, VIEW, SYNONYM, CLUSTER sau SPACE.
    Acțiune: Verificați sintaxa comenzii și utilizați formatul corect pentru opțiunea DROP.
  • ORA-00951: cluster nu este gol
    Cauză: Comanda DROP descrie un grup nevid. Un grup poate fi șters numai dacă nu conține tabele. Eliminați un tabel dintr-un grup folosind comanda DROP TABLE.
    Acțiune: Eliminați toate tabelele din grup și apoi utilizați comanda DROP CLUSTER.
  • ORA-00952: lipsește cuvântul cheie GROUP
    Cauză: Grupul este implementat incorect.
    Acțiune: Nu este necesară nicio acțiune din partea utilizatorului.
  • ORA-00953: lipsește numele indexului
    Cauză: În comenzile CREATE, DROP, VALIDATE INDEX, numele indexului este incorect sau lipsește.
    Acțiune: introduceți numele corect de index după cuvântul cheie INDEX. Dacă doriți să ștergeți sau să corectați un index, verificați numele uitându-vă la prezentarea generală a INDEXurilor. Dacă trebuie să creați un index nou, verificați mai întâi sintaxa.
  • ORA-00954: lipsește cuvântul cheie INDENTIFIED
    Cauză: Comanda GRANT CONNECTION a fost emisă fără cuvântul cheie INDENTIFIED.
    Acțiune: Introduceți cuvântul cheie INDENTIFIED după numele de utilizator. Formatul comenzii este următorul: GRANT CONNECTION TO<список пользователей>INDETIFICAT DE<пароль списка>.
  • ORA-00955: numele este deja folosit de obiectul existent
    Cauză: S-a încercat crearea unui tabel, vizualizare, grup sau sinonim care există deja. Fiecare nume de tabel de utilizator trebuie să fie distinct de alte nume de tabel, vizualizări, grupuri sau sinonime deținute de alți utilizatori.
    Acțiune: fie introduceți un nume unic de tabel, vizualizare, grup sau sinonim, fie modificați sau ștergeți unul existent.
  • ORA-00956: opțiune de auditare nevalidă - opțiune de auditare invalidă
    Cauză: a existat o opțiune de verificare nevalidă.
    Acțiune: Verificați sintaxa comenzii și încercați din nou cu opțiunea corectă.
  • ORA-00957: nume de coloană duplicat
    Cauză: Numele coloanei a fost declarat de două ori într-o instrucțiune CREATE sau INSERT. Numele unei coloane dintr-un tabel, o prezentare generală sau un grup trebuie să fie unic.
    Acțiune: Înlocuiți numele coloanei din comanda CREATE cu unul nou unic. În comanda INSERT, eliminați numele duplicat.
  • ORA-00958: lipsește cuvântul cheie CHECK
    Cauză: lipsește CHECK imediat după cuvântul cheie WHITH din clauza WITH CHECK OPTION a instrucțiunii CREATE VIEW.
    Acțiune: Verificați sintaxa instrucțiunii SQL.
  • ORA-00959: numele definiției spațiului nu există
    Cauză: Comanda A DROP SPACE a descris un nume de zonă inexistent.
    Acțiune: Folosiți numele de definiții ale domeniului de aplicare existente. Pentru a vedea numele existente, selectați SNAME din SPAȚII.
  • ORA-00960: valoare INITIALĂ nevalidă
    Cauză: în comanda CREATE SPACE a fost specificată o valoare nevalidă a paginii de date sau a numărului paginii de indexare. Această valoare trebuie să fie de cel puțin 3.
    Acțiune: Introduceți o valoare INITIALĂ de cel puțin 3.
  • ORA-00961: valoare INCREMENT nevalidă
    Cauză: a fost descrisă o valoare nevalidă a numărului de pași pentru pagina de date sau pagina de indexare. Valoarea pasului trebuie să fie mai mare decât 3.
    Acțiune: Introduceți o valoare INCREMENT mai mare de 3.
  • ORA-00962: valoare PCTFREE nevalidă
    Cauză: Valoarea incorectă a procentului de spațiu liber a fost descrisă în definiția SPACE. Această valoare trebuie să fie în intervalul de la 1: la 99.
    Acțiune: Introduceți o valoare PCTFREE între 1: și 99.
  • ORA-00963: valoare SIZE nevalidă
    Cauză: în comanda CREATE CLUSTER a fost specificată o valoare nevalidă a dimensiunii blocului logic. Dimensiunea blocului logic este folosită pentru a stoca eficient grupuri mici de date.
    Acțiune: Descrieți valoarea permisă a dimensiunii blocului logic (mai mare decât 0).
  • ORA-00964: nume de definire a spațiului nevalid
    Cauză: a fost specificat un nume de domeniu nevalid în comanda CREATE/DROP SPACE sau în CREATE TABLE, sau a fost specificat un nume de domeniu inexistent în comanda CREATE TABLE.
    Acțiune: Introduceți un nume de zonă valid. Un nume valid începe cu o literă, nu conține mai mult de 30 de caractere și constă numai din litere, cifre și caracterele speciale $, _ și #. Nu trebuie să fie un cuvânt rezervat. Dacă numele dvs. este corect, este posibil să fi eliminat din greșeală definiția domeniului TEMP.
  • ORA-00965: numele definiției spațiului există deja
    Cauză: Un nume de domeniu existent a fost folosit în comanda CREATE SPACE. Numele definițiilor tărâmului trebuie să fie unice.
    Acțiune: Introduceți un nume unic pentru zonă.
  • ORA-00966: lipsește cuvântul cheie TABLE
    Cauză: a fost folosită o comandă LOCK și cuvântul cheie TABLE a fost scris greșit, sau omis sau plasat greșit. Comanda LOCK trebuie să înceapă astfel: LOCK TABLE<имя таблицы> ... .
    Acțiune: Introduceți cuvântul cheie TABLE în locul potrivit.
  • ORA-00968: lipsește cuvântul cheie INDEX
    Cauză: a fost folosită comanda CREATE UNIQUE și cuvântul cheie INDEX a fost scris greșit, sau omis sau plasat greșit.
    Acțiune: Vă rugăm să verificați sintaxa și să încercați din nou.
  • ORA-00969: lipsește cuvântul cheie ON
    Cauză: a fost folosită o comandă GRANT sau CREATE INDEX și cuvântul cheie ON a fost scris greșit, sau omis sau plasat greșit.
    Acțiune: Introduceți cuvântul cheie ON în locul potrivit.
  • ORA-00970: lipsește cuvântul cheie WITH - lipsește cuvântul cheie WITH
    Cauză: Cuvântul cheie START a fost folosit fără WITH. Ambele cuvinte cheie sunt necesare în clauza START WITH pentru interogare.
    Acțiune: Înlocuiți cuvântul START cu START WITH.
  • ORA-00971: lipsă cuvântul cheie SET - lipsește cuvântul cheie SET
    Cauză: În comanda UPDATE, cuvântul cheie SET a fost scris greșit, sau omis sau plasat greșit.
    Acțiune: Introduceți cuvântul cheie SET după numele tabelului de schimbat.
  • ORA-00972: identificatorul este prea mare
    Cauză: Numele obiectului bazei de date are mai mult de 30 de caractere (Obiectele bazei de date sunt tabele, grupuri, vizualizări, indecși, sinonime, tărâmuri și nume de utilizator.
    Acțiune: Scurtați numele la maximum 30 de caractere.
  • ORA-00973: estimare nevalidă a numărului de rânduri
    Cauză: Valoarea numărului de rânduri descrisă în comanda CREATE INDEX este un număr mai mic decât 0.
    Acțiune: Descrieți o valoare validă (mai mare decât 0).
  • ORA-00974: factor de încărcare a blocului de index nevalid (procent)
    Cauză: Procent din volumul utilizat, descris în comanda CREATE INDEX, zona nu aparține intervalului de la 1: la 90%.
    Acțiune: Introduceți o valoare PCTFREE între 1 și 90. Valoarea implicită este 10.
  • ORA-00975: Data + data nu sunt permise
    Cauză: Încercați să adăugați două câmpuri de date împreună. Datele pot fi adăugate numai câmpurilor numerice, nu și altor date.
    Acțiune: Adăugați un câmp de date la un câmp numeric.
  • ORA-00977: opțiune de auditare duplicat - opțiune de auditare dublă
    Cauză: Aceeași opțiune de control a fost descrisă din nou.
    Acțiune: Eliminați descrierea controlului redundant.
  • ORA-00978: funcție set imbricat fără GROUP BY
    Cauză: O funcție de grup (cum ar fi MIN, MAX sau AVG) a fost utilizată în interiorul unei alte funcții de grup (cum ar fi MAX(COUNT(*))) fără o clauză GROUP BY corespunzătoare.
    Acțiune: fie adăugați o clauză GROUP BY, fie eliminați nivelul de imbricare exterior.
  • ORA-00979: nu o expresie expresio GROUP BY nu aparține GROUP BY
    Cauză: Clauza GROUP BY nu conține toate expresiile clauzei SELECT. Expresiile din SELECT care nu sunt incluse în funcțiile de grup (COUNT, SUM, AVG, MAX, MIN) trebuie să fie listate în clauza GROUP BY.
    Acțiune: Includeți toate expresiile SELECT care nu sunt argumente pentru funcțiile de grup în clauza GROUP BY.
  • ORA-00980: traducerea sinonimului nu mai este valabilă
    Cauză: Sinonimul pe care l-ați folosit a fost pentru un tabel, vizualizare sau sinonim care a fost șters sau redenumit.
    Acțiune: Înlocuiți sinonimul cu numele tabelului, vizualizării, sinonimului pentru care a fost destinat. Sau, regenerați sinonimul pentru tabelele, vizualizările sau sinonimele corecte.
  • ORA-00981: nu se poate combina opțiunile de auditare a tabelului și la nivel de sistem
    Cauză: În același timp, opțiunea de lățime a tabelului și a sistemului sunt descrise în aceeași declarație AUDIT.
    Acțiune: Corectați operatorul.
  • ORA-00982: lipsește semnul plus
    Cauză: Când este atașat, nu există semnul plus (+) după paranteza din stânga. La adăugare, paranteza din stânga (deschisă) este interpretată ca descriind un apendice și este de așteptat un semn plus. Pentru a descrie un atașament la o coloană, descrierea coloanei trebuie să fie urmată de un semn plus cuprins între paranteze (+).
    Acțiune: Corectați sintaxa SQL.
  • ORA-00984: coloana nu este permisă aici
    Cauză: Numele coloanei a fost folosit acolo unde nu este permis, cum ar fi clauza VALUES a unei instrucțiuni INSERT.
    Acțiune: Verificați sintaxa comenzii și utilizați numele coloanelor numai acolo unde este permis.
  • ORA-00985: nume de program nevalid
    Cauză
    Acțiune
  • ORA-00986: nume de grup lipsă sau invalid - nume de grup lipsă sau invalid
    Cauză: Această proprietate nu este implementată.
    Acțiune: Nu este necesară nicio acțiune de utilizator.
  • ORA-00987: nume de utilizator lipsă sau invalid(e)
    Cauză: Numele de utilizator nu a fost specificat în comanda GRANT sau unul dintre numele specificate este incorect. Numele de utilizator valide trebuie să apară după cuvântul TO din comanda GRANT. Un nume de utilizator valid începe cu o literă, este limitat la 30 de caractere și constă numai din litere, cifre și caracterele speciale $, _ și #. Nu trebuie să fie un cuvânt rezervat.
    Acțiune: Descrieți un nume de utilizator valid (sau o listă de utilizatori) după cuvântul cheie TO din comanda GRANT.
  • ORA-00988: lipsă sau parolele nevalide
    Cauză: Există mai multe nume de utilizator decât parole în comanda GRANT. Trebuie specificată o parolă validă pentru fiecare utilizator listat în comanda GRANT.
    Acțiune: Introduceți parola corectă pentru fiecare utilizator.
  • ORA-00989: prea multe parole pentru numele de utilizator date
    Cauză: Există mai multe parole decât au fost descrise de numele de utilizator în comanda GRANT. Trebuie introdusă o singură parolă pentru fiecare utilizator listat în comanda GRANT.
    Acțiune: introduceți același număr de utilizatori și parole.
  • ORA-00990: privilegiu lipsă sau invalid
    Cauză: Nu au fost declarate privilegii în comanda pentru privilegiile GRANT sau unul dintre ele este invalid.
    Acțiune: introduceți unul sau mai multe privilegii valide. Sunt permise următoarele privilegii: SELECT, INSERT, DELETE, UPDATE, ALTER, INDEX, DROP, CLUSTER și ALL. Se pot acorda mai mult de un privilegiu introducându-le într-o listă separată prin virgule (,) sau descriind cuvântul ALL pentru a acorda toate privilegiile.
  • ORA-00991: format de nerecunoscut pentru comanda GRANT
    Cauză: A fost introdusă o formă nevalidă a comenzii GRANT.
    Acțiune: Verificați sintaxa comenzii. Există două tipuri de comandă GRANT. Primul tip este folosit pentru a defini accesul utilizatorului la baza de date și ar trebui să aibă următorul format: GRANT CONNECT/RESOURCE/DBA TO<имя пользователя>IDENTIFICAT DE<пароль>. Trebuie să fie prezent cel puțin unul dintre cuvintele cheie CONNECT, RESOURCE sau DBA. Al doilea tip este folosit pentru a acorda privilegii obiectelor bazei de date și are formatul: GRANT<список привелегий>PE<обзор/ таблица>LA< индентификатор пользователя>/PUBLIC.
  • ORA-00992: format de nerecunoscut pentru comanda REVOKE
    Cauză: A fost introdusă o formă nevalidă a comenzii REVOKE.
    Acțiune: Verificați sintaxa comenzii și încercați din nou.
  • ORA-00993: lipsește cuvântul cheie GRANT
    Cauză: Opțiunea WITH a fost declarată la sfârșitul unei comenzi GRANT fără o opțiune GRANT. Pentru a acorda privilegii unui utilizator și permisiunea de a le acorda altor utilizatori, utilizați opțiunea WITH GRANT OPTIO la sfârșitul unei comenzi GRANT.
    Acțiune: Înlocuiți cuvântul cheie WITH cu WITH GRANT OPTION.
  • ORA-00994: lipsește cuvântul cheie OPTION - lipsește cuvântul cheie OPTIO
    Cauză: Opțiunea WITH GRANT a fost folosită la sfârșitul comenzii GRANT fără cuvântul OPTION.
    Acțiune: Schimbați cheia din WITH GRANT în WITH GRANT OPTION.
  • ORA-00995: identificator de sinonim lipsă sau invalid
    Cauză: Într-o comandă CREATE sau DROP SYNONYM, un nume de sinonim a fost fie omis, fie invalid.
    Acțiune: Verificați greșelile de scriere și sintaxa comenzii. Un nume de sinonim valid trebuie să urmeze imediat tasta SINONIM în ambele comenzi. Un nume de sinonim valid începe cu o literă, este limitat la 30 de caractere și constă numai din litere, cifre și caracterele speciale $, _ și #. Nu trebuie să fie un cuvânt rezervat.
  • ORA-00996: operatorul de concatenare este ¦¦ nu ¦ - operatorul de concatenare este ||, nu |
    Cauză: Tratul unic (|) a fost înțeles ca o încercare de a descrie concatenarea, dar operatorul de concatenare este format din două linii (||).
    Acțiune: Introduceți o cursă dublă pentru operația de concatenare sau eliminați o singură cursă dacă concatenarea nu este necesară.
  • ORA-00997: utilizarea ilegală a tipului de date lung
    Cauză: Ați folosit tipul de date LONG, care este folosit pentru a stoca date mai mari de 240 de caractere, într-o funcție sau în clauzele WHERE, GROUP BY, ORDER BY. Valoarea LONG poate fi folosită numai într-o clauză SELECT.
    Acțiune: Eliminați acest câmp din funcție sau ofertă.
  • ORA-00998: trebuie să numească această expresie cu o etichetă de coloană
    Cauză: O funcție sau expresie a fost folosită în comanda CREATE VIEW, dar numele coloanei corespunzătoare nu a fost declarat. Când o expresie sau o funcție este utilizată pentru o vizualizare, toate numele coloanelor și vizualizărilor trebuie să fie listate corect în comanda CREATE VIEW.
    Acțiune: Introduceți toate numele coloanelor de recenzie între paranteze după numele recenziei.
  • ORA-00999: nume de vizualizare nevalid.
    Cauză: Numele vizualizării lipsește sau este invalid în comanda CREATE VIEW.
    Acțiune: Introduceți un nume valid de vizualizare imediat după CREATE VIEW. Un nume de navigare valid începe cu o literă, este limitat la 30 de caractere și constă numai din litere, cifre și caracterele speciale $,_ și #. Nu trebuie să fie un cuvânt rezervat.