目次
Oracleデータベースの説明
ORA-06512 Oracleでは、OracleデータベースのPLSQLプログラムでよく見られるエラーの1つです
このエラーについてOracleのドキュメントに記載されている内容は次のとおりです
参照:Oracleドキュメント
これは、Unixで以下と入力することでいつでも見つけることができます
oerr ORA 06512
ORA-06512エラーの説明:
エラーORA-06512 PLSQLコードの未処理の例外によってスタックが巻き戻されているときのバックトレースメッセージを意味します。これは、すべてのPLSQL例外のキャッチオールエラーであり、一般的に見られます。
ORA 6512は実際のエラーを示していませんが、PLSQLコードの未処理のエラーの行番号を示しています。 ORA-6512は通常、次の例のように、前のメッセージがエラーの理由を示しているメッセージスタックに表示されます。
ORA-06502: PL/SQL: numeric or value error ORA-06512: at line 1112
上記では、黄色で強調表示されたエラーが主なエラーです
ORA-06512エラーの理由:
このOracleエラーを解決するためのオプションは次のとおりです。
1)未処理のエラーの原因となっている状態を修正します。
2)この未処理のエラーの例外ハンドラを記述します。
3)OracleDBAに問い合わせてください。
ORA-06512の例:
それに取り組む方法のいくつかの例を見てみましょう
CREATE OR REPLACE PROCEDURE Testora_proc AS Site_name varchar2(5); begin site_name := 'techgoeasy.com'; end; / Procedure created. sql> Exec Testora_proc ERROR at line 1: ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at line 5
上記の例では、プロシージャは正常にコンパイルされますが、実行中にエラーが発生しました
したがって、実際のエラーはエラーです
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
変数のサイズを大きくすることで簡単に修正できます
CREATE OR REPLACE PROCEDURE Testora_proc AS Site_name varchar2(20); begin site_name := 'techgoeasy.com'; end; / Procedure created. SQL> Exec Testoraproc PL/SQL procedure successfully completed.
例外ハンドラーを使用してこれを解決することもできます
CREATE OR REPLACE PROCEDURE Testora_proc AS Site_name varchar2(5); begin site_name := 'techgoeasy.com'; EXCEPTION WHEN OTHERS THEN site_name := 'tech'; end; / Procedure created.SQL>Exec Testoraproc; PL/SQL procedure successfully completed.
別の例は
ですCREATE OR REPLACE PROCEDURE Testora_proc AS node_name varchar2(5); begin select node into node_name from db_node; end; / Procedure created SQL> Exec Testora_proc; ORA-01422: exact fetch returns more than requested number of rows ORA-06512: at “NODE_NAME”, line 4 ORA-06512: at line 1
ここで、ORA-01422が実際のエラーです。 db_nodeテーブルに複数の行があり、ノードの複数の値を取得します。したがって、1つの修正で1つの行を制限できます
CREATE OR REPLACE PROCEDURE Testora_proc AS node_name varchar2(5); begin select node into node_name from db_node where rownum <2; end; / Procedure created SQL> Exec Testora_proc; PL/SQL procedure successfully completed.
別の例は
ですCREATE OR REPLACE PROCEDURE Testora_proc AS node_name varchar2(5); begin select node into node_name from db_node; end; / Procedure created SQL> Exec Testora_proc; ORA-01403: no data found ORA-06512: at “NODE_NAME”, line 4 ORA-06512: at line 1
ここで、ORA-01403が実際のエラーです。 db_node oracleテーブルに行がなく、データが見つからないというエラーが発生しているため、1つの修正で例外処理を行うことができます
CREATE OR REPLACE PROCEDURE Testora_proc AS node_name varchar2(5); begin select node into node_name from db_node where rownum <2; EXCEPTION WHEN NO_DATA_FOUND THEN node_name := 'tech'; end; / Procedure created SQL> Exec Testora_proc; PL/SQL procedure successfully completed.
SYS.UTL_FILE
には、さらにいくつかの例があります。SQL> declare F_LOG utl_file.file_type; begin F_LOG := utl_file.fopen('TESTDIR','k', 'w'); end; / 2 3 4 5 6 declare * ERROR at line 1: ORA-29283: invalid file operation ORA-06512: at "SYS.UTL_FILE", line 536 ORA-29283: invalid file operation ORA-06512: at line 4
ここでの主なエラーはORA-29283です。リンクをクリックして解決策を確認してください
ORA-6512のこの投稿を気に入っていただければ幸いです。 エラーメッセージ
関連記事ORA-00911
ORA-03113
ORA-00257
ORA-27154
ORA-29913
ORA-20001、11gのスキーマ統計を収集(FND_HISTOGRAM_COLS )