프린트 하기

OS 환경 : Oracle Linux 8.4 (64bit)

 

DB 환경 : Oracle Database 23.4.0.24.05 ai Free

 

방법 : 오라클 23ai 신기능 일반 에러 메세지 개선

오라클 23ai 부터 에러 메세지들이 조금 더 상세하게 나옴
오류의 상세 원인, 오류 의미 링크가 표시되고
이 링크에 오류 원인 및 문제 해결을 위한 조치사항 등 추가 정보를 제공하기 때문에 오류 메시지를 분석하기 용이해짐
sqlplus 에서의 기능도 있고 db내의 error_message_details 파라미터도 추가됨
두가지 기능을 테스트를 통해 알아봄

 

 

테스트
1. sqlplus 의 errordetails 파라미터
2. db의 error_message_details 파라미터

 

 

테스트
1. sqlplus 의 errordetails 파라미터
현재 errordetails 값 확인

1
2
SQL> show errordetails
errordetails ON

on 상태임(기본값)

 

 

제약조건이 있는 emp테이블에 emp테이블 데이터 삽입시도

1
2
3
4
5
6
SQL> insert into emp select * from emp;
insert into emp select * from emp
*
ERROR at line 1:
ORA-00001: unique constraint (SYS.PK_EMP) violated on table SYS.EMP columns (EMPNO)
Help: https://docs.oracle.com/error-help/db/ora-00001/

Help: 에 ora 에러메세지 관련 링크까지 같이 표시됨

 

 

errordetails off로 변경

1
SQL> set errordetails off

 

 

제약조건이 있는 emp테이블에 emp테이블 데이터 삽입시도

1
2
3
4
5
SQL> insert into emp select * from emp;
insert into emp select * from emp
*
ERROR at line 1:
ORA-00001: unique constraint (SYS.PK_EMP) violated on table SYS.EMP columns (EMPNO)

Help: ~ 메세지가 없어짐

 

 

2. db의 error_message_details 파라미터
현재 error_message_details 값 확인

1
2
3
4
5
SQL> show parameter error_message_details
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
error_message_details                string      ON

on 상태임(기본값)

 

 

error_message_details 값 off로 변경

1
2
3
SQL> alter session set error_message_details = off;
 
Session altered.

 

 

제약조건이 있는 emp테이블에 emp테이블 데이터 삽입시도

1
2
3
4
5
6
SQL> insert into emp select * from emp;
insert into emp select * from emp
*
ERROR at line 1:
ORA-00001: unique constraint (SYS.PK_EMP) violated on table SYS.EMP columns (EMPNO)
Help: https://docs.oracle.com/error-help/db/ora-00001/

Help 메세지 외에 ORA-00001 메세지만 표시됨

 

 

error_message_details 값 on으로 변경

1
2
3
SQL> alter session set error_message_details = on;
 
Session altered.

 

 

제약조건이 있는 emp테이블에 emp테이블 데이터 삽입시도

1
2
3
4
5
6
7
SQL> insert into emp select * from emp;
insert into emp select * from emp
*
ERROR at line 1:
ORA-00001: unique constraint (SYS.PK_EMP) violated on table SYS.EMP columns (EMPNO)
ORA-03301: (ORA-00001 details) row with column values (EMPNO:7839) already exists
Help: https://docs.oracle.com/error-help/db/ora-00001/

ORA-03301 메세지와 함께 어느 row 에서 에러가 발생하는지까지 표시됨

 

 

결론 : 오라클 에러 메세지가 좀더 명확해지고 힌트 및 에러코드 설명 링크까지 나오기 때문에 문제 발생시 트러블 슈팅을 더 쉽게 할 수 있음

 

 

참조 : 

https://docs.oracle.com/en/database/oracle/oracle-database/23/refrn/ERROR_MESSAGE_DETAILS.html

https://docs.oracle.com/en/database/oracle/oracle-database/23/sqpug/SET-system-variable-summary.html#GUID-E9FD57A8-26FA-4E13-9D57-B68818330E33