Hôm trước tôi có gặp một vấn đề thú vị khiến tôi phải mất một lúc mới sửa được. Tôi đang cố gắng khởi động cơ sở dữ liệu phi sản xuất và nhận được lỗi này:
ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 1428M ORA-01078: failure in processing system parameters
Đối với người mới bắt đầu, tài liệu Oracle cho phiên bản của tôi cho biết giá trị tối thiểu cho MEMORY_TARGET là 512MB nhưng lỗi ở trên cho tôi biết rằng tôi cần sử dụng giá trị lớn hơn. Vì vậy, bước hợp lý tiếp theo là tìm trợ giúp cho thông báo lỗi này.
[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.
Điều đó thật thú vị. Đây là nội dung PFILE của tôi.
*.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'
Lưu ý rằng tôi không chỉ định SGA_TARGET hoặc PGA_AGGREGATE_TARGET. Vì vậy, trợ giúp thông báo lỗi không có ích gì ở đây. Sau khi khắc phục sự cố, tôi phát hiện ra rằng ai đó đã thay đổi tệp tham số của tôi.
*.processes=1600
Đây là một cơ sở dữ liệu phi sản xuất nhỏ. MEMORY_TARGET của tôi chỉ có 1GB. Vậy tại sao PROCESSES lại được đặt ở một giá trị lớn như vậy? Khi tôi trả giá trị này về một giá trị nhỏ hơn nhiều là 600, phiên bản này không gặp vấn đề gì khi khởi động. Số lượng quy trình dẫn đến số lượng phiên, điều này đòi hỏi SGA cao hơn. Thông báo lỗi ban đầu là chính xác nhưng không cung cấp manh mối về lý do tại sao sự cố lại tồn tại.