Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-00838

L'altro giorno mi sono imbattuto in un problema interessante che mi ci è voluto un po' per risolverlo. Stavo tentando di avviare un database non di produzione e ho ricevuto questo errore:

ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 1428M
ORA-01078: failure in processing system parameters

Per cominciare, la documentazione Oracle per la mia versione dice che il valore minimo per MEMORY_TARGET è 512 MB ma l'errore sopra mi dice che devo usare un valore maggiore. Quindi il prossimo passo logico è ottenere aiuto per questo messaggio di errore.

[oracle@host ~]$ oerr ora 838
00838, 00000, "Specified value of MEMORY_TARGET is too small, needs to be at least %sM"
// *Cause: The specified value of MEMORY_TARGET was less than the sum of the
// specified values for SGA_TARGET and PGA_AGGREGATE_TARGET.
// *Action: Set MEMORY_TARGET to at least the recommended value.

Beh, è ​​interessante. Ecco i miei contenuti PFILE.

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='DB_EXTENDED'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/orcl/data01/control01.ctl','/u01/app/oracle/oradata/orcl/data02/control02.ctl','/u01/app/oracle/oradata/orcl/data03/control03.ctl'
*.db_block_size=8192
*.db_domain='naucom.com'
*.db_files=1100
*.db_name='orcl'
*.db_recovery_file_dest_size=214748364800
*.db_recovery_file_dest='/archivelog'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.event=''
*.job_queue_processes=10
*.memory_target=1048576000
*.open_cursors=300
*.processes=1600
*.remote_login_passwordfile='EXCLUSIVE'
*.sec_case_sensitive_logon=FALSE
*.undo_tablespace='UNDOTBS4'

Si noti che non sto specificando SGA_TARGET o PGA_AGGREGATE_TARGET. Quindi l'aiuto del messaggio di errore non è stato di aiuto qui. Dopo aver risolto il problema, ho scoperto che qualcuno aveva modificato il mio file di parametri.

*.processes=1600

Questo è un piccolo database non di produzione. Il mio MEMORY_TARGET è solo 1 GB. Allora perché PROCESSES è impostato su un valore così grande? Quando l'ho restituito a un valore molto più piccolo di 600, l'istanza non ha avuto problemi all'avvio. Il numero di processi deriva dal numero di sessioni, che richiede un SGA maggiore. Il messaggio di errore iniziale era corretto ma non forniva indizi sul motivo per cui esisteva il problema.