본문 바로가기

전체 글

ORA-600, ORA-7445 등 Internal 에러 분석할때 필요한 정보수집 TFA툴 소개 Oracle DB에서 ORA-00600, ORA-00700, ORA-07445 등과같은 Internal 에러가 발생하는 경우는 보통 버그성인 경우가 많고, 원인분석을 위해 오라클에 직접 물어봐야 합니다. 이때, 오라클에 증상만 설명하고 에러넘버만 불러준다고 오라클에서 원인분석을 할 수 있는 게 아닙니다. 보통 ORA-00600 같은 Internal 에러들은 버그성인 경우들이 많아서 Oracle 개발자도 첨보는 에러상황인 경우일 수 있기 때문에, 그 당시(에러가 날 당시)의 각종 로그정보들이 필요합니다. 그 당시의 정보를 이거달라 저거달라 해서 주고받다 보면 시간이 엄청 소요되겠죠? 그래서 한방에 필요할만한 정보들을 왕창 모아서 받기 위해 오라클에서 만든게 TFA (Trace File Analyzer) 라.. 더보기
오라클 에러 (ORA-00998: must name this expression with a column alias) Oracle DB에서 CTAS(Create Table As Select) 구문으로 임시데이터를 만들때 아주 흔하게 만나는 에러가 ORA-00998 입니다. 아래와 같이 connect by 문으로 간단히 테스트 데이터를 1000건 만들고자 할때, CTAS 구문을 사용할 수 있습니다. SQL> create table TEST33 as select level + 1000 from dual connect by level create table TEST33 as select level + 1000 as col33 from dual connect by level 더보기
오라클 에러 정보 (ORA-06532, ORA-06533) - PL/SQL에서 Arrary(배열) 범위를 벗어난 경우 Oracle DB 내에 있는 프로시저, 함수를 호출할때 아래와 같이 ORA-06532, ORA-06512 에러가 발생하는 경우, 이는 프로시저, 함수내에서 Arrary(배열) 변수를 사용했는데, 이 부분에서 에러가 발생한 것입니다. 배열로 선언해놓은 범위를 벗어나서 호출하는 경우에 발생합니다. PL/SQL 에서 배열 첫번째 인자는 0 이 아닌, 1 부터 시작하는 것을 주의할 필요가 있습니다. 아래의 PL/SQL 문의 경우 v_arrary 변수는 3개의 데이터(배열멤버)를 가진 배열 변수입니다. 따라서, 배열의 멤버들을 접근하려면 v_array(1), v_arrary(2), v_arrary(3) 처럼 사용해야 합니다. SQL> set serveroutput on SQL> declare type V_ARR .. 더보기
(솔라리스 19c DB 설치시 에러) pkg list: no packages matching 'oracle-database-preinstall-19c' known Oracle Solaris 11 버전에서 Oracle Databse 19c 설치하기 전에, 필요한 패키지 설치를 위해 oracle-database-preinstall-19c 를 먼저 install 하도록 되어있습니다. 하지만, 막상 실행해보면, 아래와 같이 못 찾는다는 에러메시지가 발생합니다. 한글 Locale 환경에서는 아래와 같이 나옵니다. [root@solaris ~]# [root@solaris ~]# pkg list -n oracle-database-preinstall-19c pkg list: 'oracle-database-preinstall-19c'과(와) 일치하는 패키지가 알려지지 않았습니다. [root@solaris ~]# [root@solaris ~]# [root@solaris ~]# [r.. 더보기
오라클 병렬처리(Parallel Processing)관련 주의사항 (의도하지 않은 병렬수행, default degree) 지난번 포스팅에서 Table 에 설정된 degree 값을 주의깊게 봐야한다고 설명드린 적이 있는데, 그 값이 특정 숫자가 아니라 "default" 라고 되어 있는 경우도 주의가 필요합니다. 아래와 같이 TEST_X1 테이블에 degree 값이 "default" 로 되어 있는 것을 확인할 수 있습니다. 이 default 의 의미가 위험합니다. 병렬처리에서 default 값은 cpu_count x parallel_threads_per_cpu 로 계산됩니다. 저는 테스트서버로 cpu_count 값이 4밖에 안되지만, 실제 운영시스템의 경우는 보통 24, 48, 96 정도로 꽤 큰 값입니다. 여기에 x 2 (parallel_threads_per_cpu) 를 하기때문에, 아주 많은 병렬프로세스를 띄우게 되는 불상.. 더보기
집에서 할수 있는 재미있는 다이어트 운동기구 - 이젠 오큘러스 VR 끼고~ 코로나 시대에 헬스장, 탁구장 다니기 겁나기도 하고, 날씨가 추워지니 나가기도 싫고... 하지만 운동은 해야겠고...ㅎ 그래서 여러가지 집에서 할수 있는 운동기구들을 찾다가 지난번에 탭볼(Tapball) 이라는 놈을 찾아서 한동한 신나게 놀았습니다. 하지만, 어느정도 경지에 이르니 차츰 흥미가 떨어지더만요... 그러다, 최근에 훨씬 더 쌈빡한 확실히 재미있는 운동기구를 찾았습니다. ㅎㅎ 바로 "오큘러스 퀘스트2" VR 을 이용한 복싱 게임입니다. 게임제목은 "Fit XR" 입니다. 물론, 이걸 하려면 돈이 좀 들어가긴 합니다. 가장 먼저 VR 장비가 필요하죠~ 페이스북에서 오큘러스사를 인수하면서 VR장비가 더 좋아지고 저렴해지고 있는데, 최근에 나온 "오큘러스 퀘스트2" VR 기기가 가격이 50만원 정도.. 더보기
오라클 에러 정보 (ORA-01144) - 데이터파일 최대크기를 초과한 경우 Oracle 에서 데이터파일(datafile)을 크게 새로 만들려고 하거나, 기존 데이터파일의 크기를 변경(resize) 하려고 할때, ORA-01144 에러를 만날 수 있습니다. Oracle 에서 데이터는 블록(block) 단위로 저장됩니다. 하나의 데이터파일이 가질 수 있는 최대 블록의 갯수 제한이 있는데, 이게 2^22-1 입니다. 즉, 4,194,303 개. 오라클DB에서 블록크기를 보통 8k (8,192) 를 많이 사용합니다. 8k * 4,194,303 = 32GB 16k * 4,194,303 = 64GB 32k * 4,194,303 = 128GB 8k 짜리 블록 4백만개는 32GB 크기가 됩니다. 그래서 datafile 최대크기는 32GB 로 제한됩니다. 이런 제한때문에 ORA-01144 에러.. 더보기
오라클 테이블, 인덱스 압축 OLTP Compress 테스트 (ACO 옵션) Oracle DB서버의 Disk 스토리지 공간을 절약하기 위해서, 데이터베이스내에 있는 Table, Index 를 압축(Compress)할 수 있습니다. 1) Basic SQL> alter table TEST1 move row store compress basic; 2) Advanced SQL> alter table TEST1 move row store compress advanced; Basic 과 Advanced 타입이 있는데, Basic 의 경우는 초기에 테이블에 데이터를 대량으로 로딩할 때만 압축이 적용됩니다. 이후로 들어오는 데이터는 압축되지 않고 그냥 저장됩니다. Advanced 의 경우는 시기나 방식에 상관없이 계속 압축됩니다. 단, ACO(Advanced Compression Option).. 더보기