Não foi possível iniciar o Oracle (11g1) devido à configuração de memória incorreta (ORA-00837)

8

Decidi reduzir a alocação de memória de uma instância local de desenvolvedor e me disseram que o seguinte comando fazia o trabalho;

alter system set memory_max_target = 512M scope = spfile;

Acho que sim, já que não consigo mais iniciar a instância do Oracle em questão. Esse é o erro que eu recebo ao tentar me conectar como um usuário não DBA;

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

Ao conectar como SYSDBA, recebo o seguinte;

Connected to an inactive instance.
SQL>startup nomount;
ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET
SQL>alter system set memory_max_target = 2G scope = spfile;
ORA-01034: ORACLE not available

("Conectado a uma instância inativa". É a tradução de uma mensagem de erro localizada, pode não estar exatamente correta) Portanto, estou em uma situação difícil, não consigo alterar os parâmetros de memória sem inicializar e posso inicie.

Existe uma maneira de alterar esses parâmetros offline?

MaxH
fonte

Respostas:

9

Se você iniciar sua instância usando um arquivo de parâmetros do servidor (uma versão binária do arquivo de parâmetros de inicialização, spfile), poderá extrair os parâmetros de inicialização para o arquivo de parâmetros de inicialização de texto sem formatação (pfile), alterá-los e iniciar sua instância com memória modificada parâmetros.

sql> create pfile='myinit.ora' from spfile='spfileORCL.ora';

Modifique seus parâmetros relacionados à memória myinit.orae inicie sua instância usando esta nova configuração:

sql> startup pfile='myinit.ora';

Você pode salvar suas configurações novamente em um spfile com o seguinte comando:

sql> create spfile='spfileORCL.ora' from pfile='myinit.ora';

E inicie seu banco de dados como de costume:

sql> startup;
Yasir Arsanukaev
fonte
11
Isso funcionou perfeitamente. A única alteração que eu precisava fazer do meu lado foi substituir o ORCL pelo SID da instância em questão. Defino o parâmetro memory_target-parâmetro para o mesmo valor que o parâmetro memory_max_target-parâmetro, que pode não ser o ideal, mas possibilitou o início.
MaxH
Sim, os nomes dos spfiles com os quais o Oracle tenta começar são spfileSID.orae spfile.ora, em seguida, ele tenta ler no pfile init.orase nenhum spfiles foi encontrado. A propósito, MEMORY_MAX_TARGETpode muito bem ser muito maior do que MEMORY_TARGETse não puder ser modificado dinamicamente - a instância precisa ser devolvida.
Yasir Arsanukaev 22/03
Opa, na initSID.oraverdade não é init.ora.
Yasir Arsanukaev 26/03
1

Os primeiros lançamentos do 11gR1 apresentam esse bug. Eles não serão iniciados se o memory_target estiver definido como 2 GB (e mais). Faça upgrade para 11gR2 (ou 11.1.0.7) ou use parâmetros SGA / PGA "clássicos" (sga_target, sga_max_size, pga_aggregate_target).

ibre5041
fonte
Como isso está relacionado a "ORA-00837: Valor especificado de MEMORY_TARGET maior que MEMORY_MAX_TARGET" sobre o qual o OP observa?
Yasir Arsanukaev 27/03
1

Supondo que você esteja usando o SO Linux: você verificou o tamanho do sistema de arquivos / dev / shm? O tamanho desse FS deve ser longo o suficiente para caber no seu SGA. Caso contrário, tente remontar com '-o size = xxx'.

user22020
fonte
Você já leu a causa da falha identificada pelo número de erro do Oracle no OP (ORA-00837)?
Yasir Arsanukaev 02/04