Oracle 통계정보 백업, 복구(export/import)


1. 통계정보 백업테이블 DROP
EXEC DBMS_STATS.DROP_STAT_TABLE('EMP','STATS'); 

2. 통계정보 백업테이블 CREATE
EXEC DBMS_STATS.CREATE_STAT_TABLE('EMP','STATS'); 

-- 테이블 조회
SELECT * FROM STATS;

3. 통계정보 백업(해당유저의 모든 테이블과 인덱스)
EXEC DBMS_STATS.EXPORT_SCHEMA_STATS(OWNNAME=>'EMP',STATTAB=>'STATS'); 

4. 통계정보 백업(해당유저의 테이블)
--- TABLE
EXEC DBMS_STATS.IMPORT_TABLE_STATS(OWNNAME=>'SCOTT', TABNAME=>'테이블명', STATTAB=>'STATS', CASCADE=>TRUE); 

-- INDEX
EXEC DBMS_STATS.IMPORT_INDEX_STATS(OWNNAME=>'SCOTT', TABNAME=>'테이블명', STATTAB=>'STATS', CASCADE=>TRUE); 

5. 통계정보 백업 테이블을 다시 원복
EXEC DBMS_STATS.IMPORT_SCHEMA_STATS(OWNNAME=>'SCOTT', STATTAB=>'STATS');

6. 통계정보삭제
EXEC DBMS_STATS.DELETE_TABLE_STATS(OWNNAME=>'SCOTT', TABNAME=>'EMP_TABLE_STATS');
EXEC DBMS_STATS.DELETE_INDEX_STATS(OWNNAME=>'SCOTT', INDNAME=>'IDX_EMP_STATS');

7. 통계정보강제로 셋팅
EXEC DBMS_STATS.SET_COLUMN_STATS(OWNNAME => 'SCOTT', TABNAME => 'EMP', COLNAME => 'EMPNO'
, DISTCNT => 1
, DENSITY => 0.1
, NULLCNT => 1024252
, AVGCLEN => 1
);
 
EXEC DBMS_STATS.SET_INDEX_STATS(OWNNAME => 'SCOTT', INDNAME => 'IDX_EMP_PK'
, NUMROWS  => 100000
, NUMLBLKS => 100
, NUMDIST  => 100000
, CLSTFCT  => 200
, INDLEVEL => 2
);

 

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

Oracle 통계정보 추출 스크립트


 
SELECT 
        A.OWNER,A.TABLE_NAME,B.MB, NVL(C.PAR_YN,'N') PAR_YN ,O.CREATED, A.LAST_ANALYZED, 
        'EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => ''' || A.OWNER || '''

        , TABNAME => ''' || A.TABLE_NAME || ''', CASCADE => FALSE, ESTIMATE_PERCENT =>''' || 
        CASE 
             WHEN B.MB < 1000 THEN 100 
             WHEN B.MB < 5000 THEN 50 
             WHEN B.MB < 20000 THEN 25 
         ELSE 5 
        END || ''', DEGREE => ''' || 
        CASE 
             WHEN B.MB < 500 THEN 4 
             WHEN B.MB < 5000 THEN 8 
             WHEN B.MB < 10000 THEN 12 
             WHEN B.MB < 20000 THEN 24 
         ELSE 30 
         END || CASE 
                     WHEN  PAR_YN = 'Y' THEN  ''', GRANULARITY => ''GLOBAL''

                               ,METHOD_OPT=>''FOR ALL COLUMNS SIZE 1'',NO_INVALIDATE=>false);' 
                     ELSE  ''',METHOD_OPT=>''FOR ALL COLUMNS SIZE 1'',NO_INVALIDATE=>false);' 
                END AS  STAT_GET_DDL 
FROM    ( SELECT 
                   OWNER 
                 , TABLE_NAME 
                 , LAST_ANALYZED 
           FROM    DBA_TABLES A 
           WHERE   OWNER = 'TESTDB' --IN ('SCOTT','TEST') 
--           AND     (LAST_ANALYZED IS NULL OR NUM_ROWS <1000) 
--            AND     TABLE_NAME ='테이블명' 
--           AND     TABLE_NAME NOT LIKE '%BAK' 
--           AND     TABLE_NAME NOT LIKE '%TEMP%' 
        ) A 
        , ( SELECT  OWNER 
                  , SEGMENT_NAME, SUM(BYTES)/1024/1024 AS MB 
            FROM    DBA_SEGMENTS 
            WHERE   OWNER = 'TESTDB' --IN ('SCOTT','TEST') 
            GROUP BY OWNER, SEGMENT_NAME 
         ) B 
       ,(   SELECT  TABLE_OWNER,TABLE_NAME ,'Y' AS PAR_YN 
            FROM    DBA_TAB_PARTITIONS 
            WHERE   TABLE_OWNER = 'TESTDB' --IN ('SCOTT','TEST') 
            AND     TABLE_NAME NOT LIKE 'BIN%' 
            GROUP BY TABLE_OWNER,TABLE_NAME 
        ) C 
        , DBA_OBJECTS O 
WHERE   1            = 1 
AND     A.OWNER      = B.OWNER 
AND     A.TABLE_NAME = B.SEGMENT_NAME 
AND     A.TABLE_NAME = O.OBJECT_NAME 
AND     A.OWNER      = C.TABLE_OWNER(+) 
AND     A.TABLE_NAME = C.TABLE_NAME(+) 
AND     O.OBJECT_TYPE = 'TABLE' 
;

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

BPM(Business Process Management), 비즈니스 프로세스 최적화 도구


1. BPM(Business Process Management)의 개요

 1-1. BPM(Business Process Management)의 정의

  - 비즈니스 프로세스의 자동화, 통합화, 최적화를 통해 비즈니스 프로세스의 민첩성, 유연성, 가시성 확보 및 이를 통해 기업가치를 높이는 개념 및 시스템

 1-2. BPM(Business Process Management)의 특징

   1) 가시성
      - End-to-End 프로세스 전과정의 관리를 통한 가시성 및 통제력 확보
   2) 자동화
     - 자동화된 비즈니스 프로세스의 실행(BPEL)의 이용
   3) 통합화
     - E2E 관점에서의 Legacy 시스템과의 비즈니스 프로세스 통합
   4) 최적화
    - 비즈니스 프로세스 모니터링 및 분석을 통한 프로세스 개선

 

2. BPM(Business Process Management) 개념도의 구성요소

 2-1. BPM(Business Process Management)의 개념도

Legacy 시스템 통합하여 비즈니스 프로세스 최적화, 인터넷 통해 서비스 제공

 2-2. BPM(Business Process Management)의 구성요소

 1) 비즈니스 프로세스 모델링
  - 비즈니스 프로세스, 정보의 흐름 등을 GUI 기반에서 설계 및 지원
  - BPML, BPMN


 2) 비즈니스 프로세스 실행
  - 프로세스 자동화 및 흐름제어, 사람과 APP 간 통합업무 환경 제공  
  - BPEL, BRE, BPEL4WS

 3) 비즈니스 프로세스 모니터링
  - 프로세스의 진행상태의 직관적, 실시간 모니터링 및 추적 관리
  - BAM

 4) 프로세스 분석 및 최적화  
  - 비즈니스 프로세스에 대한 Activity 단위 및 다차원 분석을 통한 최적화 지원
  - BPA 도구

 

3. BPM(Business Process Management) 구축을 위한 접근 방법

 1) Workflow 관점에서의 BPM 접근

   - Workflow 기반 BPM의 특징: 전통적 Workflow에서 출발, 문서와 사용자 업무처리 중심

   - Workflow 기반 BPM의 주요 기능 : 자동화 및 조직설계

 2) EAI 관점에서의 BPM 접근

   - EAI 기본 기능 보유, 시스템간 데이터 전달 및 전환기능 기반 탄생

 3) SOA 관점에서의 BPM 접근

   - 프로세스와 데이터 통합을 위한 아키텍처 중심의 BPM 구현

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

BPEL(Business Process Execution Language), 기업의 비즈니스 프로세스 통합 관리


1. BPEL(Business Process Execution Language)의 개요

 1-1. BPEL(Business Process Execution Language)의 정의

 - 비즈니스 프로세스를 정의하고, 정의된 프로세스를 순차적으로 실행, 제어하기 위한 XML기반의 표준 언어
 - 비즈니스 프로세스에 정의된 Rule을 기반으로 프로세스를 실행, 제어하기 위한 XML 기반의 표준 언어

 1-2. BPEL(Business Process Execution Language)의 필요성

 - 패러다임변화: 협업적 비즈니스의 중요성에 따른 서비스간의 통합관리
 - 경영방법의 가시화: 부가가치 낮은 비효율적 업무평가 및 업무재설계
 - 관리의 용이성: 분산 서비스 컴포넌트의 제어의 용이성 및 컴포넌트의 통합모니터링 및 관리

 

2. BPEL(Business Process Execution Language)의 구성도, 주요기능

 2-1. BPEL(Business Process Execution Language)의 구성도

기업의 내부/외부 프로세스 통합적 실행, 제어, 자동화

 

 2-2. BPEL(Business Process Execution Language)의 주요기능

 1) Invoke : 서비스를 동기적/비동기적으로 호출하고 값을 받음
 2) Assign : 결과값을 받아서 일시적인 저장(변수와 같은 역할 수행)
 3) Scope : 예외 사항 처리를 위한 범위를 지정함
 4) Switch : 프로세스의 판단에 의한 분기를 처리
 5) Receive : 비동기적인 호출에 의해서 처리된 값을 돌려줌

 

3. BPEL(Business Process Execution Language)의 활용

 - 업무처리자동화: BPM 엔진의 구성 및 프로세스 처리를 통한 업무 자동화
 - 시스템연계용이: 두 Application이나 파트너간 비즈니스 상호 교환 용이
 - 비즈니스최적화: 비즈니스 프로세스 정의 통한프로세스최적화, 리엔지니어링 지원 및 최적 프로세스 선택으로 기업 환경 최적화
 - BPEL4WS: 웹 서비스를 통해 비즈니스 기능공개시 주요 기술로 활용

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

BRE(Business Rule Engine), 실시간 기업(RTE, Real-Time Enterprise) 구현을 위한 시스템


1. BRE(Business Rule Engine)의 개요

 1-1. BRE(Business Rule Engine)의 정의

   - 비즈니스 Rule을 프로세스에서 분리하여, 보다 신속하고 정확하게 비즈니스 요구를 수용할 수 있도록 비즈니스 Rule 관리 및 추론 기능을 지원하는 시스템
   - 기업의 복잡한 업무 규칙 또는 변경이 많은 프로세스를 도출하고 정형화하여, 프로세스를 효과적으로 관리, 자동화, 최적화하기 위한 기술 및 솔루션

 1-2. BRE(Business Rule Engine)의 필요성

  1) 정보시스템에서 처리하는 데이터의 양이 방대해지고 업무 프로세스가 복잡해짐에 따라, 이를 처리하는 처리 방식의 단순화 필요.
  2) RTE 환경에서 발전하면서 신속한 의사결정이 기업의 경쟁력이 됨.
  3) 인터넷 환경에서의 업무 노하우를 기반으로 한 정보시스템을 통하여 서비스 향상 및 비용 절감의 필요성 요구.

 

2. BRE(Business Rule Engine)의 개념도 및 구성요소

 2-1. BRE(Business Rule Engine)의 개념도

 2-2. BRE(Business Rule Engine)의 구성요소

   1) Rule Manager : 비즈니스 룰 개발 및 관리 기능, 비즈니스 룰 라이프사이클 관리(룰 분류 -> 룰 작성 -> 룰 테스트 -> 룰 적용 -> 룰 관리)

   2) Rule Service : 룰 엔진 서버 기능, 개발한 Rule을 Deploy & Service 처리

   3) Rule Monitoring : 비즈니스 룰 모니터링, 비즈니스 프로세스 개선 활동 및 비즈니스 룰 성능 튜닝 지원

   4) Inference Engine : 전방향 추론, 후방향 추론, 테이블추론 등과 같은 추론기법이 구현된 모듈

   5) Rule Repository : 룰 저장소

 

3. BRE(Business Rule Engine)의 기대효과

  1) 비즈니스 : 고객 요구사항 및 비즈니스 정책 변화에 실시간 대응 가능 (Time-to-Market)

  2) 시스템 : 전문가시스템에 뿌리를 두고 있어 일반적인 시스템으로는 구현하기 힘든 비구조적인 지식을 효과적으로 구현 가능

  3) 아키텍처 : 확장성, 재사용성 극대화

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

BAM(Business Activity Monitoring)


1. BAM(Business Activity Monitoring)의 개요

 

 1-1. 정의

   - 기업의 업무 프로세스 운영 중에 발생한 정보를 바탕으로 실시간 의사결정을 수행하는 일련의 프로세스를 이벤트 관점에서 자동화하는 전략과 기술

   - 기업 차원의 중요한 성과지표를 관련 자료와 함께 실시간 수준으로 파악함으로써 기업활동의 속도와 효과성을 높이기 위한 기술 또는 도구

1-2. 필요성

  - 경영에 필요한 신속한 의사 결정 지원

  - 위험 및 기회 발생에 대한 신속한 대응 체계 구축

  - 신소가고, 지속적인 프로세스 혁신

 

2. BAM(Business Activity Monitoring)의 구조도 및 주요기능, 기술 기반

 2-1. BAM(Business Activity Monitoring)의 구조도

Event Capture -> Event 분석, 필터링 -> Action

 

 2-2. BAM(Business Activity Monitoring) 주요기능

 1) 이벤트 감지 분석: 비즈니스 이벤트 감지와 분석을 통해 빠른 대응, 비즈니스 활동 모니터링 Alert

 2) 정보계 데이터 분석 : 정보계 데이터, 이력 데이터를 실시간 분석

 3) 실시간 통합 : EAI와 ETL을 통해 이벤트를 감지하여 실시간 통합

 4) 비즈니스 규칙 엔진 : 사전에 비즈니스 규칙을 정의하여 분석과정 자동화

 

2-3. BAM(Business Activity Monitoring) 기술 기반

 1) 어플리케이션 통합 : 주요 어플리케이션 간 통신을 위해 메시지의 흐름을 관리하고 데이터 변환 및 어플리케이션의 통합 기능 제공

 2) BI : 데이터웨어하우스 및 데이터마트로부터 주요 업무 성능 지표를 분석해주는 툴을 제공

 3) DW : 이력 및 동향 분석을 통해서 향후 적절한 액션 플랜 제공

 4) 프로세스 통합 관리 : 전체적인 업무 프로세스 흐름상에서 비즈니스 이벤트를 분석하여 그 영향을 분석하는 전반적인 업무 프로세스 기반 제공

 

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

 

set echo off

set lines 132

set pages 5000

set scan on

set verify off

set feedback off

set head on

 

prompt

accept owner prompt 'Table owner: '

accept table_name prompt 'Table name: '

 

col owner for a15

col synonym_name for a15

col table_owner for a15

col db_link for a15

col table_name for a30

col tablespace_name for a15

col mb for 999,990

col num_rows for 999,999,990

col blocks for 999,999,990

col empty_blocks for 999,990

col avg_space for 9,990

col chain_cnt for 990

col avg_row_len for 999,990

col avg_col_len for 990

col column_name for a30

col nullable for a4

col num_distinct for 999,999,990

col density for 9.999999

col index_name for a30

col uniq for a4

col blev for 90

col leaf_blocks for 9,999,990

col distinct_keys for 999,999,990

col key_lblocks for 99,990

col key_dblocks for 9,999,990

col clustering_factor for 999,999,990

col column_position format 999

col col for a25

col column_length for 990

col num_buckets for 990

col num_nulls for 999,999,990

 

 

select  t.table_name,

        t.tablespace_name,

        t.num_rows,

        t.blocks,

        s.bytes/1048576 mb,

        t.empty_blocks,

        t.chain_cnt,

        t.avg_row_len,

        t.last_analyzed

from    dba_tables t, dba_segments s

where   t.owner=upper(NVL('&&owner',USER)) and t.table_name=upper('&&table_name')

  and   s.owner=t.owner and s.segment_name=t.table_name

  and   s.segment_type <> 'TABLE PARTITION'

union all

select  p.partition_name||' (P)' table_name,

        p.tablespace_name,

        p.num_rows,

        p.blocks,

        s.bytes/1048576 mb,

        p.empty_blocks,

        p.chain_cnt,

        p.avg_row_len,

        p.last_analyzed

from    dba_segments s, dba_tab_partitions p

where   s.segment_type='TABLE PARTITION'

  and   p.table_owner=upper(NVL('&&owner',USER)) and p.table_name=upper('&&table_name')

  and   s.owner=p.table_owner and s.segment_name=p.table_name and s.partition_name=p.partition_name

order by table_name

/

 

select  column_name, decode(t.data_type,'NUMBER',t.data_type||'('||

        decode(t.data_precision,null,t.data_length||')',

                t.data_precision||','||t.data_scale||')'),

                'DATA',t.data_type,'LONG',t.data_type,

                'ROWID',t.data_type,'MLSLABEL',t.data_type,

                t.data_type||'('||t.data_length||')')||' '||

                decode(t.nullable,'N','NOT NULL','n','NOT NULL',null) col,

        num_distinct,num_nulls,density,num_buckets,avg_col_len,last_analyzed

from    dba_tab_columns t

where   table_name = upper('&table_name') and owner=upper(nvl('&owner',user))

order   by column_name;

 

 

select  i.index_name,i.tablespace_name,substr(i.uniqueness,1,4) uniq,i.blevel blev,i.leaf_blocks,i.distinct_keys,

        i.clustering_factor,i.last_analyzed

from    dba_indexes i, dba_segments s

where   i.table_name = upper('&table_name') and i.owner=upper(nvl('&owner',user))

  and   i.owner=s.owner and i.index_name=s.segment_name

  and   s.segment_type <> 'INDEX PARTITION'

union all

select  p.partition_name||' (P)' index_name,p.tablespace_name,substr(i.uniqueness,1,4) uniq,p.blevel blev,p.leaf_blocks,p.distinct_keys,

        p.clustering_factor,p.last_analyzed

from    dba_ind_partitions p, dba_segments s, dba_indexes i

where   i.table_name = upper('&table_name') and i.owner=upper(nvl('&owner',user))

  and   s.segment_name=i.index_name and s.owner=i.owner

  and   p.index_owner=s.owner and p.index_name=s.segment_name and p.partition_name=s.partition_name

  and   s.segment_type = 'INDEX PARTITION'

order   by index_name

/

 

break on index_name

 

select  i.index_name,i.column_name,i.column_position,t.num_distinct,t.num_nulls,t.num_buckets

from    dba_ind_columns i, dba_tab_columns t

where   t.owner=upper(nvl('&owner',user)) and i.table_name=upper('&table_name')

  and   i.index_owner=t.owner and i.table_name=t.table_name and t.column_name=i.column_name

order   by index_name,column_position;

 

clear breaks

set feedback on

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

col SQL_ID form a16
col Benefit form 9999999999999

select 
        * 
from    (
            select 
                    b.ATTR1 as SQL_ID
                  , max(a.BENEFIT) as "Benefit" 
            from    DBA_ADVISOR_RECOMMENDATIONS a, DBA_ADVISOR_OBJECTS b 
            where   a.REC_ID = b.OBJECT_ID
            and     a.TASK_ID = b.TASK_ID
            and     a.TASK_ID in (
                        select distinct b.task_id
                        from    dba_hist_snapshot a, dba_advisor_tasks b, dba_advisor_log l
                        where a.begin_interval_time > sysdate - 7 
                        and  a.dbid = (select dbid from v$database) 
                        and a.INSTANCE_NUMBER = (select INSTANCE_NUMBER from v$instance) 
                        and to_char(a.begin_interval_time, 'yyyymmddHH24') = to_char(b.created, 'yyyymmddHH24') 
                        and b.advisor_name = 'ADDM' 
                        and b.task_id = l.task_id 
                        and l.status = 'COMPLETED'
                    ) 
            and  length(b.ATTR4) > 1 group by b.ATTR1
            order by max(a.BENEFIT) desc
        ) where rownum < 6;
블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,