ORACLE/SCRIPT2011. 12. 21. 10:24
반응형

 

Here are some scripts related to Session Statistics .

Session I/O By User

SESSION I/O BY USER NOTES:

  • Username - Name of the Oracle process user
  • OS User - Name of the operating system user
  • PID - Process ID of the session
  • SID - Session ID of the session
  • Serial# - Serial# of the session
  • Physical Reads - Physical reads for the session
  • Block Gets - Block gets for the session
  • Consistent Gets - Consistent gets for the session
  • Block Changes - Block changes for the session
  • Consistent Changes - Consistent changes for the session

    select	nvl(ses.USERNAME,'ORACLE PROC') username,
    	OSUSER os_user,
    	PROCESS pid,
    	ses.SID sid,
    	SERIAL#,
    	PHYSICAL_READS,
    	BLOCK_GETS,
    	CONSISTENT_GETS,
    	BLOCK_CHANGES,
    	CONSISTENT_CHANGES
    from	v$session ses, 
    	v$sess_io sio
    where 	ses.SID = sio.SID
    order 	by PHYSICAL_READS, ses.USERNAME
    
    

    CPU Usage By Session

    CPU USAGE BY SESSION NOTES:

  • Username - Name of the user
  • SID - Session id
  • CPU Usage - CPU centiseconds used by this session (divide by 100 to get real CPU seconds)

    select 	nvl(ss.USERNAME,'ORACLE PROC') username,
    	se.SID,
    	VALUE cpu_usage
    from 	v$session ss, 
    	v$sesstat se, 
    	v$statname sn
    where  	se.STATISTIC# = sn.STATISTIC#
    and  	NAME like '%CPU used by this session%'
    and  	se.SID = ss.SID
    order  	by VALUE desc
    
    

    Resource Usage By User

    RESOURCE USAGE BY USER NOTES:

  • SID - Session ID
  • Username - Name of the user
  • Statistic - Name of the statistic
  • Value - Current value

    select 	ses.SID,
    	nvl(ses.USERNAME,'ORACLE PROC') username,
    	sn.NAME statistic,
    	sest.VALUE
    from 	v$session ses, 
    	v$statname sn, 
    	v$sesstat sest
    where 	ses.SID = sest.SID
    and 	sn.STATISTIC# = sest.STATISTIC#
    and 	sest.VALUE is not null
    and 	sest.VALUE != 0            
    order 	by ses.USERNAME, ses.SID, sn.NAME
    
    

    Session Stats By Session

    SESSION STAT NOTES:

  • Username - Name of the user
  • SID - Session ID
  • Statistic - Name of the statistic
  • Usage - Usage according to Oracle

    select  nvl(ss.USERNAME,'ORACLE PROC') username,
    	se.SID,
    	sn.NAME stastic,
    	VALUE usage
    from 	v$session ss, 
    	v$sesstat se, 
    	v$statname sn
    where  	se.STATISTIC# = sn.STATISTIC#
    and  	se.SID = ss.SID
    and	se.VALUE > 0
    order  	by sn.NAME, se.SID, se.VALUE desc
    
    

    Cursor Usage By Session

    CURSOR USAGE BY SESSION NOTES:

  • Username - Name of the user
  • Recursive Calls - Total number of recursive calls
  • Opened Cursors - Total number of opened cursors
  • Current Cursors - Number of cursor currently in use

    select 	user_process username,
    	"Recursive Calls",
    	"Opened Cursors",
    	"Current Cursors"
    from  (
    	select 	nvl(ss.USERNAME,'ORACLE PROC')||'('||se.sid||') ' user_process, 
    			sum(decode(NAME,'recursive calls',value)) "Recursive Calls",
    			sum(decode(NAME,'opened cursors cumulative',value)) "Opened Cursors",
    			sum(decode(NAME,'opened cursors current',value)) "Current Cursors"
    	from 	v$session ss, 
    		v$sesstat se, 
    		v$statname sn
    	where 	se.STATISTIC# = sn.STATISTIC#
    	and 	(NAME  like '%opened cursors current%'
    	or 	 NAME  like '%recursive calls%'
    	or 	 NAME  like '%opened cursors cumulative%')
    	and 	se.SID = ss.SID
    	and 	ss.USERNAME is not null
    	group 	by nvl(ss.USERNAME,'ORACLE PROC')||'('||se.SID||') '
    )
    orasnap_user_cursors
    order 	by USER_PROCESS,"Recursive Calls"
    
    

    User Hit Ratios

    USER HIT RATIO NOTES:

  • Username - Name of the user
  • Consistent Gets - The number of accesses made to the block buffer to retrieve data in a consistent mode.
  • DB Blk Gets - The number of blocks accessed via single block gets (i.e. not through the consistent get mechanism).
  • Physical Reads - The cumulative number of blocks read from disk.

  • Logical reads are the sum of consistent gets and db block gets.
  • The db block gets statistic value is incremented when a block is read for update and when segment header blocks are accessed.
  • Hit ratio should be > 90%

    select	USERNAME,
    	CONSISTENT_GETS,
            BLOCK_GETS,
            PHYSICAL_READS,
            ((CONSISTENT_GETS+BLOCK_GETS-PHYSICAL_READS) / (CONSISTENT_GETS+BLOCK_GETS)) Ratio
    from 	v$session, v$sess_io
    where 	v$session.SID = v$sess_io.SID
    and 	(CONSISTENT_GETS+BLOCK_GETS) > 0
    and 	USERNAME is not null
    order	by ((CONSISTENT_GETS+BLOCK_GETS-PHYSICAL_READS) / (CONSISTENT_GETS+BLOCK_GETS))


  • 반응형
    Posted by [PineTree]
    ORACLE/SCRIPT2010. 11. 24. 14:43
    반응형
    ## for unix
    $ _DATE=`date +%y%m%d`
    $ _DIR=/data/exp
    $ exp asd/asd@asd file = ${_DIR}/file_name_${_DATE}.dmp

    ## for window
    c:\> exp asd/asd@asd file = file_name_"%DATE%".dmp

    #################################################################################
    crontab 설정 파일

    #!/bin/bash
    datetime=$(date +%Y%m%d)

    exp mediasp/mediasp file="/backup/phoenix/phoenixdb_$datetime.dmp" log="/backup/phoenix/phoenixdb_$datetime.log" full=y direct=y


    반응형

    'ORACLE > SCRIPT' 카테고리의 다른 글

    ORACLE Session Statistics 쿼리  (0) 2011.12.21
    ORACLE 중복 데이터 확인  (0) 2010.05.28
    OPTEIMIZING ORACLE OPTIMIZER 스크립트 모음  (0) 2010.04.28
    ORACLE INDEX,TABLE정보 조회  (0) 2010.04.28
    과도한 I/O 유발 쿼리 찾기  (0) 2010.04.15
    Posted by [PineTree]
    ORACLE/SCRIPT2010. 5. 28. 17:23
    반응형
    테이블의 특정 컬럼에
    PK 나 UK 가 없을 때  테이블의 전체 또는 여러 컬럼들의 DATA들의 중복 확인

    SELECT M_SSERVICE,M_SCODETYPE,M_SCODEVALUE,M_SDESC,M_SKIND,M_SDESCKOR,M_SPARENTCODE
    FROM TCODEINFO
    GROUP BY M_SSERVICE,M_SCODETYPE,M_SCODEVALUE,M_SDESC,M_SKIND,M_SDESCKOR,M_SPARENTCODE
    HAVING COUNT(*)

    / 중복된 data확인 및 중복된 갯수 까지 출력
    SELECT M_SSERVICE,M_SCODETYPE,M_SCODEVALUE,M_SDESC,M_SKIND,M_SDESCKOR,M_SPARENTCODE,COUNT(*)
    FROM TCODEINFO
    GROUP BY M_SSERVICE,M_SCODETYPE,M_SCODEVALUE,M_SDESC,M_SKIND,M_SDESCKOR,M_SPARENTCODE
    HAVING COUNT(*)
    반응형
    Posted by [PineTree]
    ORACLE/SCRIPT2010. 4. 28. 14:43
    반응형



    조동욱님의 OPTEIMIZING ORACLE OPTIMIZER 책 스크립트모음입니다.



    반응형
    Posted by [PineTree]
    ORACLE/SCRIPT2010. 4. 28. 14:13
    반응형

    현재 유저의 인덱스와 관련된 전반적인  정보 조회

    SELECT A.TABLE_NAME,
           A.INDEX_NAME,
           B.COLUMN_NAME,
           B.COLUMN_POSITION,
           A.UNIQUENESS,
           B.DESCEND,
           A.INDEX_TYPE,
           A.TABLESPACE_NAME
    FROM   USER_INDEXES A,
           USER_IND_COLUMNS B
    WHERE  A.INDEX_NAME=B.INDEX_NAME
    ORDER BY 1,2,4;


    해당 테이블 조회시에는  WHERE 조건에 TABLE_NAME 만 추가해주면 된다.

    SELECT A.TABLE_NAME,
           A.INDEX_NAME,
           B.COLUMN_NAME,
           B.COLUMN_POSITION,
           A.UNIQUENESS,
           B.DESCEND,
           A.INDEX_TYPE,
           A.TABLESPACE_NAME
    FROM   USER_INDEXES A,
           USER_IND_COLUMNS B
    WHERE  A.INDEX_NAME=B.INDEX_NAME AND A.TABLE_NAME='테이블명'
    ORDER BY 1,2,4;

    TABLE 정보 조회

    SELECT TABLE_NAME,COLUMN_NAME,DATA_TYPE,DATA_LENGTH,COLUMN_ID,NULLABLE
    FROM USER_TAB_COLUMNS
    ORDER BY 1,5
    반응형

    'ORACLE > SCRIPT' 카테고리의 다른 글

    ORACLE 중복 데이터 확인  (0) 2010.05.28
    OPTEIMIZING ORACLE OPTIMIZER 스크립트 모음  (0) 2010.04.28
    과도한 I/O 유발 쿼리 찾기  (0) 2010.04.15
    오라클 시스템 uptime 확인하는 쿼리  (0) 2010.02.25
    제약조건 확인  (0) 2010.01.03
    Posted by [PineTree]
    ORACLE/SCRIPT2010. 4. 15. 20:24
    반응형

    col program for a20
    col username for a10
    col first_load_time  for a20
    col module format a20
    col sql_id format a16
    col machine for a20;

     

     select /* ordered use_nl(a b) */ 
             b.sql_Id, substr(a.program,1,20) program, substr(b.module,1,20) module, a.machine,
             username, B.executions, buffer_gets, disk_reads,ROWS_PROCESSED,
             trunc(buffer_gets/DECODE(nvl(executions,0),0,1,executions) ) b_e,
             trunc((buffer_gets+disk_reads)/DECODE(nvl(executions,0),0,1,executions) ) b_d_e,
             trunc(buffer_gets/DECODE(nvl(ROWS_PROCESSED,0),0,1,ROWS_PROCESSED) ) b_r,
             first_load_time        
                from Gv$session a, Gv$sqlarea b
                where  a.status = 'ACTIVE'
                 and  username not in ('SYS','SYSTEM')
                 and a.sql_id=b.sql_id
                 and a.inst_id = '1' and b.inst_id = a.inst_id
    order by b_d_e;  


    반응형
    Posted by [PineTree]
    ORACLE/SCRIPT2010. 2. 25. 10:51
    반응형
    col host_name form a10 heading "Host"
    col instance_name form a8 heading "Instance" newline
    col stime form a40 Heading "Database Started At" newline
    col uptime form a60 heading "Uptime" newline
    set heading off

    select 'Hostname      : ' || host_name
          ,'Instance Name : ' || instance_name
          ,'Started At    : ' || to_char(startup_time,'DD-MON-YYYY HH24:MI:SS') stime
          ,'Uptime        : ' || floor(sysdate - startup_time) || ' days(s) ' ||
           trunc( 24*((sysdate-startup_time) -
           trunc(sysdate-startup_time))) || ' hour(s) ' ||
           mod(trunc(1440*((sysdate-startup_time) -
           trunc(sysdate-startup_time))), 60) ||' minute(s) ' ||
           mod(trunc(86400*((sysdate-startup_time) -
           trunc(sysdate-startup_time))), 60) ||' seconds' uptime
    from v$instance
    반응형

    'ORACLE > SCRIPT' 카테고리의 다른 글

    ORACLE INDEX,TABLE정보 조회  (0) 2010.04.28
    과도한 I/O 유발 쿼리 찾기  (0) 2010.04.15
    제약조건 확인  (0) 2010.01.03
    sqlplus에서 spool사용 insert문으로 data 뽑아내기  (0) 2009.12.24
    oracle 실행한 쿼리 조회  (0) 2009.10.13
    Posted by [PineTree]
    ORACLE/SCRIPT2010. 1. 3. 13:12
    반응형
    1. 테이블에 걸려있는 제약 조건의 확인

    - USER_CONS_COLUMNS : 컬럼에 할당된 제약 조건을 볼 수 있습니다.

    - USER_CONSTRAINTS : 유저가 소유한 모든 제약 조건을 불 수 있습니다.  

    이 두개의 데이터사전을 참조 하면 됩니다.
     

     SQL> SELECT  SUBSTR(A.COLUMN_NAME,1,15) COLUMN_NAME,        -- 컬럼명
                   DECODE(B.CONSTRAINT_TYPE,
                                             ’P’,’PRIMARY KEY’,
                            ’U’,’UNIQUE KEY’,
                          ’C’,’CHECK OR NOT NULL’,
                                            ’R’,’FOREIGN KEY’) CONSTRAINT_TYPE,      -- 제약조건 TYPE
                  A.CONSTRAINT_NAME   CONSTRAINT_NAME             -- 제약 조건 명
            FROM  USER_CONS_COLUMNS  A,  USER_CONSTRAINTS  B  
            WHERE  A.TABLE_NAME = UPPER(’&table_name’)  
                AND  A.TABLE_NAME = B.TABLE_NAME  
                AND  A.CONSTRAINT_NAME = B.CONSTRAINT_NAME  
            ORDER BY 1;  

    -- 테이블 명을 입력 하면 됩니다.
    table_name의 값을 입력하십시오: emp2

     
    COLUMN_NAME             CONSTRAINT_TYPE   CONSTRAINT_NAME
    ------------------------------ ----------------- -------------------------
    DEPTNO                   CHECK OR NOT NULL      SYS_C001362   
                                   FOREIGN KEY                EMP2_FK_DEPTNO
    EMPNO                     PRIMARY KEY               EMP2_PK_EMPNO
    ENAME                     CHECK OR NOT NULL     EMP2_NN_ENAME
    MGR                        UNIQUE KEY                  EMP2_UP_MGR

      emp2 테이블의 모든 제약조건을 보여주고 있습니다.

      SYS로 시작하는 CONSTRAINT명은 USER가 CONSTRAINT NAME을 지정하지 않아
      SYSTEM에서 DEFAULT로 생성한 경우를 보여 줍니다.

     

     


    2. 테이블의 특정 컬럼에 걸려있는 제약 조건의 확인

    USER_CONS_COLUMNS : 컬럼에 할당된 제약 조건을 볼 수 있습니다.

    SQL>SET LINESIZE 300

    SQL>SELECT SUBSTR(TABLE_NAME,1,15)    TABLE_NAMES,  
                  SUBSTR(COLUMN_NAME,1,15)   COLUMN_NAME,  
                SUBSTR(CONSTRAINT_NAME,1,25) CONSTRAINT_NAME  
        FROM USER_CONS_COLUMNS  
        WHERE TABLE_NAME = UPPER(’&table_name’)  
            AND COLUMN_NAME = UPPER(’&column_name’);  
       
     
    table_name의 값을 입력하십시오: emp2
    column_name의 값을 입력하십시오: empno
     
    TABLE_NAMES        COLUMN_NAME    CONSTRAINT_NAME
    -----------------     -------------         -----------------
    EMP2                     EMPNO                EMP2_PK_EMPNO

    emp2테이블의 empno 컬럼의 제약조건을 보여 줍니다.


      ================================================
        * 데이터베이스 정보공유 커뮤니티 oracleclub.com
        * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
      ================================================
    ※ oracleclub 강좌를 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
    ※ oracleclub 강좌는 개인의 학습용으로만 사용 할 수 있습니다. 학원 홍보용이나 수익을 얻기 위한 용도로
        사용을 하시면 안됩니다. ^^

    반응형
    Posted by [PineTree]
    ORACLE/SCRIPT2009. 12. 24. 08:27
    반응형

    • SQL>set pages 0
      SQL>spool emp_insert.sql
      SQL>select 'insert into emp(empno,ename) values('''|| empno || ''',''' || ename || ''');' from scott.emp;
      SQL>spool off

    • select 'insert into emp values ('''||컬럼1||''','''||컬림2||''');' from emp;

    반응형
    Posted by [PineTree]
    ORACLE/SCRIPT2009. 10. 13. 14:51
    반응형
    10G

    select sql_text,PARSING_SCHEMA_NAME,module,LAST_ACTIVE_TIME from v$sqlarea
    where  PARSING_SCHEMA_NAME='유저명'  and module='JDBC Thin Client' and rownum < 11
    order by last_active_time desc


    8I

    select SQL_TEXT,PARSING_USER_ID,MODULE,FIRST_LOAD_TIME from v$sqlarea
    where     module='JDBC Thin Client' and rownum <11


    tkprof   파일.trc   변환할파일명  sys=no explain=id/pwd

    반응형
    Posted by [PineTree]