Natknąłem się na interesujący problem, którego naprawienie zajęło mi trochę czasu. Próbowałem uruchomić nieprodukcyjną bazę danych i otrzymałem następujący błąd:
ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 1428M ORA-01078: failure in processing system parameters
Na początek dokumentacja Oracle dla mojej wersji mówi, że minimalna wartość dla MEMORY_TARGET to 512 MB, ale powyższy błąd mówi mi, że muszę użyć większej wartości. Więc następnym logicznym krokiem jest uzyskanie pomocy dotyczącej tego komunikatu o błędzie.
[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.
To ciekawe. Oto moja zawartość 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'
Zauważ, że nie określam SGA_TARGET ani PGA_AGGREGATE_TARGET. Więc komunikat o błędzie pomocy nie był tutaj pomocny. Po rozwiązaniu problemu odkryłem, że ktoś zmienił mój plik parametrów.
*.processes=1600
To jest mała nieprodukcyjna baza danych. Moja MEMORY_TARGET ma tylko 1 GB. Dlaczego więc PROCESY mają tak dużą wartość? Kiedy przywróciłem to do znacznie mniejszej wartości 600, instancja nie miała problemów z uruchomieniem. Liczba procesów wywodzi się z liczby sesji, co wymusza wyższy SGA. Początkowy komunikat o błędzie był prawidłowy, ale nie zawierał żadnych wskazówek, dlaczego wystąpił problem.