[Oracle] Oracle Exadata란 무엇인가
·
Programming/Oracle
현재 프로젝트를 수행하고 있는 업체에서 DB 를 Exadata를 사용하고 있다고 한다. 처음에 Oracle Exadata를 사용한다기에 Oracle 과 어떤 차이가 있는지 잘 몰랐는데 알고 보니 곳곳에서 차이점이 꽤 있는 듯 하다. 잘 아는 것은 아니지만, 찾아보고 검색한 대로 내용을 정리해 보려고 한다. 1. Exa데이터는 무엇인가? 우선 데이터의 단위에 대해서 알면 Exadata에 대한 접근이 쉬울 듯 하다. Exa는 기가 - 테라 - 페타 다음의 데이터 기억 용량의 단위이다. 한마디로 매우 큰 데이터의 용량 단위라고 생각하면 된다. 시대가 발전하면서 데이터가 저장할 수 있는 크기가 점점 커졌지만, 그에 따라 데이터를 처리하는 시간 또한 늘어나고 데이터를 처리하는 것에 대해 오류가 발생할 확률 또한 ..
[Oracle] 오라클 append와 append_values 힌트, 사용방법
·
Programming/Oracle
현 프로젝트에서 대량의 데이터를 적재하기 위해 오라클에서 INSERT 문을 사용하여 데이터를 적재하고 있었다. 조금 오래걸리지만 데이터 용량이 커서 그러겠거니 하면서 평화롭게 적재를 하고 있던 도중, IT 현업이 내려와서 대용량 데이터를 압축도 안시키고 그냥 적재하고 있냐며 한바탕 쿠사리를 주길래... 당황 겸 혼나면서 찾아본 append 힌트 구문... 정확이 append 구문을 언제 사용하며, 사용하는 방법에 대해 적어보려 한다. 1. append 힌트를 사용하는 이유가 무엇인가? 이것저것 찾아보니 다른 곳에서도 통상적으로 대량의 데이터를 INSERT 시킬 때에 많이 사용하는 문구가 APPEND 힌트라고 한다. APPEND 힌트를 사용하면, 중간에 버퍼 캐시를 경유하지 않고 바로 데이터 블록을 쓸 수..
[Python/Oracle] cx_Oracle timeout 설정하기
·
Programming/Python
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)의 개념, 사용법 알아보기
·
Programming/Oracle
오라클의 힌트를 사용하는 것과 힌트를 사용하지 않는 것은 생각보다 꽤 큰 차이가 있다. 실제로 병렬처리 힌트 구문을 사용하고 차이를 확실히 느끼다 보니, 힌트구문을 더 알아보고 싶다는 생각을 하게 됐다. 그래서 오늘은 힌트절에 대한 개념과 사용 방법에 대해 알아보고자 한다. 1. 오라클 힌트(Oracle hint)란? 힌트는 SQL 튜닝을 하는데에 중요한 핵심 지시구문이다. 오라클은 자체적으로 최적의 실행 방법으로 작동시키는 옵티마이저(Optimizer)가 있는데, 간혹 옵티마이저가 실행하는 것보다, SQL 사용자가 직접 힌트 구문을 줌으로써 최적의 실행 구문을 선언하는 것이 더 나을 때가 있다. 사용자가 특정 SQL 문장에서 어떤 인덱스의 선택도가 높은지 알고 있다면, Optimizer에 의존한 실행 ..
[Oracle] 오라클 WITH절을 사용하여 임시테이블 만들기
·
Programming/Oracle
최근 오라클9i R2부터는 WITH절을 사용하여 가상테이블을 사용할 수 있도록 했다. 일전에는 임시테이블을 별도로 생성해서 만들거나, SELECT 문의 FROM 절에 반복되는 서브쿼리들을 생성하여 테이블을 불러오곤 했는데, 이제는 덕분에 가독성이 높아지게 된 것이다. 오늘은 가상테이블, 임시테이블을 생성하는 WITH절에 대해서 적어보려 한다. 1. WITH절이란? 오라클 내 WTIH절은 SQL 문장에서 오라클 공유메모리에 임시로 테이블을 생성하여 반복재사용이 가능하도록 하는 구문이다. 동일 테이블 접근을 최소화하고 메모리에 생성된 임시테이블에서 필요한 데이터를 메모리로 접근하기 때문에 성능이 향상될 수 있다. 2. WITH절의 사용방법 WITH절의 사용방법은 간단하다. WITH (TABLE 명) AS (..
[Oracle] SQL 병렬 힌트를 부여하여 쿼리 수행시간 단축하기
·
Programming/Oracle
SQL 쿼리를 작성하다 보면 작은 데이터 간단한 데이터 탐색에서는 크게 무리가 되지 않지만, 많은 관계형 디비 안에서 여러개의 데이터 테이블을 조인하고 그룹화하다보면 시간이 매우 오래걸릴 때가 있다. 그 이유는 해당 쿼리를 수행하는데 순차적으로 진행되기 때문이다. 이를 위해 오라클에서는 병렬 힌트를 부여해서 쿼리 수행 시 멀티로 데이터를 가져와 빠르게 응답을 받을 수 있다. 병렬 힌트의 장점은, 어플리케이션 쪽에서 소스를 수정하지 않아도 된다는 점이며, 주석 안에서 힌트를 주는 것이기 때문에 오타가 나도 쿼리가 수행되긴 한다. 그럼, 병렬 쿼리를 사용하는 방법에 대해 알아보도록 하자. 1. 병렬 쿼리 사용 방법 먼저 병렬 처리가 가능할 수 있도록 세션에 권한을 부여한다. SQL> ALTER SESSION..
[Python] HTTP web server log dataframe으로 불러오기 (with pandas)
·
Programming/Python
이번에 프로젝트를 진행하면서 웹 로그 서버의 raw level을 직접 보고 전처리할 기회를 접하게 되었다. 어쨌든 웹로그를 데이터프레임화 시켜서 분포를 보고 데이터 탐색을 진행해야하기 때문에 공통된 룰로 전처리를 하고 데이터프레임화를 시켜야 해서 검색하다보니 아래와 같은 링크를 발견했고, 이에 대해 번역을 해서 기록해두려고 한다. https://mmas.github.io/read-apache-access-log-pandas Read Apache HTTP server access log with Pandas In this post we'll see how to read our Apache HTTP server access log into a Pandas dataframe. First of all, we s..
[Notion] 노션 첫걸음 - 12.노션 워크스페이스 생성/삭제하기
·
생산성 & 자동화 툴/Notion
이번 포스팅은 사실 간단한 거지만, 나는 한참 걸려서 찾았던 거라.. 다른 사람들에게도 도움이 될까 싶어 남기는 포스팅이다. 노션은 워크스페이스 단위로 개별로 움직인다. 하나의 프로젝트 공간이라고 생각하면 쉬운데, 워크스페이스 공간 안에서 페이지를 생성하고 삭제한다. 이번에는 워크스페이스 자체를 생성하고 삭제하는 방법에 대해 알아보도록 하자. 1. 워크스페이스 생성하기 왼쪽의 내 워크스페이스 이름을 클릭하면 아래와 같이 워크스페이스 목록이 뜬다. 현재 나는 아래와 같이 두개의 워크스페이스를 가지고 있다. 두개의 워크스페이스는 서로의 페이지를 공유할 수 없다. 개별로 움직이는 셈이다. 이제는 여기서 워크스페이스를 새로 생성하는 것을 진행해보자. 아래와 같이 워크스페이스 목록의 오른쪽 상단에 점 세개(더 보..