- 论坛徽章:
- 0
|
求助,ORA-00471错误,大数据量UPDATE表导致数据库非正常中止
前面几天一直等不到大侠们回复,就自己到精华区淘金,发现一篇《[转载]关于SGA设置的一点总结》(http://www.chinaunix.net/jh/19/148118.html),赶紧依样画葫芦,改完以后系统稳定了许多。有时跑个十几张表都没问题,有时撑了几张表就又DOWN掉了。不过这回倒是报了个600错误:
ORA-00600: internal error code, arguments: [17578], [2503799112], [], [], [], [], [], []
DBW0: terminating instance due to error 600
Instance terminated by DBW0, pid = 12345
以下是init.ora的一些新的配置:
shared_pool_size= 209715200 #200M
large_pool_size= 52428800 #50M
java_pool_size= 31457280 #30M
db_block_buffers= 204800 #800M
db_block_size= 4096
compatible= 8.1.0
log_buffer= 20971520 #加了
log_checkpoint_interval = 10000
log_checkpoint_timeout = 1800
dbwr_io_slaves = 4 #新增
sort_area_size = 10485760 #10M
sort_area_retained_size = 10485760 #10M
ORACLE启动时报的信息:
ORACLE instance started.
Total System Global Area 1189761008 bytes
Fixed Size 69616 bytes
Variable Size 329850880 bytes
Database Buffers 838860800 bytes
Redo Buffers 20979712 bytes
Database mounted.
Database opened.
感谢rchsh大侠的回复,高手啊!咱这DB属于白天OLTP(量不是很大),晚上DSS那种(主要),db_block_size=4096是当初建库时不懂设置的,后来想改大点一直没机会,因为里面有几百G的数据,难办。PCTUSED我倒是没有留意过,因那些表只会一次性地插数据,不会删除部分记录,一般都直接TRUNCATE后再循环使用。至于索引,刚开始有建,后来感觉有建没建耗时差不多,就免了。log_buffer的问题,主要是看到alert.log中的日志切换太快,2秒左右切一次,就给它加了点,不知太大会有何坏处,当然我会试试小点的情况。我曾在命令行观察过UPDATE和COMMIT的耗时,发现COMMIT耗时比UPDATE还久,不知如何处理,我给加了“dbwr_io_slaves = 4”。 |
|