Como saber o Conteudo de Datafiles.

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Informações do Ambiente:
* Versão do Oracle: 11g r2
* Sistema Operacional: win 2008 64 bits

Olá Pessoal,

Tenho um banco com uma tablespace nnn.DBF e tiveram que aumentar ela com 5 datafile .DAT

Preciso Saber o que esta guardado nestes datafile .DAT porque cresceu demais e muito rapido.

Teria um select ou ferramenta para saber o conteudo dos .DAT para saber se e tabelas ou outro tipo de objeto ?

Qualquer dica e bem vindo.

Abs.
ishii
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 82
Registrado em: Ter, 28 Dez 2010 7:41 pm
Localização: São Paulo - SP

Olá,

Basta mudar a query para o filtro ou da tablespace ou pelo datafile.

Selecionar tudo

select df.NAME datafile_name,
       df.STATUS status_datafile,
       df.BYTES/1024/1024/1024 tam_GB,
       ts.NAME tablespace_name,
       tb.TABLE_NAME obj_name,
       'TABLE' obj_type
from   v$datafile df, 
       v$tablespace ts,
       dba_tables tb
where  ts.TS# = df.TS#
and    tb.TABLESPACE_NAME = ts.NAME
union all
select df.NAME datafile_name,
       df.STATUS status_datafile,
       df.BYTES/1024/1024/1024 tam_GB,
       ts.NAME tablespace_name,
       ix.index_name obj_name,
       'INDEX' obj_type
from   v$datafile df, 
       v$tablespace ts,
       dba_indexes ix
where  ts.TS# = df.TS#
and    ix.tablespace_name = ts.NAME
Outra idéia é utilizar a query :

Selecionar tudo

 select * from dba_segments
[]s Ishii
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Muito obrigado Ishii

O estranho que rodei a sua query e a mesma tabela esta nos 5 datafiles criado pelo outro dba.

A tablesace e TS_DADOS e os datafiles são dados_1, dados_2 ....dados_5

Será se o programa do cliente criou a mesma tabela para cada datafile ?

Obrigado.
ishii
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 82
Registrado em: Ter, 28 Dez 2010 7:41 pm
Localização: São Paulo - SP

Olá,

Na verdade não, o tablespace seria o correspondente a um workplace ou area de trabalho, ele pode estar distribuído em um ou mais datafiles. Como uma tabela está sempre associada a uma tablespace, pode ocorrer que na alocação de espaço da tabela na tablespace, o Oracle divida isso em outros datafiles. Por exemplo, a sua tablespace TS_DADOS tem 6 datafiles, mas você precisa de uma tabela com muito espaço e para conseguir esse espaço, somente se eu pegar uma parte do datafile1, outra do datafile2 e o restante no datafile5. Sua tabela usa a tablespace TS_DADOS apenas mas está distribuída nos 3 datafiles.

Esses conceitos são 101 no Oracle Administration...qualquer dúvida coloque aqui...

[]s Ishii
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Muito Obrigado Ishii por suas explicações clareou muito.

So mas uma duvida amigo.

Tenho esse script que me traz as tabelas maiores do meu banco:

Selecionar tudo

Select e.Owner, e.SEGMENT_NAME "Tabela", count(*) "Extents", t.NUM_ROWS "Linhas"
  from DBA_EXTENTS e, DBA_TABLES t
    Where e.SEGMENT_NAME = t.TABLE_NAME
   and e.Owner not in ('SYS','OUTLN','SCOTT','DBSNMP')
      Group by e.Owner, e.SEGMENT_NAME, t.NUM_ROWS
        Order by e.Owner, count(*) desc
e o maior e justo o a tabela do programa novo que foi criado e encheu os meus datafiles.

Selecionar tudo

 OWNER	Tabela	                       Extents	     Linhas
FRC	CUSTOPROCDEP	            2575	359387
AGR	LOG_ERRO_DATASUL	     89	       13842831
AGR	USUARIOS_FORM_ACESSOS	49	  2049621 
A tabela CUSTOPROCDEP porque ficou com o extents tão alto assim ?

O banco antes tinha 60 Gigas agora tem 160 gigas cresceu demais em pouco tempo.

Obrigado e qualquer dica e bem vindo.
ishii
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 82
Registrado em: Ter, 28 Dez 2010 7:41 pm
Localização: São Paulo - SP

Olá,

Vamos por partes.

1) Extents, para entender melhor o conceito, imagine o antigo (mas não tanto) defrag no Windows. Visualize os espaços vazios. Se você tivesse muitos espaços vazios e criasse um arquivo grande. Ele iria ocupar o maior espaço de blocos disponíveis a partir de um ponto. Se você editasse esse arquivo, colocasse mais informações etc até que ele dobrasse de tamanho. Os blocos iriam aumentar, não? Então... se fosse comparar, o arquivo seria sua tabela e cada bloco um Extent. O fato de se ter vários extents apenas demonstra que a tabela estendeu ou cresceu um pouco mais, mas não significa que ela é o problema ainda. Se a tabela foi criada com um tamanho de 64K mas estou inserindo 64Mb de dados, ela vai estender 1000 vezes, mas ainda assim não seria o problema, pois se esse espaço for contíguo, mesmo com 1000 ou 20000 extents não teremos problemas nem de performance nem de alocação de espaço, apenas teremos um dimensionamento equivocado do Initial e dos next extends da tabela....

2) Quantidade de linhas: O que ocupa mais espaço no Oracle, uma tabela com 100 colunas varchar2(1) todas, ou uma tabela com 1 coluna Blob? Se essa tabela de 100 colunas tiver 1Mb de linhas e a tabela de 1 Coluna Blob tiver uma imagem de 4Gb? Esse valor também pode não significar nada ainda....

3) Acho melhor analisar por segment_name (que nem sempre é uma tabela, pois pode ser um índice também, mas (e sempre tem um MAS) você tem que monitorar o crescimento delas, pode ser via planilha (ou tabelas do Oracle) isso num certo intervalo de tempo que somente você DBA tem como saber. Se o BD cresceu X Mb em Y tempo, você já tem como dimensionar o tamanho em Z tempo....

4) Monitore diariamente até que você tenha essa fórmula definida, depois você consegue monitorar num intervalo de tempo adequado a sua fórmula...

[]sIshii

BOA SORTE...
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Grato pela explicação Ishii.

Vou monitorar sim e montar um plano melhor para essa estrutura do cliente.

Obrigado.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes