전체 글
[Oracle] Oracle Exadata의 압축방식 (Exadata Hybrid columnar Compression, EHCC)
오늘은 Oracle Exadata의 압축방식과 데이터를 활용하는 방법에 대해서 알아보려고 한다. 1. Oracle 압축방식 Oracle은 데이터 압축을 통해서 저장 공간을 절약할 뿐만이 아니라 I/O의 비용을 최소화할 수 있다. 기존 오라클 압축에서는 BASIC 압축, OLTP 압축 방식이 있었는데 Exadata에서는 Exadata Hybrid Columnar Compression(EHCC, 또는 HCC)라고 하는 새로운 압축 기법을 제공하고 있다. Basic 압축과 OLTP 압축은 데이터를 블록 레벨로 압축하는 방식이다. 반면에 EHCC는 Compression Unit이라는 논리적인 압축 단위로 압축을 한다. 2. EHCC란 무엇인가? 기본적으로 테이블에는 여러개의 튜플(로우)와 여러개의 어트리뷰트(컬..
[Oracle] Oracle Exadata란 무엇인가
현재 프로젝트를 수행하고 있는 업체에서 DB 를 Exadata를 사용하고 있다고 한다. 처음에 Oracle Exadata를 사용한다기에 Oracle 과 어떤 차이가 있는지 잘 몰랐는데 알고 보니 곳곳에서 차이점이 꽤 있는 듯 하다. 잘 아는 것은 아니지만, 찾아보고 검색한 대로 내용을 정리해 보려고 한다. 1. Exa데이터는 무엇인가? 우선 데이터의 단위에 대해서 알면 Exadata에 대한 접근이 쉬울 듯 하다. Exa는 기가 - 테라 - 페타 다음의 데이터 기억 용량의 단위이다. 한마디로 매우 큰 데이터의 용량 단위라고 생각하면 된다. 시대가 발전하면서 데이터가 저장할 수 있는 크기가 점점 커졌지만, 그에 따라 데이터를 처리하는 시간 또한 늘어나고 데이터를 처리하는 것에 대해 오류가 발생할 확률 또한 ..
[Oracle] 오라클 append와 append_values 힌트, 사용방법
현 프로젝트에서 대량의 데이터를 적재하기 위해 오라클에서 INSERT 문을 사용하여 데이터를 적재하고 있었다. 조금 오래걸리지만 데이터 용량이 커서 그러겠거니 하면서 평화롭게 적재를 하고 있던 도중, IT 현업이 내려와서 대용량 데이터를 압축도 안시키고 그냥 적재하고 있냐며 한바탕 쿠사리를 주길래... 당황 겸 혼나면서 찾아본 append 힌트 구문... 정확이 append 구문을 언제 사용하며, 사용하는 방법에 대해 적어보려 한다. 1. append 힌트를 사용하는 이유가 무엇인가? 이것저것 찾아보니 다른 곳에서도 통상적으로 대량의 데이터를 INSERT 시킬 때에 많이 사용하는 문구가 APPEND 힌트라고 한다. APPEND 힌트를 사용하면, 중간에 버퍼 캐시를 경유하지 않고 바로 데이터 블록을 쓸 수..
[Python/Oracle] cx_Oracle timeout 설정하기
Python 에서 DB 연결을 해서 Oracle에 접속하게 하는 패키지 cx_Oracle. 작은 데이터를 불러오는데는 크게 문제가 안되지만, 대용량 데이터를 불러올 때에는 오래 걸리는 시간 탓에 간혹 타임아웃 에러가 나고는 한다. 이유는 python 안에서 주어진 시간 안에 oracle 이 구동되어야 하는데 그 시간을 넘을 때 나는 애러이다. 그럴 때에는 timeout 시간을 설정하여 늘릴 수 있다. 1. 타임아웃 에러문 타임아웃 에러가 나는 문장은 대게 아래와 같다 DB Error : DPI-1080 : connection was closed by ORA-3156 Traceback (most recent call last): ~~~ cx_Oracle.DatabaseError: DPI-1010:not c..
[Oracle] 오라클 힌트(hint)의 개념, 사용법 알아보기
오라클의 힌트를 사용하는 것과 힌트를 사용하지 않는 것은 생각보다 꽤 큰 차이가 있다. 실제로 병렬처리 힌트 구문을 사용하고 차이를 확실히 느끼다 보니, 힌트구문을 더 알아보고 싶다는 생각을 하게 됐다. 그래서 오늘은 힌트절에 대한 개념과 사용 방법에 대해 알아보고자 한다. 1. 오라클 힌트(Oracle hint)란? 힌트는 SQL 튜닝을 하는데에 중요한 핵심 지시구문이다. 오라클은 자체적으로 최적의 실행 방법으로 작동시키는 옵티마이저(Optimizer)가 있는데, 간혹 옵티마이저가 실행하는 것보다, SQL 사용자가 직접 힌트 구문을 줌으로써 최적의 실행 구문을 선언하는 것이 더 나을 때가 있다. 사용자가 특정 SQL 문장에서 어떤 인덱스의 선택도가 높은지 알고 있다면, Optimizer에 의존한 실행 ..