Semana passada eu caí em uma situação que precisa buscar uma porção de dados de variados entre as 5 opções que eu tinha.Fiz um teste com a DBMS_RANDOM usando a função VALUE.
Ficou 10 !Do jeito que eu queria.
select f.column1,
f.column2 -- itens variados
f.column3
from dbajcc.my_tab f
where f.column1 = x
and rownum < 1000 -- um range de x linhas
order by dbms_random.value ;
Esta última linha resolveu sem problema o que eu queria.
Showing posts with label capacity planning. Show all posts
Showing posts with label capacity planning. Show all posts
Tuesday, May 18, 2010
Thursday, January 14, 2010
Oracle 10g - Capacity Planning for Database Objects - Oracle 10g and later - Part 2
Continuando o post anterior sobre Capacity Planning , vamos hoje fazer os cálculos para índice usando PL/SQL e ver como se faz isso via EM para índice e tabela.
Estimando tamanho do índice via EM
No EM é muito simples também :
Agora vamos fazer o mesmo que fizemos usando PL/SQL para estimar o tamanho do Index tst_idx001 :
Voltando a tab "General" usar o botão bem sugestivo "Estimate Index Size" :
Podem ver que é o mesmo resultado da etapa anterior usando o bloco PL/SQL 62,67KB ou 62,7KB .
Estimando tamanho do índice antes de sua criação
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@jamaica ~]$ sqlplus dbajcc
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Jan 13 21:59:31 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Enter password:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
dbajcc@OCADB on 13-JAN-10 >create table tst_index_cost as select owner,index_name,index_type from dba_indexes ;
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@jamaica ~]$ sqlplus dbajcc
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Jan 13 21:59:31 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Enter password:
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
dbajcc@OCADB on 13-JAN-10 >create table tst_index_cost as select owner,index_name,index_type from dba_indexes ;
Table created.
Elapsed: 00:00:03.29
dbajcc@OCADB on 13-JAN-10 >
dbajcc@OCADB on 13-JAN-10 >exec dbms_stats.gather_table_stats(ownname => 'DBAJCC', tabname => 'TST_INDEX_COST' , estimate_percent => 100);
Elapsed: 00:00:03.29
dbajcc@OCADB on 13-JAN-10 >
dbajcc@OCADB on 13-JAN-10 >exec dbms_stats.gather_table_stats(ownname => 'DBAJCC', tabname => 'TST_INDEX_COST' , estimate_percent => 100);
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.12
dbajcc@OCADB on 13-JAN-10 >
dbajcc@OCADB on 13-JAN-10 >
dbajcc@OCADB on 13-JAN-10 >
dbajcc@OCADB on 13-JAN-10 >
declare
2
3 ub number;
4 ab number;
5
begin
6 DBMS_SPACE.CREATE_INDEX_COST ('create unique index tst_idx001 on dbajcc.tst_index_cost(owner,index_name) tablespace users_ind ',ub,ab) ;
7
DBMS_OUTPUT.PUT_LINE('Used Bytes: ' || TO_CHAR(ub));
8 DBMS_OUTPUT.PUT_LINE('Alloc Bytes: ' || TO_CHAR(ab));
9 10 end ;
11 12 / 13
Used Bytes: 64179
Alloc Bytes: 131072
PL/SQL procedure successfully completed.
Elapsed: 00:00:01.21
dbajcc@OCADB on 13-JAN-10 >
Como visto o nosso índice tst_idx001 para a tabela tst_index_cost usará 64179 bytes ou 62,7KB para dados e ocupará 131072 bytes ou 128 KB dentro da tablespace users_ind .
Elapsed: 00:00:00.12
dbajcc@OCADB on 13-JAN-10 >
dbajcc@OCADB on 13-JAN-10 >
dbajcc@OCADB on 13-JAN-10 >
dbajcc@OCADB on 13-JAN-10 >
declare
2
3 ub number;
4 ab number;
5
begin
6 DBMS_SPACE.CREATE_INDEX_COST ('create unique index tst_idx001 on dbajcc.tst_index_cost(owner,index_name) tablespace users_ind ',ub,ab) ;
7
DBMS_OUTPUT.PUT_LINE('Used Bytes: ' || TO_CHAR(ub));
8 DBMS_OUTPUT.PUT_LINE('Alloc Bytes: ' || TO_CHAR(ab));
9 10 end ;
11 12 / 13
Used Bytes: 64179
Alloc Bytes: 131072
PL/SQL procedure successfully completed.
Elapsed: 00:00:01.21
dbajcc@OCADB on 13-JAN-10 >
Como visto o nosso índice tst_idx001 para a tabela tst_index_cost usará 64179 bytes ou 62,7KB para dados e ocupará 131072 bytes ou 128 KB dentro da tablespace users_ind .
Oks?!
Estimando tamanho do índice via EM
No EM é muito simples também :
Dentro da seção acima seguir acessando a tab SCHEMA ,dentro de SCHEMA procurar por INDEXES :
Agora vamos fazer o mesmo que fizemos usando PL/SQL para estimar o tamanho do Index tst_idx001 :
Observe o passo-a-passo de cada tela :
Voltando a tab "General" usar o botão bem sugestivo "Estimate Index Size" :
Vamos ver o que foi gerado :
Podem ver que é o mesmo resultado da etapa anterior usando o bloco PL/SQL 62,67KB ou 62,7KB .
Para estimar o tamanho de uma tabela é tão simples como fazer paara índices :
- preencha as informações na tab TABLES dentro da seção SCHEMA e acesse o botão "Estimate table size" .
Não vou colocar o exemplo para não ficar extenso demais.
É isso.
Julio Cesar Correa
Wednesday, January 13, 2010
Oracle 10g - Capacity Planning for Database Objects - Oracle 10g and later - Part 1
Introdução
Segundo a documentação da Oracle existe duas formas de fazer o "Capacity Planning" usando o próprio Oracle Database :
- Usando a package DBMS_SPACE via código PL/SQL ou
- EM Database Control ou Grid Control
Na própria documentação do Oracle 10g ou 11g temos exemplos de como fazer isso.
Vamos abordar primeiro via PL/SQL no Oracle 10gr2 - 10.2.0.4 .
É possível estimar tamanho para Tabela e Índice mas para ser prático faremos somente de tabelas,que é normalmente onde se concentrará os esforços para estimar tamanho de schemas e de banco de dados que residirão nos tablespaces.Isto facilitará a organização nos tablespaces e arquivos de dados.
Estimativa para tabelas
Vamos usar um exemplo de uma tabela de pedidos com 7.000 pedidos diários.
A nossa tabela MY_ORDERS(qualquer semelhança é mera coincidência) tem a seguinte estrutura :
ORDER_ID NOT NULL NUMBER(12)
ORDER_DATE NOT NULL TIMESTAMP(6) WITH LOCAL TIME ZONE
ORDER_MODE VARCHAR2(8)
CUSTOMER_ID NOT NULL NUMBER(6)
ORDER_STATUS NUMBER(2)
ORDER_TOTAL NUMBER(8,2)
SALES_REP_ID NUMBER(6)
PROMOTION_ID NUMBER(6)
Podemos ver na imagem acima que esta tabela crescerá 303104 bytes por dia segundo a média de pedidos/dia e considerando que este numero de pedidos diários não mudará teremos 8,67MB ou 9MB por mês a mais em dados.O tamanho total ocupado pela nossa tabela ORDERS na tablespace será de 327680 bytes inicialmente ou 320 KB .Relativamente pequeno.Mas se olharmos para um modelos de dados digamos que de médio porte veremos que fica mais trabalhoso fazer as estimativas para um determinado banco de dados.
No próximo exemplo faremos a estimativa de índices usando PL/SQL e estimativa de tabela e índice usando EM.
Abs,
Julio Cesar Correa
Segundo a documentação da Oracle existe duas formas de fazer o "Capacity Planning" usando o próprio Oracle Database :
- Usando a package DBMS_SPACE via código PL/SQL ou
- EM Database Control ou Grid Control
Na própria documentação do Oracle 10g ou 11g temos exemplos de como fazer isso.
Vamos abordar primeiro via PL/SQL no Oracle 10gr2 - 10.2.0.4 .
É possível estimar tamanho para Tabela e Índice mas para ser prático faremos somente de tabelas,que é normalmente onde se concentrará os esforços para estimar tamanho de schemas e de banco de dados que residirão nos tablespaces.Isto facilitará a organização nos tablespaces e arquivos de dados.
Estimativa para tabelas
Vamos usar um exemplo de uma tabela de pedidos com 7.000 pedidos diários.
A nossa tabela MY_ORDERS(qualquer semelhança é mera coincidência) tem a seguinte estrutura :
ORDER_ID NOT NULL NUMBER(12)
ORDER_DATE NOT NULL TIMESTAMP(6) WITH LOCAL TIME ZONE
ORDER_MODE VARCHAR2(8)
CUSTOMER_ID NOT NULL NUMBER(6)
ORDER_STATUS NUMBER(2)
ORDER_TOTAL NUMBER(8,2)
SALES_REP_ID NUMBER(6)
PROMOTION_ID NUMBER(6)
Podemos ver na imagem acima que esta tabela crescerá 303104 bytes por dia segundo a média de pedidos/dia e considerando que este numero de pedidos diários não mudará teremos 8,67MB ou 9MB por mês a mais em dados.O tamanho total ocupado pela nossa tabela ORDERS na tablespace será de 327680 bytes inicialmente ou 320 KB .Relativamente pequeno.Mas se olharmos para um modelos de dados digamos que de médio porte veremos que fica mais trabalhoso fazer as estimativas para um determinado banco de dados.
No próximo exemplo faremos a estimativa de índices usando PL/SQL e estimativa de tabela e índice usando EM.
Abs,
Julio Cesar Correa
Marcadores:
capacity planning,
database,
dbms_space,
enterprise manager,
estimate,
oracle,
pl/sql,
table cost
Subscribe to:
Posts (Atom)




