Oracle默认并行度引起数据库挂起

上周六现场数据库运维厂家反馈,有一个实例hang住了,说是两条SQL引起的,操作系统上报too many open files的错误。看了一下数据库报告,主要是gc domain validation,latch: parallel query alloc buffer这两个等待事件。

发现有两条SQL执行很多次,负载占了数据库的一半。分析SQL,使用了Oracle默认的并行度,哪并行度到底是多少呢?
单实例 = PARALLEL_THREADS_PER_CPU x CPU_COUNT
RAC = PARALLEL_THREADS_PER_CPU x CPU_COUNT x INSTANCE_COUNT
( 这些参数都是可以通过 show parameter查到的)
而现场的配置是:2乘以192乘以2=768,换句话说执行一条SQL,产生了768个进程,同时一起执行几次,基本上耗尽数据库服务器资源。

使用并行的时候要注意:一定是OLAP类的,并发度非常低,使用不频繁的,且不要在上班时间执行的。并行的时候一定要指定并发度。

你可能感兴趣的:(数据库监控,诊断)