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, and I am also a naturalized Swedish citizen. I am a former Oracle ACE and, to keep up with academic research, I am a Computer Scientist with an MSc in Data Science and another MSc in Software Engineering. I have over ten years of experience working with companies such as IBM, Epico Tech, and Playtech across three different countries (Brazil, Hungary, and Sweden), and I have joined projects remotely in many others. I am super excited to share my interests in Databases, Cybersecurity, Cloud, Data Science, Data Engineering, Big Data, AI, Programming, Software Engineering, and data in general.
(Continue reading)