Quando administramos um banco de dados Oracle com RAC (Real Application Clusters), há a necessidade de sempre ter atenção quando se vai efetuar a alteração de um parâmetro. Há parâmetros que só são alterados após uma reinicialização do banco de dados e há aqueles que podem ser alterados dinamicamente (parâmetro Modifiable= ALTER SYSTEM na documentação da Corporação Oracle) na instância inicializada. No entanto, para estes parâmetros dinâmicos há aqueles parâmetros que não há a possiblidade de se alterar no nó principal do cluster e nos demais ao mesmo tempo e, com issso, reportando o erro “ORA-32018: parameter cannot be modified in memory on another instance”. Sendo assim, neste post estarei tratando este erro.
Exemplo do erro:
SQL> alter system set shared_pool_size=10g scope=both sid='*'; alter system set shared_pool_size=10g scope=both sid='*' * ERROR at line 1: ORA-32018: parameter cannot be modified in memory on another instance
Como se pode ver, o erro é reportado devido ao fato do parâmetro não poder ser alterado nos demais nós do banco de dados Oracle RAC. Com isso, para a solução deste erro, ao invés de se utilizar a sintaxe SID=’*’ , coloca-se o nome do nó atual que se está alterando o parâmetro e posteriormente nos demais. Então, por exemplo, em um banco de dados com 2 instâncias, altera-se primeiro em uma instância e posteriormente na outra. Com isso, segue o exemplo da alteração com sucesso em cada nó (node):
SQL> show parameters shared_pool_size NAME_COL_PLUS_SHOW_PARAM TYPE -------------------------------------------------------------------------------- ----------- VALUE_COL_PLUS_SHOW_PARAM -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- shared_pool_size big integer 3328M SQL> alter system set shared_pool_size=10g scope=both sid='TECHDATABASKET1'; System altered. SQL> show parameters shared_pool_size NAME VALUE ------------------------------------ ----------- ------------------------------ shared_pool_size big integer 10G
SQL> show parameters shared_pool_size NAME_COL_PLUS_SHOW_PARAM TYPE -------------------------------------------------------------------------------- ----------- VALUE_COL_PLUS_SHOW_PARAM -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- shared_pool_size big integer 3328M SQL> alter system set shared_pool_size=10g scope=both sid='TECHDATABASKET12'; System altered. SQL> show parameters shared_pool_size NAME VALUE ------------------------------------ ----------- ------------------------------ shared_pool_size big integer 10G
Hi! I am Bruno, a Brazilian born and bred. Former Oracle ACE, Computer Scientist, MSc in Data Science, over ten years of experience in companies such as IBM, Epico Tech, and Playtech based in three different countries (Brazil, Hungary, and Sweden) and joined projects remotely in many others. I am super excited to show you my interest in Databases, Cloud, Data Science, Data Engineering, Bigdata, AI, Programming, Software Engineering, and data in general.
(Continue reading)