Otimizar mem贸ria Oracle DB em Desenvolvimento

M谩quina de desenvolvedor deveria ter mem贸ria infinita 馃檪 ou pr贸ximo disso. Como isso ainda n茫o 茅 poss铆vel, utilizamos algumas maneira de otimizar o consumo de mem贸ria. Vamos ver como fazer isso para o Oracle 10g XE em ambiente de desenvolvimento. N茫o fa莽a isso em ambientes de produ莽茫o! N贸s iremos modificar o SGA (System Global Area) do Oracle. Para mais informa莽玫es sobre o que 茅 SGA, veja nesse site.

  1. Fa莽a backup do seguinte arquivo: $ORACLE_HOME/dbs/spfileXE.ora que 茅 o arquivo que iremos alterar. No meu linux ele est谩 localizado em: /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/dbs/spfileXE.ora
  2. Abra o SQL Plus (Linux: "sqlplus /nolog" | Windows: "sqlplus.exe /nolog").
  3. Conecte com um usu谩rio SYSDBA: "conn / as sysdba"
  4. Verifique a SGA com o comando: "show sga". Deve aparecer algo parecido com isso:
    SQL> show sga
    
    Total System Global Area聽 805306368 bytes
    Fixed Size聽聽 聽聽聽 聽聽聽聽       1261444 bytes
    Variable Size聽聽 聽聽聽 聽聽    213909628 bytes
    Database Buffers聽聽 聽聽     587202560 bytes
    Redo Buffers聽聽 聽聽聽 聽聽聽聽     2932736 bytes
  5. Verifique os parametros do SGA com o comando: "show parameter sga".
    SQL> show parameter sga
    
    NAME聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽聽聽 TYPE聽聽 聽 VALUE
    ------------------------------------ ----------- ------------------------------
    lock_sga聽聽 聽聽聽 聽聽聽 聽聽聽聽聽 boolean聽聽 聽 FALSE
    pre_page_sga聽聽 聽聽聽 聽聽聽 聽 boolean聽聽 聽 FALSE
    sga_max_size聽聽 聽聽聽 聽聽聽 聽 big integer 768M
    sga_target聽聽 聽聽聽 聽聽聽 聽聽  big integer 768M
  6. Altere o sga_target para 130M (creio que seja mais que suficiente para m谩quina de desenvolvimento): "alter system set SGA_TARGET=130M scope=spfile;"
  7. Altere o sga_max_size para 256M: "alter system set sga_max_size=256M scope=spfile;"
  8. Desligue a base: "shutdown;"
  9. Ligue novamente: "startup;"
  10. Execute o: "show sga":
    SQL> show sga
    
    Total System Global Area聽 268435456 bytes
    Fixed Size聽聽 聽聽聽 聽聽聽聽       1258392 bytes
    Variable Size聽聽 聽聽聽 聽聽    188746856 bytes
    Database Buffers聽聽 聽聽聽     75497472 bytes
    Redo Buffers聽聽 聽聽聽 聽聽聽聽     2932736 bytes
  11. Execute o: "show parameter sga":
    SQL> show parameter sga
    
    NAME聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽聽聽 TYPE聽聽 聽 VALUE
    ------------------------------------ ----------- ------------------------------
    lock_sga聽聽 聽聽聽 聽聽聽 聽聽聽聽聽 boolean聽聽 聽 FALSE
    pre_page_sga聽聽 聽聽聽 聽聽聽 聽 boolean聽聽 聽 FALSE
    sga_max_size聽聽 聽聽聽 聽聽聽 聽 big integer 256M
    sga_target聽聽 聽聽聽 聽聽聽 聽聽聽 big integer 132M

Como podemos ver, o uso de mem贸ria do SGA est谩 bem reduzido. Caso voc锚 tenha algum problema similar a esse:

ORA-00604: error occurred at recursive SQL level 1
ORA-04030: out of process memory when trying to allocate 16 bytes (sql area,kglhin: temp)

restaure o backup do arquivo spfileXE.ora e se voc锚 esqueceu de fazer o backup utilize o procedimento de reinstala莽茫o do oracle-xe.

Sobre: Thiago Galbiatti Vespa

Thiago Galbiatti Vespa 茅 mestre em Ci锚ncias da Computa莽茫o e Matem谩tica Computacional pela USP e bacharel em Ci锚ncias da Computa莽茫o pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de m茅dio e grande porte, palestrante de v谩rios eventos e colaborador de projetos open source. Possui as certifica莽玫es: Oracle Certified Master, Java EE 5 Enterprise Architect 鈥 Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6