Янв 272011
 

Упала база с такими сообщениями в alert log:

Wed Jan 26 15:27:59 2011
Errors in file /oracle/coredump/mydb_j013_25421.trc:
ORA-00603: ORACLE server session terminated by fatal error
ORA-00340: IO error processing online log of thread
ORA-01115: IO error reading block from file 33 (block # 209952)
ORA-01110: data file 33: '/dev/vx/rdsk/mydg/mydb_25.dbf'
ORA-27091: unable to queue I/O
ORA-27072: File I/O error
SVR4 Error: 12: Not enough space
Additional information: 4
Additional information: 209951
Additional information: -1

На первый взгляд может показаться, что проблема с дисковой подсистемой, но это не так: Veritas VM не находит никаких ошибок. В /var/adm/messages обнаружилась строчка:

Jan 26 15:27:56 mydb.myhost tmpfs: [ID 518458 kern.warning] WARNING: /etc/svc/volatile: File system full, swap space limit exceeded

Поискав, обнаружил любопытный документ на металинке: Doc ID 947991.1.
Вкратце: Если SGA_MAX_SIZE > SGA_TARGET, то возможны подобные ошибки и падение инстанса. Проблема связана с багом механизма DISM (Dynamic Intimate Shared Memory) в ОС Solaris.
Чтобы предотвратить подобную неприятность, нужно убрать параметр SGA_MAX_SIZE

ALTER SYSTEM SET SGA_MAX_SIZE=0;

и рестартовать базу.

Янв 242011
 

Алгоритм работы Automatic Shared Memory Management (ASMM) несовершенен. Со временем размер Shared Pool может разрастись до огромного значения, потому что ASMM не уменьшает его, продолжая со временем понемногу добавлять память.
На долго и непрерывно работающей базе данных имеет смысл отключить ASMM.
Посмотреть текущие значения для автоматически настраиваемых компонент SGA можно в spfile: Continue reading »