エラー | メッセージ | 発生状況 | 対処方法 | 更新日 |
---|---|---|---|---|
ORA-00001 | 一意制約に反しています | INSERTやUPDATE実行時。 | ユニークキー制約が指定されている項目(プライマリキー等)で、既存のデータになるようなINSERTやUPDATEが行われた場合に発生する。 そういうデータで更新しないようにするしかない。 |
2007-09-15 |
ORA-00054 | リソース・ビジー、NOWAITが指定されていました。 | SELECT〜FOR UPDATE NOWAITでタイムアウトした時。 | 2009-01-19 | |
ORA-00060 | リソース待機の間にデッドロックが検出されました。 | デッドロックが発生した時。 | Oracleがデッドロックを検知すると、片方にこのエラーが発生する。 エラーが発生した側がロールバックすることにより、もう一方は正常に処理できる。 このエラーが起きると、トレースログ(udumpに拡張子trcのファイル)が作られる。 |
2009-01-19 |
ORA-00101 | invalid specification for system parameter DISPATCHERS | DB起動時。 端末を移動してIPアドレスの設定を変えたら、サーバー名からIPアドレスが取得できなくなったらしい(サーバー名自体は変わってないのに)。 |
vi $ORACLE_HOME/network/admin/listener.ora (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521)) )とりあえず、HOSTのhostnameをIPアドレスに変更。 |
2004-10-30 |
ORA-00439 | 機能は使用可能ではありせん: Partitioning | パーティションテーブルを作成しようとした時。 | Oracle9iのStandard Editionではパーティションを作れない。 バージョンを表示したときにEditionが何も表示されなければStandardらしい。 |
2007-12-11 |
機能は使用可能ではありせん: XXX | 使用できない機能を使おうとした時。 | たいてい、Enterprise Editionでないと使えない機能を使おうとした時にこのエラーが出る。 v$optionで、その機能(オプション)が使えるかどうか確認できる。 |
2009-12-24 | |
ORA-00904 | 無効な識別子です。 | INSERTやUPDATE実行時。 | SQL> insert into emp("empno") values('9002');
insert into emp("empno") values('9002')
*
行1でエラーが発生しました。:
ORA-00904: "empno": 無効な識別子です。
列名を指定する時は「"(ダブルクォーテーション)」でくくったりしてはいけない。 SQL> update emp
2 set ename='test0'
3 where ename="test";
where ename="test"
*
行3でエラーが発生しました。:
ORA-00904: "test": 無効な識別子です。
定数を指定する時は「"(ダブルクォーテーション)」でなく「'(シングルクォーテーション)」でくくる。 |
2004-11-12 |
ORA-00907 | 右カッコがありません。 | マテリアライズド・ビューの作成時。括弧なんか使ってないのに。 | 高速リフレッシュのマテリアライズド・ビューの場合、内容の制限が色々ある。それに引っかかるのはしょうがないとして、なぜ括弧のエラー!? | 2005-02-05 |
ORA-00942 | 表またはビューが存在しません。 | 他者が保有しているテーブルを指定した時。 | そのオブジェクトに対するアクセス権限が無い。 「アクセス権限が無い」というエラーメッセージだと、そのオブジェクト名が存在することは分かってしまうので、セキュリティーの観点からこういう文言になっている…のかなぁ? |
2007-09-22 |
SQLを書いた関数やプロシージャをCREATEした時。 | SQL*Plusで問題なく実行できるSQLが、ストアドプロシージャではエラーになることがある。 そのテーブルに対するアクセス権限がロールによるものである可能性が高い。 |
|||
ORA-00955 | すでに使用されているオブジェクト名です。 | CREATE TABLE時。テーブルは存在していないのに。 | テーブルが存在していなくても、CREATE TABLE文でPRIMARY KEYを作成している場合に
そのインデックスが存在していたらこのエラーになる。 インデックス名をリネーム又は削除する。 |
2004-11-18 |
CREATE VIEW時。 | SQL> create view test_view as select * from test_table; create view test_view as select * from test_table * 行1でエラーが発生しました。: ORA-00955: すでに使用されているオブジェクト名です。 エラーはtest_tableを指しているが、実は既に存在しているのはtest_viewの方。select元が存在しているのは当たり前じゃぁ! |
2005-02-02 | ||
ORA-00984 | ここでは列は使用できません。 | SQL*Loaderでのロード実行時。 | HIREDATE NEXT * , CHARACTER
列のSQL文字列 : "TO_DATE(HIREDATE,'YYYY/MM/DD HH24:MI:SS')"
〜
レコード1: 拒否されました。- 表EMP,列HIREDATEでエラーが発生しました。
ORA-00984: ここでは列は使用できません。
関数の引数の項目名に「 |
2004-10-30 |
INSERT実行時。 | SQL> insert into emp(empno) values("9002"); insert into emp(empno) values("9002") * 行1でエラーが発生しました。: ORA-00984: ここでは列は使用できません。 定数を指定する時は「"(ダブルクォーテーション)」でなく「'(シングルクォーテーション)」でくくる。 |
2004-11-12 | ||
ORA-01034 | ORACLE not available | DBが立ち上がっていない。 DB起動時にORA-00101のエラーが出ていることに気付かずDBにログイン。 |
DB起動時のエラーを無くす。 | 2004-10-30 |
ORA-27101 | shared memory realm does not exist | |||
ORA-01013 | ユーザーによって現行の操作の取消しが要求されました。 | JDBCのsetQueryTimeout()によってタイムアウトした時。 | 2009-01-19 | |
ORA-01031 | 権限が不足しています。 | その操作を行う権限が無い。GRANT文で権限を付与する必要がある。 | 2010-07-29 | |
ORA-01460 | 要求された変換はできません | JavaのPreparedStatement実行時。 | いまいちはっきりしないけど、SJISで扱うつもりのDBをEUCで作っていた。DBをSJISで作り直したら出なくなった。 | 2004-06-12 |
ORA-01722 | 数値が無効です | to_number()使用時。 | to_number()に、数値に変換できない文字列が指定された場合のエラー。 そういう時でも大丈夫な関数は自前で作る必要がある。 |
2008-12-14 |
ORA-01861 | literal does not match format string | JDBCでINSERT時。 | JDBC(preparedでないStatement)でINSERTしようとした際、DATE型の項目にVALUES句で'2009/03/20' やto_date('2009/03/20') を指定したら出た。to_date('2009/03/20','YYYY/MM/DD') にしたら通った。 |
2009-03-20 |
ORA-02264 | 既存の制約によってすでに使用されている名前です。 | CREATE TABLE時。 | 読んで字の如し。CREATE TABLE文でPRIMARY KEYを作成している場合に
そのユニークキー制約が存在していたらこのエラーになる。 制約(CONSTRAINT)をリネーム又は削除する。 |
2004-11-18 |
ORA-03113 | 通信チャネルでend-of-fileが検出されました | with句を使ってFULL OUTER JOINしたとき。 | 何らかの要因(Oracleのバグ?)によってDBMS側のプロセスが落ちてSQL*Plusとの接続が切れるとこのエラーになるっぽい。 サーバー側でコアダンプファイルが作られていないか確認すべし。 |
2007-10-30 |
ORA-12514 | TNS: リスナーは接続記述子で要求されたサービスを現在認識していません | Oracle10gをインストールしてDBを作った後にOAS10gをインストールし、sql*plusでDBに接続しようとした時。 | WindowsのOracleのサービスは起動しているのに、DB自体は起動/マウントされていなかった。手動で起動してやれば接続できるようになる。どうやったら自動起動するようになるかは不明…。 | 2005-05-27 |
ORA-12913 | ディクショナリ管理表領域を作成できません | 一時表領域を作成しようとした。 | ハードディスクの容量とは無関係っぽい。一時表領域を作って使うのは諦めて、最初から在る「TEMP」表領域を使うことにしたけど。 実はOracle9.2では Oracle9.0までの一時表領域作成用のSQLの文法は使えず、新しい文法になったらしい。 |
2004-11-12 |
ORA-14019 | パーティション・バウンド要素は、文字列、日付時刻または間隔を示すリテラル、数値、またはMAXVALUEの1つです。 | レンジパーティションを作成しようとした時。 ハッシュパーティションの索引をインポートしようとした時。 |
パーティションでRANGEの上限値にNULLを指定した場合に発生する。 「 PARTITION パーティション名 VALUES LESS THAN(NULL) 」 |
2007-12-13 |
ORA-14024 | number of partitions of LOCAL index must equal that of the underlying table | ローカルインデックスを作成しようとした時。 | ローカルインデックスでは、基となるテーブルと異なる個数のパーティションを指定することが出来ない。 例えば2つのパーティションに分かれているテーブルに対し「 CREATE INDEX インデックス名 ON テーブル名(項目)
LOCAL (PARTITION p1, PARTITION p2, PARTITION p3); 」というように3つのパーティションを指定するとダメ。 |
2007-12-13 |
ORA-14151 | invalid table partitioning method | リストパーティション形式のインデックスを作成しようとした時。 | グローバルパーティション索引を作るときにはリストパーティションを指定できない。 | 2007-12-13 |
ORA-14551 | 問合せの中でDML操作を実行することはできません。 | 自作の関数をSELECT文で実行しようとした。 | 更新系のSQL(DML)を含む関数は、SELECTでは実行できない。 EXECを使って実行すべし。 |
2007-09-22 |
ORA-24777 | 移行できないデータベース・リンクは使用できません | XAトランザクション内でDBリンク経由のテーブルにアクセスしようとした。 | DBリンクをXAトランザクションで使う場合、“共有サーバー接続”である必要がある。 (ORA-24777の説明にある「マルチスレッド・サーバー(MTS)」という語は、共有サーバー接続を指す昔の言葉らしい) サーバー(DB)側で、共有サーバー接続を受け付ける設定にする必要がある。 |
2008-10-30 |
ORA-30006 | リソース・ビジー; WAITタイムアウトの期限に達しました。 | SELECT〜FOR UPDATE WAIT nでタイムアウトした時。 | 2009-01-19 | |
ORA-38301 | can not perform DDL/DML over objects in Recycle Bin | テーブル名がBIN$で始まるテーブルをDROPしようとした。 | Oracle10gでは、テーブルを普通にDROPしただけではリサイクルビンの管理下に入る(BINで始まるテーブル名にリネームされる)だけとなった。別途PURGEコマンドを実行するか、DROP時にPURGEオプションを付けるかする必要がある。 | 2005-06-26 |
エラー番号が分かれば、SQL*Plus上で そのエラーメッセージを表示してみることが出来る。[2007-06-26]
SQL> set serveroutput on SQL> exec dbms_output.put_line(sqlerrm(-101)); ORA-00101: システム・パラメータDISPATCHERSの指定が無効です PL/SQLプロシージャが正常に完了しました。
sqlerrmの引数に(マイナスの値で)エラー番号を指定する。