Pular para o conteúdo

Fóruns Banco de dados Oracle Sequence e Cache. Sequence e Cache.

#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