본문 바로가기

IT관련

오라클 In-memory (인메모리) 기능 소개 (Oracle을 메모리DB로 만들어주는) Oracle In-memory 기능은 12c 버전부터 제공되는 Oracle의 유료옵션입니다. 메모리(RAM)에 테이블 또는 파티션을 올려놓음으로써 Disk I/O 시간을 제거하여 성능을 크게 개선하고자 하는 기능입니다. 그럼, 과거에는 Oracle DBMS 가 메모리를 사용하지 않았냐? 그것은 아니고, Buffer Cache 라는 메모리공간에 테이블의 블록들을 올려놓고(캐싱해서) 사용해왔었습니다. 다만, 기존 버퍼캐시에는 테이블/파티션을 통째로 올려놓았던 것이 아니고 일부 블록들만 올려놓았었고, Row Format 으로 되어있는 Disk 에 있는 블록을 그대로 메모리에 로딩해서 캐싱하는 형태였습니다. 하지만, In-Memory 기능에서는 테이블/파티션을 통째로 올려놓고, Row Format 이 아닌 Co.. 더보기
오라클 Real-Time SQL Monitoring (실시간 Plan, Trace 툴) 19c 기능개선 부분 예전에 실시간으로 SQL Plan(실행계획)을 확인할 수 있는 Real-Time SQL Monitoring 기능에 대해서 포스팅한 적이 있습니다. 이 기능을 사용하기 위해서는 여러가지 권한이 필요했었는데, Oracle 19c DBMS 부터는 별도의 권한이 없이도 자기 세션에 대해서는 이 기능을 사용할 수 있습니다. SQL> set long 1000000 set longchunksize 1000000 set linesize 1000 select DBMS_SQLTUNE.report_sql_monitor(type=>'TEXT' , report_level => 'ALL') from dual; report_sql_monitor() 함수를 호출할때, sql_id 값을 지정하지 않았습니다. 이것은 현재 실행중인(다른.. 더보기
오라클 병렬처리 Union All 성능향상 (PQ_CONCURRENT_UNION) - Oracle 12c 신기능 Oracle 12c 신기능 중에 Union 또는 Union All SQL의 성능을 개선한 부분이 있습니다. 원래 Union 이나 Union All 구문의 처리는 Union 으로 묶여있는 각각의 SQL을 1개씩 Serial 하게 처리합니다. 이게 Oracle 12.1 버전부터는 동시에 처리되도록 바뀌었습니다. 단, 병렬처리의 경우에 한정입니다. 이전버전에서는 PQ_CONCURRENT_UNION 이라는 힌트를 별도로 주어서 이런 기능이 구현되었었는데, 12c 부터는 자동으로 Default 적용됩니다. 왼쪽은 optimizer_features_enable 파라메타를 조정해서 11g 환경으로 세팅한 것이고, 오른쪽은 19c 환경입니다. 똑같은 Union all SQL문을 양쪽에서 실행했는데, 왼쪽(11g)은 1.. 더보기
오라클 병렬처리 Plan 개선 (PX SELECTOR) - Oracle 12c 신기능 Oracle 12.1 버전부터 병렬처리 실행계획(Plan) 상에 PX SELECTOR 라는 것이 추가되었습니다. QC(Query Coordinator)가 하던 역할을 일부 떼어서 Parallel Process 가 하도록 바꾼 것인데, 이렇게 바꾸면서 불필요하게 Buffer Sort 하던 작업을 없애버려 결과적으로는 약간의 성능이 개선되는 효과를 가져왔습니다. 아래에서 확인할 수 있는데, 왼쪽은 optimizer_features_enable 파라메타를 조정해서 11g 환경으로 세팅한 것이고, 오른쪽은 19c 환경입니다. 아래 SQL문을 11g 환경에서 실행했을때는 0.67초가 걸렸고, 19c 환경에서는 0.45초가 걸렸습니다. select /*+ monitor ordered parallel(a 4) */ .. 더보기
오라클 에러 정보 (ORA-27104) - system-defined limits for shared memory was misconfigured Oracle DB 서버의 메모리를 늘려주고(8GB -> 16GB), sga_max_size, sga_target 파라메타값을 늘려준 후, DB를 재기동 하는데 Startup 이 안되는 경우가 있습니다. ORA-27104 에러가 발생하면서 shared memory 가 잘못 설정되어 있다고 메시지를 뱉어냅니다. ORA-27104: system-defined limits for shared memory was misconfigured 이것은 OS Kernel Parameter 에 설정된 shm... 값이 잘못 설정되어 발생하는 것입니다. Oracle Database 설치 가이드에는 아래와 같이 shmall 값이 2097152 으로 되어 있는데, 이것은 8GB 를 기준으로 맞춰신 샘플이고, 메모리가 커지면 이 .. 더보기
오라클 Foreign Key 구조(관계) 파악 가능한 프로그램 (FKManager) Oracle DBMS 는 관계형 DBMS (Relational DBMS) 입니다. 관계는 테이블간의 FK (Foreign Key)를 통해서 구현됩니다. 데이터베이스내에 구현되어 있는 FK 관계를 쉽게 파악할 수 있도록 프로그램을 만들어봤습니다. 접속하는 DB 계정내에 있는 모든 테이블들을 리스트업하고, 그 테이블들을 기준으로 부모-자식(Parent-Child) 관계를 쫒아가면서 정보를 리스트업 해줍니다. * 프로그램 다운로드 - v1.0 > 윈도우즈용 > 리눅스용 * 설치/실행방법 : - 별도의 Install 이나 setup 과정은 없습니다. 윈도우즈에서는 exe 파일을 바로 실행하면 됩니다. - 리눅스의 경우는 아래 "리눅스에서 jar 파일 실행하는 방법"을 참고하면 됩니다. - 이 블로그를 통해서 다.. 더보기
SQL Developer Data Modeler 이용한 리버스 엔지니어링 방법 (DB에서 ERD 생성) 오라클 DB내에 이미 구현되어 있는 테이블들간의 복잡한 관계를 Reverse Engineering 해서 ERD 로 볼 수 있는 방법을 소개합니다. 테이블간의 FK (Foreign Key) 관계가 복잡하게 설계되어 있는 경우 ERD 와 같은 다이어그램으로 보면 훨씬 이해하기 쉽습니다. 보통의 ERD를 그리는 툴들은 대개 이런 Reverse Engineering 기능을 가지고 있습니다. 이런 툴이 없는 경우, 유용하게 사용할 수 있는것이 SQL Developer Data Modeler 입니다. 다운로드는 여기에서 합니다. https://www.oracle.com/database/sqldeveloper/technologies/sql-data-modeler/download/ Oracle eDelivery Sit.. 더보기
오라클 Alertlog 로그파일 cat/tail 커맨드시 칼라 나오게 입히는 스크립트 (color.sh) Oracle Database Log 파일인 alertSID.log 파일을 볼때마다 눈깔빠지는 경험을 자주 하게 되어, 좀더 편하게 볼수는 없을까 하는 고민을 하게 되었습니다. 리눅스 환경에서 Text 출력할때 Colorful 하게 보는 방법을 찾게되어 좀 만들어봤습니다. 왼쪽은 그냥 cat 명령어로 로그파일을 조회했을때이고, 오른쪽은 color.sh 스크립트를 적용했을때 입니다. 오라클 데이터베이스에서 Error 는 모두 "ORA-" 키워드가 붙어서 나오는데 이것을 붉은색 배경글씨로 강조해서 보여주도록 만들어봤습니다. 그냥 단조로운 색으로 보는 것보다는 가독성이 엄청 좋아집니다. tail -f 커맨드도 잘 동작합니다. * 쉘스크립트 파일 다운로드 - v1.0 * 사용방법 : - Shell Script 파.. 더보기