버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

...

코드 블럭
titlecheck.sql
linenumberstrue
set echo off
set feedback off

alter session set NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS';
alter session set NLS_TIMESTAMP_FORMAT='YYYY/MM/DD HH24:MI:SS';

set lines 200
set pages 100
set verify off
set feed off
ttitle off

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Snapshot Info
prompt ********************************************************** 

select SYSDATE as SNAP_TIME
  from DUAL;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Database Info
prompt ********************************************************** 

col PLATFORM_NAME form a30

select DBID,
       NAME,
       CREATED,
       RESETLOGS_TIME,
       LOG_MODE,
       OPEN_MODE,
       DATABASE_ROLE,
       PLATFORM_NAME
  from V$DATABASE;
 
clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     NLS Setting Info
prompt ********************************************************** 

col CHARACTERSET form a60

select a.VALUE||'_'||b.VALUE||'.'||c.VALUE as CHARACTERSET
  from (select VALUE
          from NLS_DATABASE_PARAMETERS
         where parameter='NLS_LANGUAGE')a,
       (select VALUE
          from NLS_DATABASE_PARAMETERS
         where parameter='NLS_TERRITORY')b,
       (select VALUE
          from NLS_DATABASE_PARAMETERS
         where parameter='NLS_CHARACTERSET')c
 group by a.VALUE||'_'||b.VALUE||'.'||c.VALUE;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Version Info
prompt ********************************************************** 

col COMP_NAME form a35;
col VERSION form a30;
col STATUS form a10
 
prompt 1. Database Version

select BANNER_FULL
  from V$VERSION;

prompt   
prompt 2. DB Component Version

col COMP_NAME form a50
col VERSION_FULL form a20

select CNAME as COMP_NAME,
       VERSION_FULL,
       SUBSTR(dbms_registry.status_name(STATUS), 1, 11) as STATUS,
       MODIFIED
  from SYS.REGISTRY$;
 
prompt   
prompt 3. SQL Patch Version

select PATCH_ID,
       PATCH_TYPE,
       ACTION,
       STATUS,
       to_char(ACTION_TIME, 'YYYY/MM/DD HH24:MI:SS') as ACTION_TIME,
       DESCRIPTION
  from DBA_REGISTRY_SQLPATCH
 order by ACTION_TIME;
 
clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Parameter Info
prompt ********************************************************** 

col NAME form a50
col DISPLAY_VALUE form a100

select NAME,
       DISPLAY_VALUE,
       ISDEFAULT
  from V$PARAMETER
 where ISDEFAULT = 'FALSE'
 order by 1;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Hot Backup Info
prompt ********************************************************** 

col BACKUP_TIME form a30

select FILE#,
       STATUS,
       CHANGE#,
       to_char(TIME, 'YYYY-MM-DD HH24:MI') as BACKUP_TIME
  from V$BACKUP;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Invalid Objects
prompt ********************************************************** 

col OWNER form a30

select OWNER,
       OBJECT_TYPE,
       count(*)
  from DBA_OBJECTS
 where STATUS = 'INVALID'
 group by OWNER, OBJECT_TYPE;

clear columns;

prompt   
prompt # $ORACLE_HOME/rdbms/admin/utlrp.sql
prompt # alter package schemaname.packagename compile;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Total SGA Size
prompt ********************************************************** 

select sum(VALUE)/1024/1024 as "ToTal SGA Size (MB)"
  from V$SGA;
 
clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Shared Pool Free Memory
prompt ********************************************************** 

select POOL,
       NAME,
       BYTES/1024/1024 "MB"
  from V$SGASTAT
 where NAME = 'free memory';

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Buffer Cache Hit Ratio
prompt ********************************************************** 

select trunc((a.VALUE+b.VALUE-c.VALUE)/(a.VALUE+b.VALUE)*100, 2) as "Buffer Cache Hit Ratio"
  from SYS.V_$SYSSTAT a,
       SYS.V_$SYSSTAT b,
       SYS.V_$SYSSTAT c
 where a.NAME='db block gets'
   and b.NAME='consistent gets'
   and c.NAME='physical reads';

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Data Dictionary Hit Ratio
prompt ********************************************************** 

select sum(GETMISSES) as TOTAL_MISSES,
       sum(GETS) as TOTAL_GETS,
       round(sum(GETMISSES)/sum(GETS)*100, 2) as "Dictionary Cache Miss Ratio",
       100 - round(sum(GETMISSES)/sum(GETS)*100, 2) as "Dictionary Cache Hit Ratio"
  from V$ROWCACHE;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Library Cache Hit Ratio
prompt ********************************************************** 

select sum(PINS) as executions,
       sum(RELOADS) as misses,
       round(trunc(sum(RELOADS) / sum(PINS)*100, 5), 2) as "Library Cache Miss Ratio",
       round(trunc(100 - (sum(RELOADS) / sum(PINS))*100, 5), 2) as "Library Cache Hit Ratio"
  from V$LIBRARYCACHE;
 
clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Parse Hit
prompt **********************************************************

select t.VALUE "Total Parse",
       h.VALUE "Hard Parse",
       t.VALUE-h.VALUE "Soft Parse",
       round(((t.VALUE-h.VALUE)/t.VALUE)*100, 2) "Soft Parse Ratio(%)",
       round((h.VALUE/t.VALUE)*100, 2) "Hard Parse Ratio(%)"
  from (select VALUE
          from V$SYSSTAT
         where NAME = 'parse count (total)' ) t,
       (select VALUE
          from V$SYSSTAT
         where NAME = 'parse count (hard)' ) h;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     PGA Hit Usage
prompt ********************************************************** 

select VALUE as "PGA Cache Hit Ratio"
  from V$PGASTAT
 where NAME = 'cache hit percentage';
  
clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Disk Sort and Memory Sort
prompt ********************************************************** 

col NAME form a20 

select d.VALUE Disk,
       m.VALUE Mem,
       ROUND((d.VALUE/m.VALUE)*100, 2) as "Disk Sort Ratio"
  from V$SYSSTAT m,
       V$SYSSTAT d
 where m.NAME = 'sorts (memory)'
   and d.NAME = 'sorts (disk)';

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Rollback Segment Wait Ratio
prompt ********************************************************** 

col MISS_RATIO form a20

select NAME "Rollback Segment Name", 
       trunc(WAITS/GETS*100, 5) as "Wait Ratio (%)"
  from V$ROLLSTAT s, V$ROLLNAME n
 where s.USN = n.USN;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     DBWR Free Buffer Scan Ratio
prompt ********************************************************** 

select round(decode(b.VALUE, 0, -1, (a.VALUE/b.VALUE)*100), 2) as "Free Buffer Scan Ratio"
  from V$SYSSTAT a,
       V$SYSSTAT b
 where a.NAME = 'free buffer inspected'
   and b.NAME = 'free buffer requested';
 
clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     DBWR Free Buffer Wait Ratio
prompt ********************************************************** 

select round(((a.FREE_BUFFER_WAIT/b.VALUE)*100),2) as "Free Buffer Wait Ratio"
  from V$BUFFER_POOL_STATISTICS a,
       V$SYSSTAT b
 where b.NAME = 'free buffer requested';

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     LGWR Log Space Request Ratio
prompt ********************************************************** 

select (r.VALUE*100)/e.VALUE "LGWR Log Space Request Ratio"
  from V$SYSSTAT r,
       V$SYSSTAT e
 where r.NAME = 'redo log space requests'
   and e.NAME = 'redo entries';
 
clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Enqueue Wait Ratio
prompt ********************************************************** 

select round((sum(TOTAL_WAIT#)/sum(TOTAL_REQ#))*100, 2) as "Enqueue Wait Ratio"
  from V$ENQUEUE_STAT;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Chained Row Ratio
prompt ********************************************************** 

col "Table Scan Access"  form 999,999,999,999,999,999
col "Index Access"       form 999,999,999,999,999,999
col "Chained Row Access" form 999,999,999,999,999
col "Ratio"              form 999.99

select sum(decode(NAME, 'table scan rows gotten', value, 0)) "Table Scan Access",
       sum(decode(NAME, 'table fetch continued row', value, 0)) "Chained Row Access",
       sum(decode(NAME, 'table fetch by rowid', value, 0)) "Index Access",
       round(sum(decode(NAME, 'table fetch continued row', value, 0)) 
       / (sum(decode(NAME, 'table fetch by rowid', value, 0)) + sum(decode(NAME, 'table scan rows gotten', value, 0))) * 100, 5) "Ratio"
  from V$SYSSTAT;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Controlfile Info
prompt ********************************************************** 

select NAME as "Control File Locations"
  from V$CONTROLFILE;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Tablespace Usage
prompt ********************************************************** 

select a.TABLESPACE_NAME,
       round((a.ASGN_BYTES-b.FREE_BYTES)/1024/1024, 2) as USED_MB,
       round((a.ASGN_BYTES-b.FREE_BYTES)/1024/1024, 2) as USED_MB,
       round(b.FREE_BYTES/1024/1024, 2) as FREE_MB,
       round(a.ASGN_BYTES/1024/1024, 2) as ASGN_MB,
       round((a.ASGN_BYTES-b.FREE_BYTES)/a.ASGN_BYTES, 2) as RATIO_ASGN,
       round(c.MAX_BYTES/1024/1024, 2) as MAX_MB,
       round((a.ASGN_BYTES-b.FREE_BYTES)/c.MAX_BYTES, 2) as RATIO_OF_MAX
  from (select TABLESPACE_NAME,
               sum(BYTES) as ASGN_BYTES
          from DBA_DATA_FILES
         group by TABLESPACE_NAME) a ,
       (select NAME as TABLESPACE_NAME,
               SUM_BLOCKS*BLOCKSIZE as FREE_BYTES
          from (select TABLESPACE_ID,
                       sum(BLOCKS) SUM_BLOCKS
                  from DBA_LMT_FREE_SPACE
                 group by TABLESPACE_ID) a,
               SYS.TS$ b
         where a.TABLESPACE_ID = b.TS#) b,
       (select TABLESPACE_NAME,
               sum(decode(MAXBYTES, 0, BYTES, MAXBYTES)) as MAX_BYTES
          from DBA_DATA_FILES
         group by TABLESPACE_NAME) c
 where 1=1
   and a.TABLESPACE_NAME=b.TABLESPACE_NAME
   and a.TABLESPACE_NAME=c.TABLESPACE_NAME
 order by RATIO_ASGN desc;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Datafile Read/Write I/O
prompt ********************************************************** 

col NAME form a80

select NAME "Name" ,
       PHYRDS "Physical Reads" ,
       PHYWRTS "Physical Writes" ,
       PHYRDS+PHYWRTS "Total Block IO" ,
       trunc(PHYRDS/READ_SUM*100, 2) "Read (%)" ,
       trunc(PHYWRTS/WRITE_SUM*100, 2) "Write (%)" ,
       trunc((PHYRDS+PHYWRTS)/(READ_SUM+WRITE_SUM)*100,2) "Total IO (%)"
  from V$FILESTAT a,
       V$DATAFILE b,
       (select sum(PHYRDS) READ_SUM,
               sum(PHYWRTs) WRITE_SUM
          from V$FILESTAT ) c
 where a.FILE# = b.FILE#
 order by 7 desc;
 
clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Monitor Session Idle Time
prompt ********************************************************** 

col SID      form 999999
col USERNAME form a10 truncated
col STATUS   form a1  truncated
col LOGON    form a17
col IDLE     form a9
col PROGRAM  form a30 truncated

select SID,
       USERNAME,
       STATUS,
       to_char(LOGON_TIME, 'dd-mm-yy hh:mi:ss') "LOGON Time",
       floor(LAST_CALL_ET/3600)||':'|| floor(mod(LAST_CALL_ET, 3600)/60)||':'|| mod(mod(LAST_CALL_ET, 3600), 60) "IDLE",
       PROGRAM
  from V$SESSION
 where TYPE='USER'
 order by LAST_CALL_ET;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Redo Log Info
prompt **********************************************************

col GROUP#      form 9999     heading 'Group'  
col MEMBER      form a70      heading 'Member' justify c 
col STATUS      form a10      heading 'Status' justify c       
col ARCHIVED    form a10      heading 'Archived'       
col FSIZE       form 9999     heading 'Size (MB)' 
 
select l.GROUP#,
       MEMBER,
       ARCHIVED,
       l.STATUS,
       (BYTES/1024/1024) FSIZE
  from V$LOG l,
       V$LOGFILE f
 where f.GROUP# = l.GROUP#
 order by 1, 2;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Session using Temp
prompt **********************************************************

col USERNAME form a20
col TABLESPACE form a20

select s.SID,
       s.USERNAME,
       u.TABLESPACE,
       u.CONTENTS,
       u.EXTENTS,
       u.BLOCKS,
       (select SQL_TEXT
          from V$SQL
         where ADDRESS = s.SQL_ADDRESS) SQL
  from V$SESSION s,
       V$TEMPSEG_USAGE u
 where s.SADDR = u.SESSION_ADDR
   and u.CONTENTS = 'TEMPORARY';

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Redo Log Switch Info
prompt **********************************************************

col NAME form a20

prompt 1. Log Switch Comparison

select 'Last Month' as Name,
       count(*) Counts
  from V$LOG_HISTORY
 where FIRST_TIME between trunc(SYSDATE-30, 'month') and last_day(trunc(SYSDATE-30))+0.99999
 union all
select 'This Month',
       count(*)
  from V$LOG_HISTORY
 where FIRST_TIME between trunc(SYSDATE, 'month') and last_day(trunc(SYSDATE))+0.99999;

prompt   
prompt 2. This Week Log Switch Counts

break on report
compute sum label total of cnt on report

select THREAD#,
       to_char(FIRST_TIME, 'YYYY/MM/DD') day,
       count(*) Counts
  from V$LOG_HISTORY
 where FIRST_TIME between sysdate -6 and sysdate
 group by THREAD#,
       to_char(FIRST_TIME, 'YYYY/MM/DD')
 order by 1, 2;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Resource Limit
prompt **********************************************************

column resource_name      form a30;
column Curr_Val           form 9,999,999,999;
column Max_Val            form 9,999,999,999;
column Init_Allo          form a10;
column Limit_Val          form a10;

select RESOURCE_NAME,
       CURRENT_UTILIZATION as CURR_VAL,
       MAX_UTILIZATION as MAX_VAL,
       INITIAL_ALLOCATION as INIT_ALLO,
       LIMIT_VALUE as LIMIT_VAL
  from V$RESOURCE_LIMIT;

clear columns;

prompt   
prompt   
prompt ********************************************************** 
prompt *****     Current PGA, UGA Memory Size
prompt **********************************************************

-- set pause on
column sid heading 'sid' format 99999
column username heading 'username' format a8
column pgm heading 'program' format a25
column terminal heading 'terminal' format a8
column pga heading 'PGA session memory' format a11
column uga heading 'UGA session memory' format a11
column pga_sum heading 'SUM PGA mem' format a12
column uga_sum heading 'SUM UGA mem' format a12
column pga_max heading 'Max PGA session memory' format a15
column uga_max heading 'Max UGA session memory' format a15
column pga_m_sum heading 'Sum Max PGA session memory' format a11
column uga_m_sum heading 'Sum Max UGA session memory' format a11

prompt 1. Current pga, uga session memory

select a.sid, a.username, substr(a.program, 1, 25) as pgm, a.terminal,
max(decode(c.name, 'session pga memory', trunc(value/1000)||'K'1024/1024), 0))||'M' pga,
max(decode(c.name, 'session uga memory', trunc(value/1024/10001024)||'K', 0))||'M' uga
from v$session a, v$sesstat b, v$statname c
where a.sid = b.sid
and b.statistic# = c.statistic#
and c.name like 'session%'
group by a.sid, a.username, substr(a.program, 1, 25), a.terminal;

prompt   
prompt 2. Sum of current pga, uga session memory

select 'Current PGA, UGA session memory SUM:' as sum,
sum(decode(c.name, 'session pga memory', trunc(value/1024/10001024),0))||'KM' pga_sum,
sum(decode(c.name, 'session uga memory', trunc(value/1024/10001024),0))||'KM' uga_sum
from v$session a, v$sesstat b, v$statname c
where a.sid = b.sid
and b.statistic# = c.statistic#
and c.name like 'session%';

prompt   
prompt 3. Max(peak) pga, pga session memory

select a.sid, a.username, substr(a.program, 1, 25) as pgm, a.terminal,
max(decode(c.name, 'session pga memory max', trunc(value/1024/10001024)||'K', 0))||'M' pga_max,
max(decode(c.name, 'session uga memory max', trunc(value/1024/10001024)||'K', 0))||'M' uga_max
from v$session a, v$sesstat b, v$statname c
where a.sid = b.sid
and b.statistic# = c.statistic#
and c.name like 'session%'
group by a.sid, a.username, substr(a.program, 1, 25), a.terminal;

prompt   
prompt 4. Sum of max(peak) pga, uga session memory

select 'Max(peak) PGA, UGA session memory SUM:' as sum,
sum(decode(c.name, 'session pga memory max', trunc(value/1024/10001024), 0))||'KM' pga_m_sum,
sum(decode(c.name, 'session uga memory max', trunc(value/1024/10001024), 0))||'KM' uga_m_sum
from v$session a, v$sesstat b, v$statname c
where a.sid = b.sid
and b.statistic# = c.statistic#
and c.name like 'session%';
 
clear columns;

PROMPT   
PROMPT   

...