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

      Olaa,

      No que se refere a uma Sequence e o seu cache, o cache é por sessão de usuário ? e como a mesma funciona se usuários estiverem em sessões distintas realizando selects na respectiva sequence ?

      Desde Já, Agradeço.

      #100595
      Ishii
      Participante

        Olá.

        Na verdade a sequence fica com seus valores na SGA, faça um teste simples.

        Crie uma sequence em um usuário TESTE, colocando como cache 50
        create sequence SEQ_TESTE
        minvalue 1
        maxvalue 9999999999999999999999999999
        start with 1
        increment by 1
        cache 50;

        Abra uma sessão do SQL*Plus e consuma uma sequence
        SQL> select seq_teste.nextval from dual;

        Abra outra sessão do SQL*Plus e consuma nova sequence
        SQL> select seq_teste.nextval from dual;

        Veja que o valor seguinte será 2 e você pode intercalar entre as até que o valor chegue a 15 mais ou menos. Então sem fechar nenhuma sessão abra uma nova sessão com um usuário DBA ou SYSTEM

        SQL> alter system flush shared_pool;

        Volte para as duas sessões abertas e faça novamente
        SQL> select seq_teste.nextval from dual;

        Você vai notar que o valor já será 51!!!

        O valor dos blocos da sequence fica no Shared Pool mas somente serão chamados novamente, se o espaço na Shared Pool for usado em excesso obrigado o flush para liberar memória, ou no caso de Restart da Instance do Oracle

        []s Ishii

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