본문 바로가기

oracle

오라클 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) */ .. 더보기
오라클 Foreign Key 구조(관계) 파악 가능한 프로그램 (FKManager) Oracle DBMS 는 관계형 DBMS (Relational DBMS) 입니다. 관계는 테이블간의 FK (Foreign Key)를 통해서 구현됩니다. 데이터베이스내에 구현되어 있는 FK 관계를 쉽게 파악할 수 있도록 프로그램을 만들어봤습니다. 접속하는 DB 계정내에 있는 모든 테이블들을 리스트업하고, 그 테이블들을 기준으로 부모-자식(Parent-Child) 관계를 쫒아가면서 정보를 리스트업 해줍니다. * 프로그램 다운로드 - v1.0 > 윈도우즈용 > 리눅스용 * 설치/실행방법 : - 별도의 Install 이나 setup 과정은 없습니다. 윈도우즈에서는 exe 파일을 바로 실행하면 됩니다. - 리눅스의 경우는 아래 "리눅스에서 jar 파일 실행하는 방법"을 참고하면 됩니다. - 이 블로그를 통해서 다.. 더보기
오라클 Alertlog 로그파일 cat/tail 커맨드시 칼라 나오게 입히는 스크립트 (color.sh) Oracle Database Log 파일인 alertSID.log 파일을 볼때마다 눈깔빠지는 경험을 자주 하게 되어, 좀더 편하게 볼수는 없을까 하는 고민을 하게 되었습니다. 리눅스 환경에서 Text 출력할때 Colorful 하게 보는 방법을 찾게되어 좀 만들어봤습니다. 왼쪽은 그냥 cat 명령어로 로그파일을 조회했을때이고, 오른쪽은 color.sh 스크립트를 적용했을때 입니다. 오라클 데이터베이스에서 Error 는 모두 "ORA-" 키워드가 붙어서 나오는데 이것을 붉은색 배경글씨로 강조해서 보여주도록 만들어봤습니다. 그냥 단조로운 색으로 보는 것보다는 가독성이 엄청 좋아집니다. tail -f 커맨드도 잘 동작합니다. * 쉘스크립트 파일 다운로드 - v1.0 * 사용방법 : - Shell Script 파.. 더보기
오라클 Parallel DML 주의 사항 (ORA-12838 : cannot read/modify) 병렬 DML 작업 후에 갑자기 select 가 에러나는 황당한 경험을 하게 되는 경우가 있습니다. 보통 Oracle 에서는 어떤 DML 도 조회(Select)에는 영향을 주지않는다는 확신을 가지고 있는 사람들이 많은데, Parallel DML 은 예외입니다. Parallel DML 후에 commit 이나 rollback 을 해주지 않으면 아래와 같이 ORA-12838 에러를 만나게 됩니다. 조회(Select) 만 저렇게 에러가 나는게 아니라, 해당 Table 에 TM Lock 을 걸어버리기 때문에 다른 DML 도 안됩니다. $ oerr ora 12838 12838, 00000, "cannot read/modify an object after modifying it in parallel" // *Cause.. 더보기
Oracle Alert Log, Trace 파일 볼때 컬러풀하게 색깔넣어서 보는 방법 (vim 세팅) 오라클 DB에 무슨 문제가 생겼을때, DBA들이 가장 먼저 보는 파일이 alert_.log 파일입니다. 리눅스의 vi 툴을 이용해서 alert log 파일을 한참 보다보면 눈깔 빠지는 경험을 하게되죠~ 위와같이 단조로운 색깔로만 보이는 화면에서 에러 문구 찾으려면 대단한 인내와 집중이 필요합니다. 하지만 아래처럼 컬러풀하게 보인다면 에러문구 찾기가 훨씬 수월해질 겁니다. 요렇게 세팅하는게 그닥 번거롭지 않습니다. 우리가 사용하는 vi 는 vim 을 사용합니다. alias vi='vim' 요렇게 세팅되어 있습니다. 먼저 vim 홈디렉토리로 가야합니다. (root 유저에서 작업해야 합니다) vim 홈디렉토리는 보통 /usr/share/vim 입니다. 여기에 가보면, vim74 또는 vim80 과 같은 디렉토.. 더보기
Oracle 11g DB에서 12c, 19c 로 업그레이드 할때 wm_concat 함수 listagg 로 변경 필요 오라클 데이터베이스 10g, 11g 버전을 사용하다가 Oracle 12c 또는 18c, 19c 등으로 업그레이드를 하는 경우 주의해야 할 부분 중의 하나가 wm_concat 함수 입니다. wm_concat 함수는 아래와 같은 데이터가 있을때, 이것을 deptno 를 기준으로 같은 것을 묶어서 옆으로 쭉 나열하고 싶을때 사용합니다. 근데, 이 쌈빡한 함수 wm_concat( ) 이 사실은 오라클에서 공식으로 발표한 Documented 함수가 아닙니다. 내부 Internal 함수인데, 어떻게 알려지면서 많이 사용하게 되었다고 하네요~ 실제로 Oracle 공식매뉴얼에는 없습니다. Oracle 10g 에서 11g 로 올라갈때도 이와 비슷한 경우가 있었습니다. "bypass_ujvc" 라는 힌트였는데, 이것도 비.. 더보기