본문 바로가기

AlertLog

오라클 에러 정보 (ORA-06512) - PL/SQL 에러에 대한 부가 정보를 제공하는 ORA-06512 에러는 Alertlog 상에서도 자주 눈에띄고, 사용자 클라이언트 환경에서 종종 만나는 에러입니다. 이 에러는 에러라기 보다는 Information 성격입니다. ORA-06512 에러만 단독으로 나는 경우는 없고, 항상 다른 에러와 함께 발생하는데, 이 에러가 진짜 원인입니다. ORA-06512 는 부가적인 정보를 제공하는 셈이죠. 아래의 PL/SQL 스크립트를 실행시켜보면 쉽게 확인할 수 있습니다. set serveroutput on declare aaa varchar2(1); begin select to_char(sysdate, 'YYYY/MM/DD') into aaa from dual; dbms_output.put_line('--> Return Value : ' || aaa); e.. 더보기
오라클 에러 정보 (ORA-04031) - Shared Pool 공간이 부족한 오라클이 사용하는 메모리 영역을 SGA(System Global Area) 라고 하고, 이 SGA 내에서는 용도에 따라 여러 영역으로 구분됩니다. 이 영역중에서 SQL 또는 PL/SQL 의 SQL Statement 및 파싱정보를 보관하고 있는 공간을 Shared Pool 이라고 합니다. 더 정확하게 얘기하면 Shared Pool 안에서 또 나눠집니다. 1) SQL 또는 PL/SQL 의 SQL Statement 및 파싱정보를 저장하는 Library Cache 영역 2) 오라클 딕셔너리(Dictionary) 정보를 저장하는 Row Cache 영역 SQL 문장과 파싱정보를 뭐하러 Shared Pool 에 보관할까요? 그건 매번 똑같은 SQL문을 실행할 때마다 이 SQL을 어떻게 실행할 지 Optimizer가 .. 더보기
오라클 에러 정보 (ORA-01653) - 테이블스페이스에서 테이블을 위한 공간 확장을 못하는 Oracle Alertlog에 보면 가끔 ORA-1653 에러가 발생하는 경우가 있습니다. Wed Oct 29 21:22:05 2017 ORA-1653: unable to extend table SCOTT.EMP by 4096 in tablespace USERS SCOTT 유저의 EMP 테이블이 공간이 부족해서 확장하려하는데, USERS 테이블스페이스(Tablespace)에 공간이 부족해서 확장할 수 없다는 의미입니다. 이렇게 Alertlog에 ORA-1653 에러가 발생하는 경우 어떤 Tablespace 에 어떤 Table 을 확장하려다가 에러가 난 건지 친절하게 알려줍니다. DBA는 해당 테이블스페이를 늘려주기만 하면 되죠. 비교적 간단한 에러이긴 하지만, 제때 늘려주지 않으면 난리가 나는 상황을 경.. 더보기
오라클 에러 정보 (ORA-07445) - Internal Error Exception ORA-07445 에러는 ORA-00600 에러와 같은 오라클 내부 Exception 에러 코드입니다. 주로 오라클도 잘 모르는 희한한(?) 에러가 발생하는 경우에 해당합니다. 우리도 프로그램 짜다보면 내가 예측하지 못한 에러가 발생하는 경우가 있잖아요? 우리가 예측할 수 있는 경우는 Exception 절에 if 문을 써서 이 에러는 요렇게, 저 에러는 저렇게 하라고 가이드 메시지를 뿌려줄 수 있지만, 그 외 개발자도 예측하지 못한 경우가 당연히 있고, 그런 경우 else 라고 처리해 버리는 것과 같습니다. ORA-00600 와 달리 주로 core dump 를 출력하는 경우, ORA-07745 에러가 발생하고 나머지는 ORA-00600 과 같다고 보면 됩니다. ORA-07445: exception enc.. 더보기
오라클 에러 정보 (ORA-00600) - Internal Error Exception ORA-00600 에러는 Internal Error Code 로 ORA-07445 와 함께 대표적인 오라클 DBMS 예외 Exception 입니다. 다른 에러들은 사용자의 실수 또는 DB 사용환경상의 이슈로 자주 발생할 수 있고, 그걸 오라클이 잘 알기때문에 따로 정리하고 에러코드를 부여합니다. 예) ORA-01017 : 유저명이나 패스워드 잘못 입력한 경우 하지만, 이렇게 잘 알려진 경우가 아닌 버그성으로 특수한 경우에 발생하는 케이스가 있을 수 있습니다. 이런 경우 오라클은 ORA-00600 에러를 Alert Log 에 다음과 같은 포맷으로 찍습니다. ORA-00600: internal error code, arguments: [qeaeDecompress: kgcddo], [12], [7495], [.. 더보기
오라클 에러 정보 (ORA-12012, ORA-06550) - DBMS_JOB 실행중 발생한 에러 Alert Log 상에 ORA-12012 와 ORA-06550 에러가 함께 나왔다면, DBMS_JOB 실행중 실패한 것입니다. ORA-12012: 작업 21의 자동 실행중 오류 발생 ORA-06550: 줄 1, 열96:PLS-00201: 'XXXXXXXXX' 식별자가 정의되어야 합니다 ORA-06550: 줄 1, 열96:PL/SQL: Statement ignored 클라이언트 환경에서 PL/SQL(프로시져, 함수) 실행시 코드상에 오류가 있으면, 화면에 ORA-06550 에러가 발생하지만, 이때는 Alert Log 상에는 찍히지 않고 클라이언트 화면에만 나타납니다. ORA-12012 와 ORA-06550 에러가 함께 발생했다면, DB내의 JOB 을 살펴봐야 합니다. 아래와 같은 시나리오를 생각해 볼 수 .. 더보기
오라클 에러 정보 (ORA-31) - DBA가 세션을 Kill 했으나 좀 기다려야 할 때 발생하는 ORA-31 에러는 DBA가 alter system kill session 을 실행했기 때문에 찍힌 메시지 입니다. DBA가 kill session 명령을 주었을때 어떤 세션은 금방 Kill 되지만, 어떤 세션은 하던 작업때문에 바로 Kill 할 수 없고 하던 작업을 정리하는 시간이 필요할 수 있습니다. 주로 조회SQL을 실행하던 세션의 경우는 바로 Kill 이 가능하지만, 대량의 Update 나 Delete 작업 같은 DML 작업을 하고 있는 세션이었다면 Kill 명령을 받는 순간 롤백 작업에 들어가야 하고, 이 롤백 작업시간은 지금까지 했던 DML 시간 만큼은 걸리기 때문에 바로 Kill이 안됩니다. $ oerr ora 31 00031, 00000, "session marked for kill" //.. 더보기
오라클 에러 정보 (ORA-28) - 이미 Kill 된 세션을 접근하려고 할 때 발생하는 ORA-28 에러는 그냥 정보성 에러 입니다. $ oerr ora 28 00028, 00000, "your session has been killed" // *Cause: A privileged user has killed your session and you are no longer // logged on to the database. // *Action: Login again if you wish to continue working. 어떤 이유로 인해서 특정 세션이 Kill 되었을때, 그 당시에는 즉시 ORA-0, ORA-27 이나 ORA-30 같은 Kill 원인/액션에 해당되는 메시지가 alert log 에 찍히게 됩니다. 이때 해당 세션은 Kill 되었지만, 커넥션캐시(?) 라는 곳.. 아마 OS.. 더보기