这个bug比较神奇,如果SGA设置为4G的整数倍,就会导致系统CRASH。以前听说过这个bug,这次还是第一次碰到。
详细的错误如下:
<pre lang=’SQL’>Tue Oct 11 10:44:34 2011
Starting ORACLE instance (normal)
Tue Oct 11 10:44:34 2011
Specified value of sga_max_size is too small, bumping to 12884901888
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 3
Autotune of undo retention is turned on.
IMODE=BR
ILAT =61
LICENSE_MAX_USERS = 0
SYS auditing is disabled
ksdpec: called for event 13740 prior to event group initialization
Starting up ORACLE RDBMS Version: 10.2.0.3.0.
System parameters with non-default values:
processes = 500
sga_max_size = 12884901888
lock_sga = FALSE
__shared_pool_size = 570425344
shared_pool_size = 536870912
__large_pool_size = 134217728
large_pool_size = 134217728
__java_pool_size = 33554432
java_pool_size = 33554432
__streams_pool_size = 0
streams_pool_size = 0
sga_target = 12884901888
control_files = /dev/rcontrol01, /dev/rcontrol02, /dev/rcontrol03
db_file_name_convert = /dev/, /dev/
log_file_name_convert = /dev/, /dev/
db_block_size = 8192
__db_cache_size = 12129927168
db_cache_size = 2147483648
compatible = 10.2.0.3.0
log_archive_config = DG_CONFIG=(oradb,orapri)
log_archive_dest_1 = location=/oraarch
log_archive_dest_2 = service=oradb lgwr async
valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=oradb
log_archive_dest_state_1 = enable
log_archive_dest_state_2 = enable
log_archive_max_processes= 3
fal_client = orapri
fal_server = oradb
log_buffer = 14234624
db_file_multiblock_read_count= 64
db_recovery_file_dest =
db_recovery_file_dest_size= 107374182400
standby_file_management = AUTO
fast_start_mttr_target = 300
db_flashback_retention_target= 4320
undo_management = AUTO
undo_tablespace = UNDOTBS1
undo_retention = 3600
remote_login_passwordfile= EXCLUSIVE
db_domain =
utl_file_dir = /oracle
job_queue_processes = 0
background_dump_dest = /oracle/admin/oradb/bdump
user_dump_dest = /oracle/admin/oradb/udump
core_dump_dest = /oracle/admin/oradb/cdump
audit_file_dest = /oracle/admin/oradb/adump
sort_area_size = 1048576
db_name = oradb
db_unique_name = orapri
open_cursors = 300
_b_tree_bitmap_plans = FALSE
optimizer_index_cost_adj = 10
pga_aggregate_target = 2147483648
PMON started with pid=2, OS id=16121944
PSP0 started with pid=3, OS id=14286974
MMAN started with pid=4, OS id=11141216
DBW0 started with pid=5, OS id=14418082
DBW1 started with pid=6, OS id=14155834
DBW2 started with pid=7, OS id=11862130
LGWR started with pid=8, OS id=13828256
CKPT started with pid=9, OS id=14024704
SMON started with pid=10, OS id=12451932
RECO started with pid=11, OS id=15073406
MMON started with pid=12, OS id=12582914
MMNL started with pid=13, OS id=12517546
Tue Oct 11 10:45:03 2011
Errors in file /oracle/admin/oradb/bdump/oradb_mman_11141216.trc:
ORA-00600: internal error code, arguments: [kmgs_pre_process_request_6], [6],
[723], [128], [3], [0x70000030630E608], [], []
Tue Oct 11 10:45:04 2011
Errors in file /oracle/admin/oradb/bdump/oradb_mman_11141216.trc:
ORA-00600: internal error code, arguments: [kmgs_pre_process_request_6], [6],
[723], [128], [3], [0x70000030630E608], [], []
Tue Oct 11 10:45:04 2011
MMAN: terminating instance due to error 822
Instance terminated by MMAN, pid = 11141216</pre>
Oracle数据库重启后还没有做任何的操作,就被mman进程中止了。显然这时Oracle自己的问题,而与应用无关。
在metalink上对应的文档为MMON Terminates Instance With ORA-600 [kmgs_pre_process_request_6]
or ORA-600 [kmgs_update_target_size_1] When Resizing Caches [ID 373802.1],这个错误影响的版本是10.2.0.1到10.2.0.3,而当前正是10.2.0.3这个版本。
正如文章开头提到的,当SGA_TARGET是4G的整数倍时,就会引发这个问题。解决这个问题倒是不复杂,除了升级到10.2.0.4以上版本或者打Bug:4433838对应的patch外,稍微调整一下SGA的大小,就可以避免这个错误的产生。