본문 바로가기

IT관련

오라클 병렬처리(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) 를 하기때문에, 아주 많은 병렬프로세스를 띄우게 되는 불상.. 더보기
오라클 에러 정보 (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).. 더보기
ASM 구성시 LUN 크기, 갯수가 성능에 미치는 영향 LUN은 Logical Unit Number 의 약자로, "논리적인 디스크" 단위를 말합니다. 논리적인 단위이기 때문에, 물리적인 디스크 한개가 하나의 LUN 이 될 수도 있고, 여러개의 디스크가 하나의 LUN 이 될 수도 있습니다. 물론 1개의 디스크 내에 여러개의 LUN 이 있을 수도 있습니다. 구성하기 나름입니다. Oracle ASM 에서 DG (Disk Group) 구성시 물리적인 디스크 파티션을 통째로 사용하는 경우는 별로 신경쓸게 없지만, LUN 을 사용하는 경우, ASM DG 구성을 위해 LUN 크기는 얼마로 잡아야 할지, LUN 갯수는 얼마로 잡아야 할지 고민이 됩니다. 그래서 오라클 MOS (My Oracle Support) 에서 문서들을 좀 뒤져 봤습니다. Lun Size And Per.. 더보기
오라클 에러 정보 (ORA-01110) - 데이타파일 관련된 에러시 부가정보를 제공하는 ORA-01110 에러는 부가적인 정보를 제공하는 Information 메시지 입니다. 특정 데이타파일(Datafile) 관련해서 다른 중요한 에러가 발생한 경우, 해당 데이터파일에 대한 파일정보를 제공합니다. 따라서, 함께 발생하는 다른 에러가 뭔지 함께 확인해야 정확한 에러의 원인을 찾을 수 있습니다. 데이터파일에 I/O 를 할 수 없는 상황이 발생한 경우, ORA-01114, ORA-17510, ORA-01157 에러 등이 발생하게 되는데, 이때 에러가 발생한 파일 위치와 이름을 ORA-01110 에러에서 확인할 수 있습니다. 위의 경우처럼, 데이터파일 정보가 표시될 때, +DATA/.. 와 같이 경로가 플러스기호(+)로 시작되는 경우는 Oracle ASM 파일입니다. 참고) 오라클 Alertlog.. 더보기
(12cR1 신기능) 오라클 Lateral Inline View, 인라인뷰에서 조인시 ORA-00904 에러 방지 Oracle 12cR1 New Feature 중에 Lateral Inline View 가 있습니다. 골자는 SQL문에서 인라인뷰(Inline View) 사용시, 인라인뷰 내에서 메인쿼리의 테이블과 Join 할 수 있게 해주는 기능입니다. (인라인뷰는 SQL Query 에서 From 절에 테이블대신 SQL을 사용하는 것) 아래와 같이 인라인뷰 내에서 메인쿼리의 EMP 테이블을 참조해서 Join 을 시도하는 경우 ORA-00904 에러가 발생합니다. ORA-00904 에러는 테이블 또는 컬럼을 못 찾을때 발생하는 에러입니다. ( select * from DEPT d ... ) 인라인뷰 SQL 내에서는 e 테이블이 뭔지 알 수 없기 때문에 ORA-904 에러가 발생하고 있습니다. Oracle 12cR1 버전부.. 더보기
오라클 DML(Insert, Update, Delete) 빈도를 가늠할 수 있는 DBA_TAB_MODIFICATIONS (테이블 변경 내역) Oracle 딕셔너리중에 특정 테이블에 DML이 얼마나 빈번하게 이루어지고 있는지를 가늠할 수 있는 딕셔너리 뷰가 있습니다. 바로 DBA_TAB_MODIFICATIONS 입니다. USER_TAB_MODIFICATIONS Information regarding modifications to tables ALL_TAB_MODIFICATIONS Information regarding modifications to tables DBA_TAB_MODIFICATIONS Information regarding modifications to tables SQL> desc DBA_TAB_MODIFICATIONS Name Null? Type ---------------------------------------------.. 더보기
자바 에러 - Unsupported major.minor version (oracle/jdbc/driver:OracleDriver.class) 오라클 DB에 접속하는 Java 프로그램을 컴파일 하거나, 실행할 때 Unsupported majar.minor version 에러가 발생할 수 있습니다. $ javac jdbcTest_CNT.java warning: oracle/jdbc/driver/OracleDriver.class(oracle/jdbc/driver:OracleDriver.class): major version 51 is newer than 50, the highest major version supported by this compiler. It is recommended that the compiler be upgraded. 1 warning $ java jdbcTest_CNT Exception in thread "main" jav.. 더보기