.comment-link {margin-left:.6em;}

Tuesday, May 17, 2005

Statspack - Setup

Discutindo com alguns colegas e ao longo da carreira, na maioria das vezes, vi o uso do statspack de forma ineficiente, seja pela janela de tempo que o DBA coloca, seja pela interpretação do conteúdo.

Statspacks foi introduzido oficialmente na versão 8.1.6, veio substituir os scripts UTLBSTAT e UTLESTAT. Basicamente, statspack são snapshot (fotos) de como sua instância está se comportando em dado momento, com habilidade de salvar as estatísticas em um esquema de dados. Portanto, podemos recuperar resultados, medir, fazer benchmark por alguma alteração, provar que um sistema está melhor ou pior devido um tuning ou patch, etc.

O setup do statspack necessita do sys para criar objetos e dar privilégios. No manual estão todos os passos, aqui vou resumir e comentar o que achei relevante. Fiz a instalação no 10g em um notebook com Windows XP como sistema operacional.

Primeiro criei uma tablespace exclusiva para o PERFSTAT (esquema) do statspack, achei mais fácil dessa maneira para fins administrativos. Gosto de separar aplicações por tablespace, quando possível.

Esta tablespace eu criei com 100m e deixei autoextend on, ela chegou a 132m. No script spctab.sql, a criação dos objetos têm cláusulas initial com 100k, 1m, 3m e 5m, eu não alterei o default initial dos scripts de criação dos objetos, eu poderia ter editado os scripts para tomar menos espaço, isso depende do seu sistema, como atualmente eu não tenho nenhum sistema na minha instância, deixei tudo default.

perfstat@ORA10G> @tbsfree
%
% MaxPoss Max
Tablespace Name KBytes Used Free Used Largest Kbytes Used
---------------- ------------ ------------ ------------ ------ ------------ ------------ ------
SYSAUX 122,880 88,256 34,624 71.8 28,224 307,200 40.0
SYSTEM 307,200 238,208 68,992 77.5 68,544 512,000 60.0
UNDOTBS1 204,800 18,880 185,920 9.2 185,280 512,000 40.0
USERS 15,360 768 14,592 5.0 14,464 30,720 50.0
PERFSTAT_TBS 132,928 132,928 0 100.0 0 33,554,416 .4
TEMP 20,480 20,480 0 100.0 0 512,000 4.0
------------ ------------ ------------
sum 803,648 499,520 304,128

6 rows selected.

Depois, tudo que fiz foi conectar-me como sys e executar o script $ORACLE_HOME/rdbms/admin/spcreate.sql, responder algumas perguntas e esperar ele executar a criação. O spcreate.sql é o coordenador da criação, na verdade ele chama três outros scritps nesta ordem: spcusr.sql, spctab.sql e spcpkg.sql.

spcusr.sql
- Cria o usuário (esquema) que irá abrigar os objetos de banco de dados do statspack. Este script pergunta senha do PERFSTAT, tablespace default e temporária (estamos proibidos de usar SYSTEM aqui tanto para default como para temporária). Ademais, o script cria views, synonyms e dá privilégios.

spctab.sql
- Cria os objetos (tabelas e índices) no esquema PERFSTAT para armazenar as estatísticas dos snapshots.

spcpkg.sql
- Cria os pacotes de estatística.

Após a criação do esquema, vemos algo parecido com:

perfstat@ORA10G>
perfstat@ORA10G> @dbls %

OBJECT_TYPE OBJECT_NAME S TABLESPACE_NAME
------------ ------------------------------ - ------------------------------
INDEX STATS$BG_EVENT_SUMMARY_PK PERFSTAT_TBS
STATS$BUFFERED_QUEUES_PK PERFSTAT_TBS
STATS$BUFFERED_SUBSCRIBERS_PK PERFSTAT_TBS
STATS$BUFFER_POOL_STATS_PK PERFSTAT_TBS
STATS$CLASS_CACHE_TRANSFER_PK PERFSTAT_TBS
STATS$CR_BLOCK_SERVER_PK PERFSTAT_TBS
STATS$CURRENT_BLOCK_SERVER_PK PERFSTAT_TBS
STATS$DATABASE_INSTANCE_PK PERFSTAT_TBS
STATS$DB_CACHE_ADVICE_PK PERFSTAT_TBS
STATS$DLM_MISC_PK PERFSTAT_TBS
STATS$ENQUEUE_STATISTICS_PK PERFSTAT_TBS
STATS$EVENT_HISTOGRAM_PK PERFSTAT_TBS
STATS$FILESTATXS_PK PERFSTAT_TBS
STATS$FILE_HISTOGRAM_PK PERFSTAT_TBS
STATS$IDLE_EVENT_PK PERFSTAT_TBS
STATS$INSTANCE_RECOVERY_PK PERFSTAT_TBS
STATS$JAVA_POOL_ADVICE_PK PERFSTAT_TBS
STATS$LATCH_CHILDREN_PK PERFSTAT_TBS
STATS$LATCH_MISSES_SUMMARY_PK PERFSTAT_TBS
STATS$LATCH_PARENT_PK PERFSTAT_TBS
STATS$LATCH_PK PERFSTAT_TBS
STATS$LEVEL_DESCRIPTION_PK PERFSTAT_TBS
STATS$LIBRARYCACHE_PK PERFSTAT_TBS
STATS$OSSTAT_PK PERFSTAT_TBS
STATS$PARAMETER_PK PERFSTAT_TBS
STATS$PGA_TARGET_ADVICE_PK PERFSTAT_TBS
STATS$PROPAGATION_RECEIVER_PK PERFSTAT_TBS
STATS$PROPAGATION_SENDER_PK PERFSTAT_TBS
STATS$RESOURCE_LIMIT_PK PERFSTAT_TBS
STATS$ROLLSTAT_PK PERFSTAT_TBS
STATS$ROWCACHE_SUMMARY_PK PERFSTAT_TBS
STATS$RULE_SET_PK PERFSTAT_TBS
STATS$SEG_STAT_OBJ_PK PERFSTAT_TBS
STATS$SEG_STAT_PK PERFSTAT_TBS
STATS$SESSION_EVENT_PK PERFSTAT_TBS
STATS$SESSTAT_PK PERFSTAT_TBS
STATS$SESS_TIME_MODEL_PK PERFSTAT_TBS
STATS$SGASTAT_U PERFSTAT_TBS
STATS$SGA_PK PERFSTAT_TBS
STATS$SHARED_POOL_ADVICE_PK PERFSTAT_TBS
STATS$SNAPSHOT_PK PERFSTAT_TBS
STATS$SQLTEXT_PK PERFSTAT_TBS
STATS$SQL_PGASTAT_PK PERFSTAT_TBS
STATS$SQL_PLAN_PK PERFSTAT_TBS
STATS$SQL_PLAN_USAGE_HV PERFSTAT_TBS
STATS$SQL_PLAN_USAGE_PK PERFSTAT_TBS
STATS$SQL_STATISTICS_PK PERFSTAT_TBS
STATS$SQL_SUMMARY_PK PERFSTAT_TBS
STATS$SQL_WORKAREA_HIST_PK PERFSTAT_TBS
STATS$STATSPACK_PARAMETER_PK PERFSTAT_TBS
STATS$STREAMS_APPLY_SUM_PK PERFSTAT_TBS
STATS$STREAMS_CAPTURE_PK PERFSTAT_TBS
STATS$SYSSTAT_PK PERFSTAT_TBS
STATS$SYSTEM_EVENT_PK PERFSTAT_TBS
STATS$SYS_TIME_MODEL_PK PERFSTAT_TBS
STATS$TEMPSTATXS_PK PERFSTAT_TBS
STATS$TEMP_HISTOGRAM_PK PERFSTAT_TBS
STATS$THREAD_PK PERFSTAT_TBS
STATS$TIME_MODEL_STATNAME_PK PERFSTAT_TBS
STATS$UNDOSTAT_PK PERFSTAT_TBS
STATS$WAITSTAT_PK PERFSTAT_TBS

PACKAGE STATSPACK

PACKAGE BODY STATSPACK

SEQUENCE STATS$SNAPSHOT_ID

SYNONYM V$PROPAGATION_RECEIVER
V$PROPAGATION_SENDER

TABLE STATS$BG_EVENT_SUMMARY PERFSTAT_TBS
STATS$BUFFERED_QUEUES PERFSTAT_TBS
STATS$BUFFERED_SUBSCRIBERS PERFSTAT_TBS
STATS$BUFFER_POOL_STATISTICS PERFSTAT_TBS
STATS$CLASS_CACHE_TRANSFER PERFSTAT_TBS
STATS$CR_BLOCK_SERVER PERFSTAT_TBS
STATS$CURRENT_BLOCK_SERVER PERFSTAT_TBS
STATS$DATABASE_INSTANCE PERFSTAT_TBS
STATS$DB_CACHE_ADVICE PERFSTAT_TBS
STATS$DLM_MISC PERFSTAT_TBS
STATS$ENQUEUE_STATISTICS PERFSTAT_TBS
STATS$EVENT_HISTOGRAM PERFSTAT_TBS
STATS$FILESTATXS PERFSTAT_TBS
STATS$FILE_HISTOGRAM PERFSTAT_TBS
STATS$IDLE_EVENT PERFSTAT_TBS
STATS$INSTANCE_RECOVERY PERFSTAT_TBS
STATS$JAVA_POOL_ADVICE PERFSTAT_TBS
STATS$LATCH PERFSTAT_TBS
STATS$LATCH_CHILDREN PERFSTAT_TBS
STATS$LATCH_MISSES_SUMMARY PERFSTAT_TBS
STATS$LATCH_PARENT PERFSTAT_TBS
STATS$LEVEL_DESCRIPTION PERFSTAT_TBS
STATS$LIBRARYCACHE PERFSTAT_TBS
STATS$OSSTAT PERFSTAT_TBS
STATS$PARAMETER PERFSTAT_TBS
STATS$PGASTAT PERFSTAT_TBS
STATS$PGA_TARGET_ADVICE PERFSTAT_TBS
STATS$PROPAGATION_RECEIVER PERFSTAT_TBS
STATS$PROPAGATION_SENDER PERFSTAT_TBS
STATS$RESOURCE_LIMIT PERFSTAT_TBS
STATS$ROLLSTAT PERFSTAT_TBS
STATS$ROWCACHE_SUMMARY PERFSTAT_TBS
STATS$RULE_SET PERFSTAT_TBS
STATS$SEG_STAT PERFSTAT_TBS
STATS$SEG_STAT_OBJ PERFSTAT_TBS
STATS$SESSION_EVENT PERFSTAT_TBS
STATS$SESSTAT PERFSTAT_TBS
STATS$SESS_TIME_MODEL PERFSTAT_TBS
STATS$SGA PERFSTAT_TBS
STATS$SGASTAT PERFSTAT_TBS
STATS$SHARED_POOL_ADVICE PERFSTAT_TBS
STATS$SNAPSHOT PERFSTAT_TBS
STATS$SQLTEXT PERFSTAT_TBS
STATS$SQL_PLAN PERFSTAT_TBS
STATS$SQL_PLAN_USAGE PERFSTAT_TBS
STATS$SQL_STATISTICS PERFSTAT_TBS
STATS$SQL_SUMMARY PERFSTAT_TBS
STATS$SQL_WORKAREA_HISTOGRAM PERFSTAT_TBS
STATS$STATSPACK_PARAMETER PERFSTAT_TBS
STATS$STREAMS_APPLY_SUM PERFSTAT_TBS
STATS$STREAMS_CAPTURE PERFSTAT_TBS
STATS$SYSSTAT PERFSTAT_TBS
STATS$SYSTEM_EVENT PERFSTAT_TBS
STATS$SYS_TIME_MODEL PERFSTAT_TBS
STATS$TEMPSTATXS PERFSTAT_TBS
STATS$TEMP_HISTOGRAM PERFSTAT_TBS
STATS$THREAD PERFSTAT_TBS
STATS$TIME_MODEL_STATNAME PERFSTAT_TBS
STATS$UNDOSTAT PERFSTAT_TBS
STATS$WAITSTAT PERFSTAT_TBS


126 rows selected.


Próximos passo (artigo), vamos discutir sobre o tempo (janela) que um snapshot deveria tomar para ser eficiente, onde os resultados possam ser tangíveis, quais são os principais tópicos e como interpretá-los.

Abraço,
Comments:
não entedi o comando @tbsfree...
vc já tem um script pronto que gera essa saida ????
 
Sim eu uso esse script algumas vezes. Voce pode encontrá-lo aqui
 
Hi, this message is to the guy who has been visiting us lately. He comes from NY and the host is qdx.questdiagnostics.com - If you prefer an entire article in English, please drop me a note at marcio.portes@uol.com.br I'll be glad to help you to understand either of my articles or any other if you have any question. Feel free to post it in English as well.

Thanks for the visit!
Regards,
Marcio Portes
 
Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?