반응형


내부적으로 호출 시작은
dbms_stats.gather_database_stats_job_proc()


-- 11g의 기본 자동 수집 테스트는 아래로 조회 가능
select * from dba_autotask_client;

-- 내용 조회
select * from DBA_SCHEDULER_WINDOWS;

-- 각 요일별 윈도우 확인하고
WINDOW_NAME => MONDAY_WINDOW는 월요일

지금 문제가 되는 토,일의 byhour가 6으로 (기본)

업무시간중에 수행되면 안됨

-- 특정 테이블 통계 정보 수집 이력 조회
select * from dba_tab_stats_history
        where table_name = '테이블명'
          and to_char(stats_update_time, 'yyyymmdd') = '20171230'
;

 

/*
    -- 기본 토요일 repeat_interval 값
    freq=daily;byday=SAT;byhour=6;byminute=0; bysecond=0
*/
-- 토요일의 시간을 6 => 22시로 변경
-- 아래의 명령어는 Active 상태를 TRUE => FALSE 로 만듬
-- /as sysdba 로 접속
exec dbms_scheduler.close_window('SATURDAY_WINDOW');


-- 비활성화
exec dbms_scheduler.disable('SATURDAY_WINDOW');

-- 반복되는 시간 속성 설정
exec dbms_scheduler.set_attribute(name => 'SATURDAY_WINDOW', attribute => 'REPEAT_INTERVAL', value => 'freq=daily;byday=SAT;byhour=22;byminute=0; bysecond=0');

-- 지속되는 속성 설정
exec dbms_scheduler.set_attribute(name => 'SATURDAY_WINDOW', attribute => 'DURATION', value => '+000 04:00:00.000000000');

-- 활성화
exec dbms_scheduler.enable('SATURDAY_WINDOW');


-- 일요일 변경
-- 6 => 22시로 변경
-- 비활성화
exec dbms_scheduler.disable('SUNDAY_WINDOW');

-- 반복되는 시간 속성 설정
exec dbms_scheduler.set_attribute(name => 'SUNDAY_WINDOW', attribute => 'REPEAT_INTERVAL', value => 'freq=daily;byday=SUN;byhour=22;byminute=0; bysecond=0');

-- 지속되는 속성 설정
exec dbms_scheduler.set_attribute(name => 'SUNDAY_WINDOW', attribute => 'DURATION', value => '+000 04:00:00.000000000');

-- 활성화
exec dbms_scheduler.enable('SUNDAY_WINDOW');


-- 최종 내용 조회
select * from DBA_SCHEDULER_WINDOWS;

반응형
반응형


1. cpu 및 실행 시간의 plan을 아래와 같이 수행 후


explain plan for

          select * from dual;


2. 해당 plan 내역 조회


select * from table(dbms_xplan.display);


time(수행시간)이 나오지 않고


plan_table is old version 


에러가 뜨면 나타 나지 않을 때는


조치 방법

1. 기존 테이블 삭제

    $> DROP TABLE PLAN_TABLE;


2. sqlplus 서버에 접속해서


    $> @?$ORACLE_HOME/rdbms/admin/utlxpls.sql 실행


완료


2에서 오류 발생시 조치 방법


# > sqlplus '/as sysdba' 접속


$> SELECT DBMS_METADATA.GET_DDL('TABLE','PLAN_TABLE$','SYS') FROM DUAL;


위의 query 나온 결과에서


SYS 와 $ 표시를 삭제하고


해당 계정에서 실행하면 새로운 PLAN 테이블이 생성되고


time도 정상적으로 나온다. 



* EXPLAIN PLAN 시 이름 주고 조회하기


EXPLAIN PLAN SET STATEMENT_ID='TSH' FOR

SELECT *

FROM   emp e, dept d

WHERE  e.deptno = d.deptno

AND    e.ename  = 'SMITH';


SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(NULL, 'TSH', 'ALL', NULL));


1 번째 인자 : PLAN TABLE 명으로 NULL 명시해도 됨(기본 사용)

2 번째 인자 : EXPLAIN PLAN SET STATEMENT_ID 에서 사용한 이름 (여러명이 동시 사용시에는 이름이 나와야 정확함) -> NULL은 마지막 값 조회

3. 번째 인자 : DBMS_XPLAN.DISPLAY 에서 상세하게 볼 때 사용하는 옵션으로 TYPICAL, ALL, BASIC 등이 있음



참고 : http://web-dev.tistory.com/662


참고 사이트 : http://stackoverflow.com/questions/25613444/how-to-create-explain-plan-table-on-amazon-rds-database

반응형
반응형

AIX에서 시간 동기화 하기

 

1. TZ 설정(직접 설정)
    AIX 6.1 이상
    > smitty chtz_user
    AIX 6.1 미만
    > smitty chtz

2. 세부 설정
   # smitty chtz_date (1번 항목의 내용도 포함됨)
   Change Time Zone Using User Inputted Values

   Standard Time ID(only alphabets) : KORST
   Standard Time Offset from CUT : -9

3. 리부팅
   # rebooting

4. 시간 동기화
   # setclock time.bora.net
    - or (IP를 직접 입력) -
   # setclock  203.248.240.140

반응형

'OS > AIX' 카테고리의 다른 글

SSHD 서버 설치  (0) 2012.11.07
AIX VNC 설정하기  (2) 2012.07.26
AIX 칩입 확인 해보자 !  (0) 2011.03.23
IBM JVM -Xloratio 옵션  (0) 2011.03.03
날짜 관련 얻기  (0) 2011.03.02
반응형


형태

오라클 계정 -> 5분 단위로 해서 -> 아래의 테이블 생성후 -> Crontab 으로 조회하여 입력하는 형태

자세한 것은 Shell, Crontab 정보를 찾으면서 하면됨

-- 임의로 실행하는 쿼리목록 조회하기
select      to_char(sysdate,'yyyymmdd'),
            to_char(sysdate, 'HH24'),
            to_char(sysdate, 'MI'),
            A.inst_id,
            A.SID,
            A.SERIAL#,
            A.USERNAME,
            A.TYPE,
            A.STATUS,
            A.STATE,
            A.EVENT,
            A.OSUSER,
            A.PROGRAM,
            A.MACHINE,
            A.SQL_ADDRESS,
            B.SQL_ID,
            B.sharable_mem,
            B.persistent_mem,
            B.runtime_mem,
            B.first_load_time,
            B.OPTIMIZER_MODE,
            B.OPTIMIZER_COST,
            B.MODULE,
            B.SQL_FULLTEXT
   from     GV$SESSION a, GV$SQL B
  WHERE     A.STATUS = 'ACTIVE'                       -- 현재 활성화된
    AND     B.ADDRESS=A.SQL_ADDRESS                   -- FULL SQL TEXT 를 얻기 위해
    AND     A.MACHINE NOT IN ('NewWas1','NewWas2')    -- 접속 Machine 이름이 NewWas1, NewWas2 는 아님
    AND     UPPER(B.SQL_FULLTEXT) NOT LIKE '%V$%';    -- V$ 로 시작하는 뷰를 보는 경우는 제외
   
   
CREATE TABLE MStorage.USER_SQL_LOG
(
      VIEW_YMD   VARCHAR2(8) DEFAULT to_char(sysdate,'yyyymmdd'),
      VIEW_HH    VARCHAR2(2) DEFAULT to_char(sysdate, 'HH24'),
      VIEW_MI    VARCHAR2(2) DEFAULT to_char(sysdate, 'MI'),
      INST_ID    NUMBER,
      SID      NUMBER,
      SERIAL#    NUMBER,
      USERNAME   VARCHAR2(30),
      TYPE     VARCHAR2(10),
      STATUS    VARCHAR2(8),
      STATE     VARCHAR2(19),
      EVENT     VARCHAR2(64),
      OSUSER    VARCHAR2(30),
      PROGRAM    VARCHAR2(48),
      MACHINE    VARCHAR2(64),
      SQL_ADDRESS RAW(8),
      SQL_ID   VARCHAR2(13),
      SHARABLE_MEM NUMBER,
      PERSISTENT_MEM NUMBER,
      RUNTIME_MEM NUMBER,
      FIRST_LOAD_TIME VARCHAR2(38),
      OPTIMIZER_MODE VARCHAR2(10),
      OPTIMIZER_COST NUMBER,
      MODULE     VARCHAR2(64),
      SQL_FULLTEXT  CLOB
) TABLESPACE MStorage;

COMMENT ON TABLE MStorage.USER_SQL_LOG IS '로그 모니터링 테이블(GV$SESSION) 참조';

 


-- 인덱스 생성
CREATE INDEX MStorage.IX_USER_SQL_LOG_01 ON MStorage.USER_SQL_LOG
(
  VIEW_YMD,VIEW_HH, VIEW_MI
)
TABLESPACE MStorage;

 


-- 실제 입력 구문

INSERT INTO MStorage.USER_SQL_LOG
       (
       inst_id,
            SID,
            SERIAL#,
            USERNAME,
            TYPE,
            STATUS,
            STATE,
            EVENT,
            OSUSER,
            PROGRAM,
            MACHINE,
            SQL_ADDRESS,
            SQL_ID,
            sharable_mem,
            persistent_mem,
            runtime_mem,
            first_load_time,
            OPTIMIZER_MODE,
            OPTIMIZER_COST,
            MODULE,
            SQL_FULLTEXT               
            )
select      A.inst_id,
            A.SID,
            A.SERIAL#,
            A.USERNAME,
            A.TYPE,
            A.STATUS,
            A.STATE,
            A.EVENT,
            A.OSUSER,
            A.PROGRAM,
            A.MACHINE,
            A.SQL_ADDRESS,
            B.SQL_ID,
            B.sharable_mem,
            B.persistent_mem,
            B.runtime_mem,
            B.first_load_time,
            B.OPTIMIZER_MODE,
            B.OPTIMIZER_COST,
            B.MODULE,
            B.SQL_FULLTEXT
   from     GV$SESSION a, GV$SQL B
  WHERE     1=1-- A.STATUS = 'ACTIVE'                       -- 현재 활성화된
    AND     B.ADDRESS=A.SQL_ADDRESS                   -- FULL SQL TEXT 를 얻기 위해
    AND     A.MACHINE NOT IN ('NewWas1','NewWas2')    -- 접속 Machine 이름이 NewWas1, NewWas2 는 아님
    AND     UPPER(B.SQL_FULLTEXT) NOT LIKE '%V$%';    -- V$ 로 시작하는 뷰를 보는 경우는 제외

반응형
반응형
index 생성은 크게 아래와 같은 세 과정을 통해 생성이 됩니다.

[1. 메모리 및 temp tablespace를 이용한 sort] -> [2. sort 된 data를 통한 temporary segment생성 ] -> [3. index로 변신] 

3번 과정은 순간적으로 이루어 지기 때문에 시간 산정에서 의미가 없다고 볼때 1,2번 과정을 모니터링하면 진행 정도를 확인 할 수
있습니다.

1. sort 모니터링
select SQL_ID,BLOCKS*8/1024 Mbytes from v$sort_usage;

2. temporary segment 생성 모니터링
select segment_name,bytes/1024/1024,tablespace_name from dba_segments where segment_type='TEMPORARY'; 
반응형
반응형

시스템 날짜를 동기화가 아닌 직접 입력하여 날짜를 변경하기

ROOT로 작업을 하시길...

# date 112718282008 (11월27일 18시28분 2008년도) 
반응형

+ Recent posts