Check Tablespace Size
select nvl(b.tablespace_name,
select nvl(b.tablespace_name,
nvl(a.tablespace_name,'UNKOWN')) Tablespace_Name,
round(nvl(kbytes_free,0),2) free_space,
round(kbytes_alloc-nvl(kbytes_free,0),2) used_space,
round(kbytes_alloc,2) total_space,
round(((kbytes_alloc-nvl(kbytes_free,0))/kbytes_alloc)*100,2) pct_used
from ( select sum(bytes)/1024/1024 Kbytes_free,
max(bytes)/1024/1024 largest,
tablespace_name
from sys.dba_free_space
group by tablespace_name ) a,
( select sum(bytes)/1024/1024 Kbytes_alloc,
tablespace_name
from sys.dba_data_files
group by tablespace_name order by tablespace_name )b
where a.tablespace_name (+) = b.tablespace_name
order by 5 desc;
Check
Invalid objects in Schemaround(nvl(kbytes_free,0),2) free_space,
round(kbytes_alloc-nvl(kbytes_free,0),2) used_space,
round(kbytes_alloc,2) total_space,
round(((kbytes_alloc-nvl(kbytes_free,0))/kbytes_alloc)*100,2) pct_used
from ( select sum(bytes)/1024/1024 Kbytes_free,
max(bytes)/1024/1024 largest,
tablespace_name
from sys.dba_free_space
group by tablespace_name ) a,
( select sum(bytes)/1024/1024 Kbytes_alloc,
tablespace_name
from sys.dba_data_files
group by tablespace_name order by tablespace_name )b
where a.tablespace_name (+) = b.tablespace_name
order by 5 desc;
Check Temp Tablespace Size
select TABLESPACE_NAME, sum(bytes_free/1024/1024) "Free Space", sum(bytes_used/1024/1024) "Used Space",
sum(bytes_free/1024/1024) + sum(bytes_used/1024/1024) "Total Space",
(sum(bytes_used/1024/1024)/(sum(bytes_free/1024/1024) + sum(bytes_used/1024/1024)) * 100) "Percentage used"
from v$temp_space_header group by TABLESPACE_NAME;
sum(bytes_free/1024/1024) + sum(bytes_used/1024/1024) "Total Space",
(sum(bytes_used/1024/1024)/(sum(bytes_free/1024/1024) + sum(bytes_used/1024/1024)) * 100) "Percentage used"
from v$temp_space_header group by TABLESPACE_NAME;
set
pagesize 1000
select 'alter '||object_type ||' '||object_name||' compile; ' from user_objects where status = 'INVALID';
select 'alter '||owner ||'.'||object_type ||' '||object_name||' compile; ' from DBA_objects where status = 'INVALID' order by owner;
select 'alter '||object_type ||' '||object_name||' compile; ' from user_objects where status = 'INVALID';
select 'alter '||owner ||'.'||object_type ||' '||object_name||' compile; ' from DBA_objects where status = 'INVALID' order by owner;
Drop
All boject in schema
set
line 200
set pagesize 10000
select 'drop '||object_type||' '||object_name||decode(object_type,'TABLE',' cascade constraints ',' ')||';' from obj where object_type NOT IN ('INDEX'
,'PACKAGE BODY','TABLE PARTITION','INDEX PARTITION','LOB') order by decode(object_type,'TABLE',1,'SEQUENCE',2),object_name;
set pagesize 10000
select 'drop '||object_type||' '||object_name||decode(object_type,'TABLE',' cascade constraints ',' ')||';' from obj where object_type NOT IN ('INDEX'
,'PACKAGE BODY','TABLE PARTITION','INDEX PARTITION','LOB') order by decode(object_type,'TABLE',1,'SEQUENCE',2),object_name;
Check
Locking on Db
col OBJECT_NAME for a30
col TERMINAL for a10
set line 200
set pagesize 1000
col OWNER for a15
col USERNAME for a20
SELECT a.sid,a.serial#,
a.username,a.status, b.OWNER,substr(b.object_name,1,40) object_name,
c.os_user_name,a.terminal,b.object_id,
a.sql_id , to_char(a.LOGON_TIME,'DD/MM/YYYY HH24:MI:SS')
from v$session a, dba_objects b,
v$locked_object c
where a.sid = c.session_id
and b.object_id = c.object_id;
Row
Cache Hit Ratio
SELECT
(1 - (SUM (getmisses) / SUM (gets))) * 100 "Row Hit Ratio" FROM
v$rowcache;
Buffer
Cache Hit Ratio
select
round((sum(decode(name, 'consistent gets',value, 0)) +
sum(decode(name, 'db block gets',value, 0)) -
sum(decode(name, 'physical reads',value, 0))) /
(sum(decode(name, 'consistent gets',value, 0)) + sum(decode(name, 'db block gets',value, 0))) * 100,2) "Buffer Hit Ratio"
from v$sysstat;
sum(decode(name, 'db block gets',value, 0)) -
sum(decode(name, 'physical reads',value, 0))) /
(sum(decode(name, 'consistent gets',value, 0)) + sum(decode(name, 'db block gets',value, 0))) * 100,2) "Buffer Hit Ratio"
from v$sysstat;
Sessions
Using Temp Space
col SPID for a10
col MODULE for a30
col PROGRAM for a20
col TABLESPACE for a20
col SID_SERIAL for a20
col OSUSER for a10
col TABLESPACE for a10
col USERNAME for a10
set line 200
select * from (SELECT S.sid || ','
|| S.serial# sid_serial, S.username, S.osuser, P.spid, S.module,P.program,
SUM (T.blocks) * TBS.block_size /
1024 / 1024 mb_used,
T.tablespace,COUNT(*) statements
FROM v$sort_usage T, v$session S,
dba_tablespaces TBS, v$process P
WHERE T.session_addr = S.saddr AND
S.paddr = P.addr AND T.tablespace = TBS.tablespace_name
GROUP BY S.sid, S.serial#,
S.username, S.osuser, P.spid, S.module,
P.program, TBS.block_size,
T.tablespace ) where mb_used > 100
order by mb_used;
Check
long running sessions
set lines 154 verify off
column sid format 999999
column opname format a16
column target format a30
column username format a12
column TIME_REMAINING format
999999 heading "Time|Remain"
column ELAPSED_SECONDS format
999999 heading "Elaps.|Sec"
column units format a6
column start_time heading
"Start|Time|ddmon hh:mi" for a11
column LAST_UPDATE_TIME heading
"Last|Updated|ddmon hh:mi" for a11
column sofar format 9999999
column TOTALWORK format 9999999
heading "Total|Work"
column qcsid format 99999
column work_done format a15
heading "So Far/|TotalWork"
column sid_qcsid format a11
heading "sid,qcsid"
set long 999999
set line 200
set pagesize 1000
select sid, SERIAL# ||','||qcsid
sid_qcsid, decode(opname, 'Index Fast Full Scan', 'Index FFS', opname) opname,
target, sofar || '/' || TOTALWORK work_done,
UNITS, to_char(START_TIME, 'ddmon hh24:mi') start_time,
to_char(LAST_UPDATE_TIME, 'ddmon hh24:mi')
LAST_UPDATE_TIME, TIME_REMAINING, ELAPSED_SECONDS,
USERNAME, SQL_ID--, QCSID
from v$session_longops where
time_remaining > 0
/
select SQL_TEXT from v$sql where
SQL_ID='&SQL_ID';
Check
Load in DB
select ss.sid,ss.serial#,
ss.username, ss.osuser,ss.program, ss.sql_id,se.SID, VALUE/100
cpu_usage_seconds
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
and
ss.status='ACTIVE'
and
ss.username is not null
order by VALUE desc;
Check
Rows Processed
select SQL_ID,SID,SQL_HASH_VALUE
from v$session where SID =&sid;
select
SQL_ID,HASH_VALUE,ROWS_PROCESSED from v$SQL where SQL_ID='cpnubrh2gbmx4';
Check
Recent DDLs Modifications
set pagesize 200 colsep ' '
col Owner format a20
col Object_Name format a30
col Last_DDL format a20
break on Owner
select Owner, Object_type
Object_Name,
Timestamp Last_DDL
from DBA_OBJECTS
where SysDate -
TO_DATE(TimeStamp,'YYYY-MM-DD:HH24:MI:SS') < 1
order by Owner, Object_Name
/
Explain
Plan
EXPLAIN PLAN FOR SELECT last_name
FROM employees;
SELECT PLAN_TABLE_OUTPUT FROM
TABLE(DBMS_XPLAN.DISPLAY());
Check
User Usage
SELECT owner, sum(bytes)/1024/1024
total_size FROM dba_segments
GROUP BY owner ORDER BY total_size
DESC;
List
the Objects Accessed by SID
set pagesize 300
select
sid,serial#,username,status, process from v$session
WHERE USERNAME IS NOT NULL
order by STATUS DESC;
col sid format 999
col owner format a10
col object format a20
col type format a10
set linesize 300
/* ENTER THE SID TO CHECK */
select sid,owner,object,type
from v$access where sid = &sid
order by owner,type;
Database
General Check
spool
on;
spool
c:\Database_check.txt;
set
heading on;
prompt
Prompt
'Database Information'
prompt
set
line 200
col
PLATFORM_NAME for a50
select
DBID, NAME, CREATED, log_mode,
DB_UNIQUE_NAME,DATABASE_ROLE, PLATFORM_NAME, FLASHBACK_ON from v$database;
prompt
Prompt
'Log file check'
prompt
col
MEMBER for a50
set
lines 120;
select
l.GROUP# GP#,l.MEMBERS "#of Members", l.BYTES/1024/1024
"size(Mb)",l.STATUS "Status" , l.ARCHIVED "ARC"
,lf.type "TYPE" ,lf.member "MEMBER" from
v$log
l, v$logfile lf
where
l.GROUP# = lf.GROUP#;
select
nvl(b.tablespace_name,
nvl(a.tablespace_name,'UNKOWN'))
Tablespace_Name,
round(nvl(kbytes_free,0),2) free_space,
round(kbytes_alloc-nvl(kbytes_free,0),2) used_space,
round(kbytes_alloc,2) total_space,
round(((kbytes_alloc-nvl(kbytes_free,0))/kbytes_alloc)*100,2) pct_used
from
( select sum(bytes)/1024/1024
Kbytes_free,
max(bytes)/1024/1024 largest,
tablespace_name
from
sys.dba_free_space
group by tablespace_name ) a,
(
select sum(bytes)/1024/1024 Kbytes_alloc,
tablespace_name
from sys.dba_data_files
group by tablespace_name order by
tablespace_name )b
where
a.tablespace_name (+) = b.tablespace_name
order
by 5 desc;
prompt
prompt
'All Datafile and Temp file size and Status'
prompt
set
lines 200
col
name for a66
select
df.FILE#,df.NAME,df.STATUS,df.BYTES/1024/1024"size in MB",ts.NAME
from
v$datafile df,V$tablespace ts
where
df.TS#=ts.TS#
union
all
select
tf.FILE#, tf.NAME,tf.STATUS,tf.BYTES/1024/1024"size in MB",ts.NAME
from
V$tablespace ts,v$tempfile tf
where
tf.TS#=ts.TS#;
Prompt
col
TABLESPACE_NAME for a22
COL
file_name for a60
set
lines 200
select
FILE_ID,FILE_NAME,TABLESPACE_NAME,BYTES/1024/1024"size in
MB",STATUS,AUTOEXTENSIBLE,INCREMENT_BY,MAXBYTES
from
dba_data_files
order
by FILE_ID;
prompt
prompt
'Temp Tablespace Usage'
prompt
select
TABLESPACE_NAME, sum(bytes_free/1024/1024) "Free Space",
sum(bytes_used/1024/1024) "Used Space",
sum(bytes_free/1024/1024)
+ sum(bytes_used/1024/1024) "Total Space",
(sum(bytes_used/1024/1024)/(sum(bytes_free/1024/1024)
+ sum(bytes_used/1024/1024)) * 100) "Percentage used"
from
v$temp_space_header group by TABLESPACE_NAME;
prompt
select
TABLESPACE_NAME,SEGMENT_BLOCK,CURRENT_USERS,TOTAL_BLOCKS,USED_BLOCKS,FREE_BLOCKS,MAX_BLOCKS,MAX_USED_BLOCKS,MAX_SORT_BLOCKS
from v$sort_segment;
prompt
prompt
'Temp File Details'
prompt
col
NAME for a55;
select
tf.NAME, tsh.TABLESPACE_NAME, tf.STATUS, tf.ENABLED from v$tempfile tf ,
v$temp_space_header tsh
where
tf.FILE# = tsh.FILE_ID;
prompt
prompt
'Library Cache Hit Ratio'
prompt
select
(1-sum(reloads)/(sum(reloads)+sum(pins)))*100 as "Library Hit Ratio"
from v$librarycache;
prompt
prompt
'Buffer Cache Hit Ratio'
prompt
select round((sum(decode(name, 'consistent
gets',value, 0)) +
sum(decode(name, 'db block
gets',value, 0)) -
sum(decode(name, 'physical
reads',value, 0))) /
(sum(decode(name, 'consistent
gets',value, 0)) + sum(decode(name, 'db block gets',value, 0))) * 100,2)
"Buffer Hit Ratio"
from v$sysstat;
prompt
prompt
'Row Cache Hit Ratio'
prompt
SELECT
(1 - (SUM (getmisses) / SUM (gets))) * 100 "Row Hit Ratio" FROM
v$rowcache;
prompt
prompt
'Object of Non-sys and Non-system user exists in SYSTEM/SYSAUX tablespace'
prompt
set
lines 25;
select
count(SEGMENT_NAME)
from
sys.dba_segments
where
owner not in ('MGMT_VIEW')
and
tablespace_name='SYSTEM'
and
segment_name not like '%SYS%' and segment_name not like '%$%'
and
segment_type not like '%PARTITION%';
prompt
prompt
'Unanyalized indexes with analysed tables'
prompt
set
lines 25;
select
count(TABLE_NAME)
from dba_indexes
where
owner
not in ('MGMT_VIEW') AND
last_analyzed< sysdate -7
and
--Analyzed
tables
TABLE_NAME
not in
(
--Unanalyzed
tables
select
TABLE_NAME
from dba_tables
where owner not in ('MGMT_VIEW')
--and
owner in ('TBAADM','CUSTOM')
AND
last_analyzed< sysdate -7
)
order
by last_analyzed;
prompt
prompt
'Number of Unanalyzed tables '
prompt
set
lines 100;
select
'TOTAL ' || count(TABLE_NAME) || ' TABLES' ,
'Not
Analyzed during last Seven days' "Comments"
from dba_tables
where owner not in ('MGMT_VIEW')
--and
owner in ('TBAADM','CUSTOM')
AND
last_analyzed< sysdate -7;
prompt
prompt
'Number of Unanalyzed Indexes '
prompt
set
lines 100;
select
'TOTAL ' || count(INDEX_NAME) || ' INDEXES' ,
'Not
Analyzed during last Seven days' "Comments"
from dba_indexes
where owner not IN ('MGMT_VIEW')
--and
owner in ('TBAADM','CUSTOM')
AND
last_analyzed< sysdate -7;
prompt
prompt
'Check Constraints Validations'
prompt
select
owner, constraint_name, constraint_type, table_name, status, invalid from dba_constraints
where
owner not in ('SYS','SYSTEM','DBSNMP','TSMSYS','OUTLN','DIP') and
status='DISABLE';
prompt
prompt
'Check Undo management'
prompt
set
line 200
col
name for a50
col
value for a50
select
name, value from v$parameter where value IS NOT NULL and name like '%undo%';
prompt
prompt
'SQL memory management'
prompt
select
name, value from v$parameter where value IS NOT NULL and name like '%pga%';
select
name, value from v$parameter where value IS NOT NULL and name like
'%workarea%';
prompt
prompt
'Resumable space allocation'
prompt
select
name, value from v$parameter where value IS NOT NULL and name like
'%resumable%';
prompt
prompt
'Segment Space management'
prompt
select
TABLESPACE_NAME, SEGMENT_SPACE_MANAGEMENT, STATUS from dba_tablespaces;
prompt
prompt
'SGA componant sizes'
prompt
select
name, value from v$parameter where value IS NOT NULL and name like '%size%';
spool
off;
exit
No comments:
Post a Comment