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
No comments:
Post a Comment