- ORA-00001
unique constraint violatedAn INSERT, UPDATE or MERGE tried to store a value that already exists in a column protected by a primary key or unique constraint. Find the constraint named in the message, see which columns it covers, and either change the value or update the existing row instead. - ORA-00054
resource busy and acquire with NOWAIT specifiedAnother session holds a lock on the object or rows you need, and your statement was not allowed to wait for it. Find the blocking session, let it commit or roll back, then run your statement again. - ORA-00060
deadlock detected while waiting for resourceTwo sessions were each waiting for a lock the other held. Oracle broke the cycle by rolling back one statement in one of them. Make sessions lock rows in the same order, and index foreign key columns. - ORA-00904
invalid identifierOracle cannot find a column or name used in the statement. Usually the column is misspelled, belongs to another table, was created in quotes with a different case, or is a SELECT-list alias used in the WHERE clause. - ORA-00907
missing right parenthesisThe parser reached a point where it expected a closing parenthesis. Sometimes one really is missing, but often something inside the parentheses is not allowed there — such as ORDER BY inside an IN subquery or a wrong column definition in CREATE TABLE. - ORA-00933
SQL command not properly endedOracle reached text after what it considered the end of the statement. Common causes are a trailing semicolon in dynamic SQL, the keyword AS before a table alias, or a clause in the wrong place. - ORA-00936
missing expressionOracle expected a column, value or expression and found nothing usable — typically a trailing or double comma in the SELECT list, an empty SELECT, or a keyword where a value should be. - ORA-00942
table or view does not existOracle cannot find the table or view — or it exists but you have no privilege on it. Check the name and the schema prefix, then the privileges. Oracle deliberately shows the same error in both cases. - ORA-01017
invalid username/password; logon deniedThe database rejected the login. Usually the password is wrong (passwords are case-sensitive), but the user may also not exist in the database or PDB you reached, or a SYSDBA login may not match the password file. - ORA-01031
insufficient privilegesYour user is missing a system or object privilege needed for the statement — for example CREATE TABLE, ALTER SYSTEM or EXECUTE on a package. Inside definer’s-rights PL/SQL, privileges granted through roles do not count. - ORA-01400
cannot insert NULL into columnAn INSERT left a NOT NULL column empty. The message names the column. Supply a value, give the column a default, or let a trigger or identity column fill it. - ORA-01403
no data foundIn PL/SQL, a SELECT … INTO returned no row (or code read an associative-array element that does not exist). Handle the NO_DATA_FOUND exception, or write the query so that “no row” is a normal result. - ORA-01422
exact fetch returns more than requested number of rowsIn PL/SQL, a SELECT … INTO returned more than one row. Make the WHERE clause unique, pick one row deliberately, or fetch into a collection or loop. - ORA-01427
single-row subquery returns more than one rowA subquery used where one value is expected — after =, or in the SELECT list — returned several rows. Use IN or EXISTS, aggregate the subquery, or make it return a single row. - ORA-01555
snapshot too oldA long-running query needed an older version of some data to stay read-consistent, but that undo had already been overwritten. Make the query faster, keep undo longer (UNDO_RETENTION and a large enough undo tablespace), and avoid committing inside a loop over an open cursor. - ORA-01722
invalid numberOracle tried to convert a character value to a number and the text was not a valid number. Often a VARCHAR2 column is compared to a number, so one bad row anywhere in the table breaks the query. - ORA-06502
PL/SQL: numeric or value errorA PL/SQL assignment or conversion failed: most often a string is longer than the variable can hold (character string buffer too small), a text cannot become a number, or NULL went into a NOT NULL variable. - ORA-12154
TNS: could not resolve the connect identifierThe client could not turn the connection name you used into an address. The alias is not in the tnsnames.ora the client is reading, or the client is reading a different file than you think. Fix the alias or connect with host:port/service directly. - ORA-12514
TNS: listener does not know of service requestedThe connection reached the listener, but the listener has no database service with the name you asked for. Check the service name, check that the database or PDB is open, and check that it is registered with this listener. - ORA-12899
value too large for columnA value is longer than the column allows. The message shows the actual and maximum length. With multi-byte data, a column sized in BYTE can overflow even when the text looks short enough — Turkish letters such as ğ, ş and ı take two bytes in AL32UTF8.
Oracle is a registered trademark of Oracle Corporation. SQLlightspeed is not affiliated with Oracle.