V$INSTANCE, V$NLS_PARAMETERS のSELECT 権があるスキーマで実行するか、
あらかじめSYSスキーマから
GRANT SELECT ON V_$INSTANCE TO PUBLIC or 当コードを実行するスキーマ ;
GRANT SELECT ON V_$NLS_PARAMETERS TO PUBLIC or 当コードを実行するスキーマ ;
list_ORA_errors.sql
--
-- Oracle ORA- エラーメッセージ一覧
--
-- 銀行などインターネットに接続できない環境で開発・保守する時使えるとちょっと便利
--
-- English
ALTER SESSION SET NLS_LANGUAGE = AMERICAN ;
-- Japanese
-- ALTER SESSION SET NLS_LANGUAGE = JAPANESE ;
--
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING ON
SET LINESIZE 150
SET PAGESIZE 50000
SET SERVEROUTPUT ON SIZE UNLIMITED
SET TERMOUT OFF
SET TRIMSPOOL ON
-- SPOOL pass includes VERSION and LANGUAGE
COLUMN VERSIONS NEW_VALUE VERSIONS
SELECT REPLACE(VI.VERSION, '.', '_') || '_' AS VERSIONS
FROM V$INSTANCE VI
-- Windows ↑, UNIX/Linux では ↓ を有効に
FROM V\$INSTANCE VI
;
COLUMN LANGUAGES NEW_VALUE LANGUAGES
SELECT NP.VALUE AS LANGUAGES
FROM V$NLS_PARAMETERS NP
-- Windows ↑, UNIX/Linux では ↓ を有効に
-- FROM V\$NLS_PARAMETERS NP
WHERE NP.PARAMETER = 'NLS_LANGUAGE' ;
SPOOL list_ORA_errors_&&VERSIONS&&LANGUAGES..log
-- Windows ↑, UNIX/Linux では ↓ を有効に
-- SPOOL list_ORA_errors_\&&VERSIONS\&&LANGUAGES..log
DECLARE
L_SQLERRM VARCHAR2(2048) ;
CURSOR CUR_ER
IS
-- NUMBER FROM ~ TO
SELECT A.NUMBER_FROM - ROWNUM + 1 AS NUMBERS -- DESCENDING
FROM(
SELECT -1 AS NUMBER_FROM -- 初期値
, -65536 AS NUMBER_TO -- 終了値
FROM DUAL
) A
CONNECT BY LEVEL <= A.NUMBER_FROM - A.NUMBER_TO + 1 ;
BEGIN
FOR REC_ER IN CUR_ER LOOP
L_SQLERRM := SQLERRM(REC_ER.NUMBERS) ;
IF L_SQLERRM NOT LIKE '%not found; product=RDBMS; facility=ORA%' AND
RTRIM(SUBSTR(L_SQLERRM, 11)) IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE(L_SQLERRM) ;
END IF ;
END LOOP ;
END ;
/
SPOOL OFF
SET LINESIZE 80
-- ALTER SESSION SET NLS_LANGUAGE = AMERICAN ; で実行した時
anser
ORA-00001: unique constraint (.) violated
ORA-00017: session requested to set trace event
ORA-00018: maximum number of sessions exceeded
ORA-00019: maximum number of session licenses exceeded
ORA-00020: maximum number of processes () exceeded
ORA-00021: session attached to some other process; cannot switch session
ORA-00022: invalid session ID; access denied
ORA-00023: session references process private memory; cannot detach session
ORA-00024: logins from more than one process not allowed in single-process mode
ORA-00025: failed to allocate
-- 以下略
-- ALTER SESSION SET NLS_LANGUAGE = JAPANESE ; で実行した時
anser
ORA-00001: 一意制約(.)に反しています
ORA-00017: セッションがトレース・イベントを設定するようリクエストしました。
ORA-00018: 最大セッション数を超えました
ORA-00019: 最大セッション・ライセンス数を超えました
ORA-00020: 最大プロセス数()を超えました
ORA-00021: 他のプロセスに連結されています。セッションは切替えできません
ORA-00022: 無効なセッションIDです。アクセスは拒否されました
ORA-00023: セッションがプロセス・プライベート・メモリーを参照します。セッションを連結解除できません
ORA-00024: シングル・プロセス・モードで複数ログインは使用できません。
ORA-00025: の割当てに失敗しました
-- 以下略