Cadastre-se Revistas DevMedia Cursos
 

Space de RODRIGO SALVIATTO
Busca Autor


Últimas 20 atualizações de RODRIGO SALVIATTO

Artigo - Novidades do Oracle 10g - Shrink segmentos em objetos

Novidades do Oracle 10g

Shrink segmentos em objetos

por Rodrigo Salviatto

Introdução

A nova versão do Oracle 10g disponibilizou um velho e conhecido comando para encolhermos os segmentos de dados alocados em alguns objetos,denominado SHRINK SPACE. Quando utilizado, conseguimos obter uma considerável melhora na performance de alguns comandos SQL e também reduzimos a fragmentação do banco de dados. Vejamos então, como utilizá-lo.

Pre-requisitos

Para utilizar a opção de SHRINK SPACE em alguns objetos, devemos configurar o parâmetro COMPATIBLE com valor igual ou superior a 10.0.0 no arquivo de parâmetros SPFILE. Vejamos exemplo na listagem 1.

 

SQL> ALTER SYSTEM SET COMPATIBLE=10.0.0 SCOPE=SPFILE;

 

Sistema Alterado.

Listagem 1. Configurando parâmetro COMPATIBLE no arquivo de parâmetros SPFILE. Este procedimento requer o reboot da instance.

O usuário que fará a execução do comando necessitará dos direitos de ALTER object.

A tablespace onde reside a tabela a ser encolhida, deve ser AUTO SEGMENT SPACE MANAGEMENT.

É possível executar a operação de SHRINK SPACE nos seguintes objetos:

Tabela

Indice

Lob

View Materializada

IOT

Como proceder

Para utilizarmos o SHRINK SPACE em uma determinada tabela, devemos inicialmente, executar o comando abaixo, para habilitar o SHRINK SPACE.

 

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
22/02/2007 13:16:00





Artigo - Reduzindo o tamanho de um datafile no Oracle

Reduzindo o tamanho de um datafile no Oracle

Introdução

por Rodrigo Salviatto

Você já precisou redimensionar os datafiles dos tablespaces existentes no banco de dados Oracle de um sistema em produção? Quando necessitamos expandir o tablespace, é sempre muito fácil, criamos novos datafiles no disco ou incrementamos os datafiles existentes, passando de 500MB para 1GB por exemplo. Mas e se você precisar reduzir o tamanho de um determinado datafile que está com espaço alocado desnecessário? Como devemos proceder? Veremos neste artigo alguns exemplos, de como efetuar esta tarefa de forma rápida e segura.

 

Identificando o tamanho do datafile

Vamos imaginar a seguinte situação: você possui um tablespace chamado USERS. Este, por sua vez, possui 100MB alocados porém apenas 20MB utilizados, conforme apresentado na listagem 1.

 

SQL>select substr(a.tablespace_name,1,20) "Tablespaces",

  2       (b.BYTES/1048576) as "TotalMB",

  3       (b.BYTES/1048576)-(c.BYTES/1048576) as "UsedMB",

  4       (c.BYTES/1048576) as "FreeMB"

  5  from dba_tablespaces a,

  6       (select tablespace_name,sum(bytes) as "BYTES"

  7                  from dba_data_files

  8                  group by tablespace_name ) b,

  9       (select tablespace_name,sum(bytes) as "BYTES"

 10                  from dba_free_space 

 11                  group by tablespace_name) c

 12  where

 13     a.tablespace_name = b.tablespace_name(+)

 14     and b.tablespace_name = c.tablespace_name(+)

 15     order by a.tablespace_name;

SQL>

Tablespaces            TotalMB      UsedMB     FreeMB

-------------------- ---------- ---------- ----------

USERS                       100     20.625     79.375

Listagem 1. Espaço utilizado no tablespace USERS.

Caso necessitarmos reduzir o tamanho do tablespace USERS de 100MB para 21MB, executamos o comando da listagem 2.

SQL> ALTER DATABASE DATAFILE ‘C:\ORACLE\ORADATA\USERS.DBF’ RESIZE 21M;

*

ERROR at line 1:

ORA-03214: File Size specified is smaller than minimum required

Listagem 2. Procedimento para reduzir o tamanho do datafile da tablespace USERS

Por que ocorreu o erro ORA-03214? Como solucionar este problema?

Este é exatamente o propósito deste artigo, informar a você como proceder para identificar qual o real tamanho alocado do tablespace. Veja o bloco de comando PL/SQL, apresentado na listagem 2, utilizado para identificar qual o tamanho mínimo requerido para reduzir o datafile do tablespace USERS.

set serveroutput on

execute dbms_output.enable(2000000);

 

declare

  cursor c_dbfile is

        select  tablespace_name

                ,file_name

                ,file_id

                ,bytes

        from    sys.dba_data_files

        where   status !='INVALID'

        order   by tablespace_name,file_id;

 

  cursor c_space(v_file_id in number) is

        select block_id,blocks

        from   sys.dba_free_space

        where  file_id=v_file_id

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
06/11/2006 13:34:00





Artigo - Como descobrir o que uma determinada sessão no Oracle está executando?

Como descobrir o que uma determinada sessão no Oracle está executando?

 

Introdução

por Rodrigo Salviatto

Muitas vezes necessitamos identificar o que uma determinada sessão no banco de dados está executando em um determinado momento. Existem diversas maneiras de verificar, como por exemplo, efetuar um SELECT na view V$SQL entre outros. Neste artigo, mostraremos de maneira simples, como gerar um arquivo de saída com todos os comandos SQL executados durante uma determinada sessão em um determinado computador.

 

O pacote DBMS

A Oracle desenvolveu uma procedure denominada SQL_TRACE_IN_SESSION pertencente ao pacote DBMS_SYSTEM do esquema SYS.

Com esta procedure é possível gerar um arquivo de trace com todos os comandos DML executados em uma sessão. Os arquivos são gerados no diretório informado pelo parâmetro USER_DUMP_DEST identificado no arquivo de parâmetros do Oracle.

A procedure requer 3 parâmetros de entrada. São eles:

Parâmetro 1 – valor SID encontrado na view V$SESSION

Parâmetro 2 – valor SERIAL# encontrado na view V$SESSION

Parâmetro 3 – TRUE ( ativa a geração do arquivo de saída) ou

                  FALSE ( desativa a geração do arquivo de saída)

 

Como funciona ?

Vejamos um exemplo, de como funciona a geração do arquivo de saída em uma determinada sessão, utilizando o pacote do esquema SYS.DBMS_SYSTEM.SQL_TRACE_IN_SESSION.

 

1-Identificando a sessão a ser monitorada

Acesse o Oracle com o usuário que possui direitos de visualizar a view V$SESSION e execute a seguinte consulta:

SQL>SELECT SID, SERIAL#, USERNAME

2        

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
30/10/2006 10:59:00





Artigo - Monitorando o uso de índices

Monitorando o uso de índices

 

Introdução

por Rodrigo Salviatto

Quando desenhamos um sistema, implementamos índices em tabelas para obtermos uma performance no uso da aplicação, porém, por muitas vezes, estes índices não são utilizados e acabam atrapalhando a performance das aplicações que utilizam o banco de dados Oracle, utilizam espaço em disco desnecessário, aumentam o everhead das operações DML.

Diante disso, é possível identificarmos se um índice criado em uma tabela está sendo utilizado ou não. Vejamos como fazer isto.

 A verificação da utilização de um índice em uma determinada tabela é efetuada através da ativação do monitoramento do índice, onde identificamos se um determinado índice está ou não sendo utilizado. A sintaxe utilizada para ativar o monitoramento de um índice é:

ALTER INDEX INDEX_NAME MONITORING USAGE

A partir deste ponto, o Oracle irá armazenar todas as vezes que o índice foi utilizado, nesta sessão. Para visualizar se o índice está sendo utilizado na sessão, utilize a view do dicionário de dados  denominada V$OBJECT_USAGE. Exemplo:

<> ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
21/09/2006 19:20:00





Artigo - Boas Vindas - Rodrigo Salviatto

Boas vindas - Rodrigo Salviatto


Inicialmente, gostaria de agradecer ao Ricardo Rezende que tive muito contato nos primeiros artigos publicados na revista pois ajudou-me muito. Agradeço também ao Rodrigo Spinola, pelo convite.  Fiquei muito entusiasmado com esta oportunidade. A experiência de escrever para uma Revista como a SQL Magazine é indescritível.

Espero atender as expectativas do público alvo da revista, com artigos de grande relevância com o intuito de auxiliar no dia-a-dia dos responsáveis pela administração dos bancos de dados nas empresas. 

Sua participação será muito importante para nós, gostaríamos de conhecer suas necessidades, interesses ,enviando-nos sugestões de artigos, comentários, etc.

Um abraço à todos e até a próxima matéria.

-->">
14/09/2006 12:11:00





 

Rodrigo Salviatto é formado em Ciências da Computação pela Universidade de Mogi das Cruzes, pós-graduado em Tecnologia da Informação pela Fundação Getúlio Vargas – FGV. Possui certificado MCDBA e OCP. Atua desde 1997 na área de banco de dados utilizando Oracle, Sqlserver, Informix, MySql entre outros. Atualmente atua como consultor em banco de dados Oracle e Sqlserver na DBACORP.
Arquivo de atualizações
 2007
 2006

Estatísticas do Autor:
Número de posts: 10
Características dos posts deste autor:
Conteúdo:
Utilidade:
13 0
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
Todos os Direitos Reservados a DevMedia Group