본문 바로가기

oracle

오라클 Big Data SQL 로 Oracle DB 내에서 하둡내의 빅데이터 쉽게 접근하는 샘플 일반적으로 "빅데이터"라고 하면 데이터량이 너무 커서 DB내의 테이블에 넣고 다룰 수 없는 경우를 보통 말합니다. 데이터량이 너무 크기 때문에 데이터를 여러 노드에 분산 저장할 수 있는 능력이 있는 HDFS(Hadoop File System)에 데이터를 저장합니다. 그런데, 이 HDFS 에 저장된 데이터를 컨트롤 하려면 맵리듀스(Map-Reduce)와 같은 프로그램을 만들어야 하기 때문에 데이터를 다루기가 쉽지 않습니다. DB내에 있는 테이블의 경우에는 사용자가 SQL을 통해 필요할때마다 쉽게 쿼리가 가능하지만, 빅데이터의 경우에는 매번 맵리듀스 프로그램을 사용자가 만들 수 없기 때문에 불편하죠~ 이를 개선하기 위해서 나온게 Hive, Spark 같은 것들입니다. 그런데, Oracle DB 를 사용하는 .. 더보기
오라클 에러메시지 영어로 한글로 표시방식 변경하는 방법 (NLS_LANG) Oracle SQL*Plus 등에서 SQL문을 실행할 때 나오는 에러 메세지가 어떤 시스템에서는 한글로 나올때가 있고, 어떤 시스템에서는 영어로 메시지가 나오는 경우가 있습니다. 에러 메시지 내용을 파악하기에는 한글로 메시지를 보는 것이 우리에게 편하긴 하지만, 가끔 해당 에러메시지로 구글링해서 관련 정보를 찾아보고자 할때는 영문메시지가 훨씬 유리합니다. 구글에서 한글로 검색했을때보다 영어로 검색했을때 훨씬 많은 정보가 나오기 때문입니다. 그럼, 어떤 경우에 오라클 에러메시지가 영어로 나오고, 어떤 경우에 한글로 나올까요? 이건 오라클 환경변수 NLS_LANG 와 관계있습니다. DB서버에 할당된 NLS_LANG 정보는 위와같이 "env | grep NLS" 커맨드로 확인할 수 있습니다. NLS_LANG .. 더보기
v$datafile 에서 unrecoverable_time 컬럼 - Nologging 작업으로인한 복구 불가 문제 v$datafile 딕셔너리 뷰를 조회하다보면, 아래와 같이 unrecoverable_time, unrecoverable_change# 라는 컬럼에 값이 나오는 경우가 있습니다. 복구를 할 수가 없다는 말인데... 쫌 살벌한 말이네요~~ 이런 현상이 생기는 이유는 nologging 작업이 수행되었기 때문입니다. nologging 작업이란 대량의 DML SQL 작업을 할때 Redo Log (Archive Log) 양을 줄이고 속도를 빠르게 하기위해서 Log를 쌓지않도록 하는 것을 말합니다. Log를 쌓지 않고 작업하기 때문에 작업 자체를 빨리 끝낼 수 있지만, 복구할때 문제가 됩니다. 복구하는 과정을 보면, 먼저 RMAN 백업이나 Hot Backup 받은 파일에서 데이터파일을 복구하고 Archive Log.. 더보기
오라클 Archive Log Full 처리 방법 - 아카이브로그 공간부족 에러 해결 Oracle DBMS 를 운영하는 DBA 들에게 Archive Log 관리는 매우 중요합니다. 이 Archive Log 파일 한개라도 날려먹으면 백업복구가 딱 그 날려먹은 파일전까지만 복구할 수 있어서 장애시 최신상태로 복구가 안되죠~ 정말 중요합니다. Archive Log 때문에 DBA 들이 고생하는 진짜 이유는 Archive Log Full 로 DB가 Hang 걸리는 경우입니다. 거의 모든 DBA 들이 적어도 한번 이상은 다들 경험이 있습니다. 아카이브로그는 DML 작업이 많으면 많이 발생합니다. 그래서 대량 배치작업, ETL 작업 등을 하는 경우에는 반드시 이 Archive Log 디렉토리가 Full 차는지 수시로 체크해야 합니다. 이미 Full 차서 DB가 서버린 경우에는 Archive Log 를.. 더보기
오라클 리스너 TNS Easy Connect - SQL*Net 을 통한 DB접속 방법 원격지에 있는 Oracle DBMS 에 접속하는 방법은 전통적으로 클라이언트에 tnsname 을 세팅해서 DB 서버의 리스너에 접속하는 SQL*Net 방식을 이용해왔습니다. 그런데, 10g 부터는 Easy Connect 라는 방법이 추가되어 SQL*Net 접속이 매우 쉬워졌습니다. 기존 방식은 아래와 같이 클라이언트쪽에 tnsnames.ora 파일을 세팅하고, 이것을 이용해서 접속하는 것입니다. (물론 클라이언트쪽에서는 SQL*Net Client 모듈이 설치되어 있어야 합니다. 보통 Oracle DB S/W를 설치하면 됩니다) $ cat tnsnames.ora ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.193)(PORT = 15.. 더보기
Oracle 무료 DB관리툴 SQL Developer - DB 접속 방법 (SSH 터널링 Connection 세팅) Oracle 에서 제공하는 무료 데이터베이스 관리툴인 SQL Developer 에서 Oracle DB에 접속하는 기본적인 방법은 지난번에 소개해드렸습니다. 이번에는 좀 특수한 상황으로 SSH 터널링(Tunneling)을 통한 DB 접속방법을 소개해드리겠습니다. 방화벽이나 보안정책상 Oracle Listener Port 인 1521 이 막혀있는 경우가 있습니다. 오로지 22번 ssh 포트만 열려있는 경우, 이 열려있는 ssh 포트를 통해서 DB서버의 1521 포트로 접속할 수 있도록 해주는 것입니다. 이렇게 다른 열려있는 포트로 우회해서 통신하는 경우를 터널링이라고 합니다. 이게 SQL Developer 에서도 지원됩니다. 방화벽 등으로 1521 포트가 막혀있는 경우, 아래와 같이 접속에러가 발생합니다. .. 더보기
오라클DB 무료 성능측정툴 SwingBench (스윙벤치) - 데이터 생성 지난번에는 Swingbench 에 대한 기본적인 소개 및 다운로드, 실행방법에 대해서 살펴봤습니다. 이번에는 Swingbench 로 테스트하기 위해 DB서버에 필요한 DB계정을 만들고, 데이터를 생성하는 과정을 살펴보겠습니다. 윈도우즈에서 실행하는 경우에는 ../swingbench/winbin 디렉토리밑에 있는 "oewizard 2.bat" 파일을 실행합니다. 리눅스에서 실행하는 경우에는 ../swingbench/bin 디렉토리밑에 있는 "oewizard" 파일을 실행합니다. ** 리눅스의 경우에는 X Window 실행환경이 되어야 합니다. 당연히 GUI 형태의 창이 떠야하니까 터미널에서 커맨드로실행하는 것은 안됩니다. ** 윈도우즈의 경우에는 간혹 32-bit Java 문제로 에러가 나는 경우가 있습니.. 더보기
오라클DB 무료 성능측정툴 SwingBench (스윙벤치) - tpmc 벤치마크 테스트 Oracle DBMS 에서 사용할 수 있는 tpmc 벤치마크 테스트툴로 Swingbench를 사용할 수 있습니다. 정확한 tpmC 벤치마크의 TPC-C 와 비슷하게 만들어진 툴입니다. 하지만 비슷하게 만들어진 것일뿐, 이게 진짜 TPC 벤치마크를 대신할 수는 없습니다. TPC는 정확히 www.tpc.org 에서 정식으로 시험을 봐서 공식으로 인정해주는 값이지 이렇게 개인이 만든 무료툴로 야매로 측정하는 값이 아니기 때문이죠^^ 어쨌든 비스무리한 값을 구할 수 있기 때문에 아래와 같은 용도에 사용합니다. 1) 보유하고 있는 Oracle DB서버들의 성능을 서로 비교하고 싶은 경우 2) 특정한 테스트를 위해 임의의 SQL 부하를 만들려고 하는 경우 Swingbench 에서는 가상의 동시사용자를 만들어서 SQ.. 더보기