Neste artigo irei mostrar um script que encontrei no dba-oracle. Este script retorna informações uteis para um check no banco de dados.
Este script utilizará o spool (link documentação Oracle) para salvar em um arquivo txt os resultados.
Os checks feitos pelo script:
• Uptime: tempo em que a instância está aberta;
• Object Status: mostra o status dos objetos;
• Invalid Objects: mostra os objetos que estão com o status inválido (entenda mais sobre invalid object);
• Recover Files: mostra os arquivos que foram utilizados no Recover do Oracle;
• Partitioned Table: mostra as tabelas particionadas na base de dados;
• Free space in Tablespace: mostra o espaço livre das tablespaces;
• Max Extents Status: mostra o status das Max Extents;
• Any partitioned Object approaching to max extents: mostra quais objetos particionados estão próximos de chegar ao limite do seu Max Extens;
• Block Contention: mostra quais os blocks contetion que estão ocorrendo na base de dados;
• Latch Contention: mostra quias os latch contetion que estão ocorrendo na base de dados;
• Top 10 Queries using more disk reads: mostra as 10 queries que estão consumindo mais disco neste momento;
• Top 10 Queries using more buffer reads: mostra as 10 queries que estão consumindo mais buffer neste momento;
• Buffer cache hit ratio: mostra o volume de buffers consumidos pela CPU no Oracle;
• Reloads/Pins in v$librarycache: mostra o volume de Reloads/Pings na view LibraryCache;
• Get miss ratio from v$rowcache: mostra mais algumas informações sobre Ratio (mesmo link no tópico anterior);
• Redo log space request ratio in v$sysstat: mostra o espaço requerido pelo ratio dos redo logs;
• RBS Contention: mostra o RBS Contention na base de dados;
• Sorts stats: mostra os sorts stats na base de dados;
• Datafiles I/O: mostra os arquivos (datafiles) das tablespaces.
Script:
set linesize 132 set pagesize 1000 spool report.txt prompt #### Up Time #### 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 sys.v_$instance; prompt prompt prompt ################################################################################ prompt .>>>>>> Object status select object_type,status,count(*) cnt from user_objects group by object_type,status; prompt prompt prompt ################################################################################ prompt .>>>>>> Invalid objects select owner, object_type, substr(object_name,1,30) object_name from sys.dba_objects where status='INVALID' order by object_type; prompt prompt prompt ################################################################################ prompt .>>>>>> Recover files select * from sys.v_$recover_file; prompt prompt prompt ################################################################################ prompt .>>>>>> partitioned table select table_name from user_tables where partitioned='YES'; prompt prompt prompt ################################################################################ prompt .>>>>>> Free space in Tablespace Select tablespace_name,sum(bytes/1024/1024) from sys.dba_free_space group by tablespace_name; prompt prompt prompt ################################################################################ prompt .>>>>>>Max Extents Status select segment_name, segment_type, extents, max_extents from sys.dba_segments where max_extents-extents<100; prompt prompt prompt ################################################################################ prompt .>>>>>> Any partitioned Object approaching to max extents SELECT PARTITION_NAME,EXTENTS,MAX_EXTENTS,NEXT_EXTENT,max_extents-nvl(next_extent,0) FROM sys.dba_segments where max_extents-nvl(next_extent,0) < 1000 and partition_name is not null; prompt prompt prompt ################################################################################ prompt .>>>>>> Block Contention SELECT class,sum(count) total_waits, sum(time) total_time FROM v$waitstat GROUP BY class; prompt prompt prompt ################################################################################ prompt .>>>>>> Latch Contention SELECT a.name,100.*b.sleeps/b.gets ratio1,100.*b.immediate_misses/decode((b.immediate_misses+b.immediate_gets),0,1) ratio2 FROM v$latchname a, v$latch b WHERE a.latch# = b.latch# AND b.sleeps > 0; prompt prompt prompt ################################################################################ prompt .>>>>>> Top 10 Queries using more disk reads select disk_reads, sql_text from ( select disk_reads, sql_text from v$sqlarea where disk_reads > 10000 order by disk_reads desc) where rownum < 11; prompt prompt prompt ################################################################################ prompt .>>>>>> Top 10 Queries using more buffer reads select buffer_gets,sql_text from v$sqlarea where buffer_gets>10000 and rownum < 11 order by buffer_gets desc; prompt prompt prompt ################################################################################ prompt .>>>>>> Buffer cache hit ratio select (1- (sum(decode(a.name,'physical reads',value,0)))/ (sum(decode(a.name,'db block gets',value,0)) + sum(decode(a.name,'consistent gets',value,0)))) * 100 pct from v$sysstat a; prompt prompt prompt ################################################################################ prompt .>>>>>> Reloads/Pins in v$librarycache select sum(pins) "executions",sum(reloads) "cache Misses",sum(reloads)/sum(pins)*100 "Ratio" from v$librarycache; prompt prompt prompt ################################################################################ prompt .>>>>>> Get miss ratio from v$rowcache select (sum(getmisses)/sum(gets)) * 100 "Hit Ratio" from v$rowcache; prompt prompt prompt ################################################################################ prompt .>>>>>> Redo log space request ratio in v$systat select (req.value*5000)/entries.value "ratio" from v$sysstat req,v$sysstat entries where req.name='redo log space requests' and entries.name='redo entries' ; prompt prompt prompt ################################################################################ prompt .>>>>>> RBS Contention select sum(waits)/sum(gets)*100 from v$rollstat; prompt prompt prompt ################################################################################ prompt .>>>>>> sorts stats Select * from v$sysstat where name like '%sorts%'; prompt prompt prompt ################################################################################ prompt .>>>>>> datafiles I/O select name, phyrds, phywrts from v$datafile df, v$filestat fs where df.file# = fs.file# order by phyrds; prompt prompt prompt prompt spool off
Qualquer duvida referente às views que estão no script, você pode acessar este link. Neste link você pode procurar a view, que ele irá mostrar todas as descrições dos campos retornados.