Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-00838

J'ai rencontré un problème intéressant l'autre jour qui m'a pris du temps à résoudre. J'essayais de démarrer une base de données hors production et j'ai reçu cette erreur :

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

Pour commencer, la documentation Oracle de ma version indique que la valeur minimale pour MEMORY_TARGET est de 512 Mo, mais l'erreur ci-dessus me dit que je dois utiliser une valeur plus grande. La prochaine étape logique consiste donc à obtenir de l'aide pour ce message d'erreur.

[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.

Eh bien c'est intéressant. Voici mon contenu 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'

Notez que je ne spécifie pas SGA_TARGET ou PGA_AGGREGATE_TARGET. Donc, l'aide du message d'erreur n'a été d'aucune aide ici. Après avoir résolu le problème, j'ai découvert que quelqu'un avait modifié mon fichier de paramètres.

*.processes=1600

Il s'agit d'une petite base de données hors production. Mon MEMORY_TARGET n'est que de 1 Go. Alors, pourquoi PROCESSES est-il défini sur une valeur aussi élevée ? Lorsque j'ai ramené cela à une valeur beaucoup plus petite de 600, l'instance n'a eu aucun problème à démarrer. Le nombre de processus dérive du nombre de sessions, ce qui nécessite une SGA plus élevée. Le message d'erreur initial était correct mais ne fournissait aucun indice sur la raison pour laquelle le problème existait.