본문 바로가기

oracle

오라클 Exadata에 Intel Optane Persistent 메모리(DCPMM)를 사용한 X8M-2 출시 Oracle 에서 매년 글로벌하게 치뤄지는 행사인 OOW(Oracle Open World)에서 이번에 Exadata의 새로운 모델인 Exadata X8M-2 를 발표했네요. Oracle Exadata 는 Disk I/O를 획기적으로 개선하여 Oracle Database 를 매우 빠르게 돌아가도록 설계한 DB전용장비입니다. 이 빠르게 하는 기술내부에는 여러가지 아이디어들이 복합적으로 있긴 합니다만... 그중에서 Flash Disk(Card)를 캐시로 쓰는 부분도 들어있습니다. Flash Disk/Card 는 우리가 집에 있는 데스크탑PC에서도 사용하는 SSD 디스크와 같은 것이죠~ 물론, SSD도 종류가 여러가지가 있어서... 우리집에 있는 것보다는 좋은 것을 썼겠지만~ ㅎㅎ 그런데, 이 캐시부분이 하나더.. 더보기
오라클 병렬처리(Parallel Processing)관련 주의 사항 (degree) Oracle DB에서 user_tables, user_indexes 딕셔너리를 조회해보면 degree, instances 라는 컬럼이 있습니다. 이 컬럼들은 병렬처리를 자동으로 해주는 용도로 사용되는 컬럼입니다. degree 컬럼값이 8인 테이블이 있으면 이 테이블을 Full Scan 하는 경우 자동으로 Parallel 8 로 처리한 효과를 줍니다. instances 는 RAC 의 경우에 여러 노드에서 병렬처리를 할 수 있도록 해주는 역할을 하는 것이구요. DW 시스템 같은 곳에서는 유용할 수도 있으나, OLTP 환경에서는 주의해야 하는 부분이죠~ OLTP 에서 시도 때도 없이 병렬처리를 지맘대로 했다가는 장애 나기 십상입니다. 그래서 table 이나 index 에 degree, instances 값이 .. 더보기
오라클 db_recovery_file_dest_size 와 여유공간(free) 체크 Oracle 10g DB부터 db_recovery_file_dest, db_recovery_file_dest_size 라는 파라메타가 나와서 많이 당황스러운 경우가 있습니다. 기존에는 archive log 파일이 log_archive_dest 또는 log_archive_dest_1 위치에 생겼고, 이 디렉토리가 위치하고 있는 파일 시스템 전체가 Full 나지 않는 이상은 문제가 없었습니다. 하지만, db_recovery_file_dest_size 라는 값이 생겨서 이 지정된 size 만큼 차버리면 해당 파일시스템이 여유공간이 있던 말던 에러가 나버립니다. 따라서, db_recovery_file_dest 공간을 얼마나 쓰고 있는지 모니터링을 해줄 필요가 있습니다. 이 공간을 모니터링 하는 방법은 v$rec.. 더보기
오라클 DB Startup 에러 ORA-03113, ORA-19815, ORA-19809, ORA-19804, db_recovery_file_dest_size Oracle DB를 기동하다가 갑자기 안되는 경우가 있습니다. 평소에는 잘 기동되었던 DB인데... 이게 뭔일?? startup 하면 mount 까지는 잘 되었는데, open 하면서 ORA-03113 에러가 발생했습니다. 이런 경우는 alertlog 를 확인해 봐야 겠죠? alert log 에는 에러가 훨씬 많고 자세하네요. ORA-19815, ORA-19809, ORA-19804 ... db_recovery_file_dest_size 어쩌고 저쩌고 나옵니다. recovery_file 은 archive log 를 말합니다. archive log 가 쌓이는 공간이 Full 이 났다는 얘기입니다. DB가 Startup 되기전에 db_recovery_file_dest 에 뭔가를 더 Writing 해야 하는데,.. 더보기
오라클 병렬처리(Parallel Processing) 개념 및 용어 정리, 종합페이지 Oracle DB 에서 SQL문을 만들면서 빠르게 실행하기 위해서 우리는 튜닝(Tuning)을 합니다. SQL튜닝을 하다하다 마지막으로 시도하는 것이 "병렬처리(Parallel Processing)" 입니다. 마지막으로 시도하는 이유는 이게 시스템 자원을 많이 쓰기 때문입니다. 1개의 SQL문을 처리하기 위해 1개의 프로세스를 띄워서 일해야 하는데, 빨리 실행하기 위해 8개, 16개, 50개, 100개의 프로세스를 병렬로 동시에 띄워서 내 SQL을 처리합니다. 당연히 빠르겠죠~ ㅎㅎ 하지만, 이렇게 병렬로 실행하도록 만들어 놓은 SQL을 한꺼번에 여러명이 동시에 실행해버리면??? 다이~ 죽을 수 있습니다. DB가.. 시스템이 뻗을 수 있습니다. ㅋㅋ 당연히 병렬처리 기술을 사용할 때는 SQL이 동시에 많.. 더보기
병렬처리, Parallel Join 에서 /*+ pq_distribute(,,) */ 힌트 /*+ pq_distribute */ 힌트는 오라클DB에서 Parallel Join 시에 사용할 수 있는 힌트입니다. 두 테이블 이상 조인하는 SQL문에서 /*+ parallel(8) */ 힌트를 주게되면 병렬프로세스간에 조인이 발생합니다. 이때 조인하는 방식이 여러가지가 있습니다. 한쪽 테이블의 데이터를 모든 병렬서버들에게 전달하는 브로드캐스트(broadcast) 방식, 양쪽 테이블 데이터에 해시함수를 적용해서 해시값을 구한후 이것들을 가지고 조인하는 방식, 조인되는 테이블이 파티션 되어있는 경우 파티션 Wise Join 을 하는 방식. 이런식으로 옵티마이저(Optimizer)가 여건에 따라 선택할 수 있는 몇가지 조인옵션이 있습니다. 물론 위 중에서 어떤 것을 선택할지는 옵티마이저가 알아서 판단해서 .. 더보기
오라클 EM 13c(13.1) Tuning Advisor(튜닝 권고자) 사용 예제, 방법 Oracle DB에서 Tuning Advisor 를 사용하기 위해서 EM Tuning Pack 구매가 필요합니다. (유료 옵션) EM UI 화면에서 대상 DB (Target DB) 를 선택해서 들어가면 아래와 같은 메뉴 구성을 볼 수가 있습니다. 아래는 orcl 이라는 데이터베이스에 접속한 경우입니다. 상단 [성능] 메뉴에서 [최상위 작업] 을 선택합니다. 영어 UI 환경에서는 [Performance] - [Top SQL] 입니다. 아래와 같이 DB의 Wait 종류에 따라 그래픽컬하게 상태를 볼 수 있는 화면이 나옵니다. 차트의 "회색 사각형" 부분을 마우스로 드래그해서 좌우로 움직이면 해당 시간대에 실행되었던 SQL 들을 아래에 표시해줍니다. 아래 "최상위 SQL" 에서 튜닝할 상위 SQL들을 몇개 선.. 더보기
오라클 Parallel DML 처리 방법 및 주의 사항 - enable parallel dml Oracle DB 에서 병렬처리 작업시 /*+ parallel(...) */ 힌트를 사용합니다. 조회 Query SQL 이나 Insert/Update/Delete/Merge 같은 DML SQL 이나 Parallel 힌트 주는 것은 똑같습니다. 근데, Parallel DML 의 경우 깜빡하는 부분이 alter session 을 해주는 부분입니다. Insert/Update/Delete/Merge 같은 DML SQL 을 병렬처리 하고자 하는 경우에는 반드시 alter session parallel dml enable; 을 해줘야 병렬로 동작합니다. 12c DB 부터는 이걸 힌트에 삽입할 수 있는 방법이 생겼습니다. /*+ enable_parallel_dml */ 과 같이 해주면 alter session 을 한.. 더보기