Pular para o conteúdo
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #76753
    andren
    Participante

      Olá gostaria de saber se alguém pode explicar como funcionam as tablespaces gerenciadas localmente (management local).

      Tenho o seguinte caso:

      1) Importei uma base para um banco 9.2.0.7 (com tablespace gerenciada localmente).

      2) Uma tabela de 45 milhões de registros com 3 indices de colunas diferentes ficou assim:

      Nome do indice tamanho_atual extents
      ———————— —————– ———
      INDICE_A 2056 MB 131
      INDICE_B 2056 MB 131
      INDICE_C 2056 MB 131

      Sendo que os indices são da seguinte estrutura:
      Indice Coluna
      ————————- ————————-
      INDICE_A COD_PRODUTO
      INDICE_A COD_EMPRESA
      INDICE_A DATA_CADASTRO
      INDICE_A COD_GRUPO
      INDICE_A COD_SUBGRUPO

      INDICE_B DATA_CADASTRO
      INDICE_B COD_GRUPO

      INDICE_C COD_CLASSE
      INDICE_C COD_EMPRESA
      INDICE_C COD_GRUPO

      Ou seja, deveriam estar com tamanhos diferentes, ou pelo menos extents diferentes.

      Alguém pode me ajudar a entender isso ?

      #76826
      rosterne
      Participante

        Um tablespace gerenciada Localmente controla seus próprios extents e mantém um bitmap em cada um datafile para manter-se a par do status livre ou usado dos blocos naquele datafile.

        Cada bit no bitmap corresponde a um grupo dos blocos. Quando uma extensão é alocada ou descartada, o oracle muda os valores bitmap para mostrar o status novo dos blocos.

        Estas mudanças não geram a informação do rollback porque não atualizam tabelas (como sys.uet$, sys.fet$) no dicionário dos dados (à exceção dos casos especiais tais como a informação do quota do tablespace).

        Quando se cria uma tablespace gerenciada localmente, pode-se utilizar o recurso “UNIFORM SIZE”, que parece ser o seu caso. Com esse recurso a tablespace alocará uniformimente os extents, ou seja todos extnts terão tamanho iguais.

        Ex1:

        SQL> CREATE TABLESPACE exemplo1 DATAFILE
        2 ‘exemplo01.dbf’ SIZE 100M reuse
        3 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
        Tablespace created.

        Quando se usa a clúsula “AUTOALLOCATE” , o Oracle identifica e aloca o primeiro extent da tablespace com no minimo de 64k.

        Ex2:

        SQL> CREATE TABLESPACE exemplo2 DATAFILE
        2 ‘exemplo02.dbf’ SIZE 100M reuse
        3 EXTENT MANAGEMENT AUTOALLOCATE
        Tablespace created.

        • SQL> select TABLESPACE_NAME, INITIAL_EXTENT, NEXT_EXTENT, MIN_EXTENTS, MAX_EXTENTS,
          2 MIN_EXTLEN, EXTENT_MANAGEMENT, ALLOCATION_TYPE, PLUGGED_IN
          3 from dba_tablespaces
          4 where tablespace_name like ‘EXEMPLO%’;

        TABLESPACE_NAME INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS
        MIN_EXTLEN EXTENT_MAN ALLOCATION PLUGG



        EXEMPLO1 131,072 131,072 1 2,147,483,645
        131,072 LOCAL UNIFORM NO
        EXEMPLO2 65,536 1 2,147,483,645
        65,536 LOCAL SYSTEM NO

        Abraço.

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.
      plugins premium WordPress