一步一脚印

欢迎来到一步一脚印>>   | 首页 资源中心 | BUG | 心情驿站 | Linux/Unix技术 | Oracle技术 | ITPUB论坛

statistics_level与SGA_TARGET冲突

发表人:space6212 | 发表时间: 2007年十一月28日, 17:18

今天有朋友数据库启动报错,向我求助。其中报错信息如下:
SQL> startup
ORA-00824: cannot set sga_target due to existing internal settings, see alert log for more information
最后发现问题出在参数设置冲突上,下面模拟这个过程。


--设置参数并重启
SQL> alter system set statistics_level=basic scope=spfile;

System altered.

SQL> show parameter sga_target

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_target big integer 160M

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-00824: cannot set sga_target due to existing internal settings, see alert log for more information

这里报错信息不明确,并且有些误导人。很多人看到这个信息第一时间是去查看background_dump_dest参数设置的路径下查看alert文件,但你会发现在那个路径下alert文件什么有用的信息都没有。
因为此时oracle实例还没有起来,oracle还不知道background_dump_dest设置的路径是什么,所以,无法把出错信息往那个路径下写。
这种情况下,oracle会把alert信息写到$ORACLE_HOME/dbs下(linux系统),在$ORACLE_HOME/dbs下查看alert文件内容:

[oracle@suk1 dbs]$ more alert_test1.log
Wed Nov 28 16:50:10 2007
Cannot set sga_target with statistics_level=BASIC

从这个信息看,错误原因就很明显了:statistics_level=BASIC和sga_target的设置不兼容。

因为在10g中,sga_target>0时,表示启用sga自动管理特性,这个特性是基于oracle收集到的数据库运行状态数据来动态调整SGA的,而如果statistics_level=BASIC的话,oracle只会收集一些很基本的信息,不会收集SGA自动调整需要的信息,导致sga自动调整特性不可用。

知道原因了,解决方法有两种:
1、设置sga_target=0,禁用sga自动调整
2、设置statistics_level=typical

[回复]

要使用10g的SGA动态调整,前提条件就是要
statistics_level=typical 或 all

因为oracle需要使用系统级的统计信息来确定各个内存区域的大小。

古董 | 02/12/2007, 19:22

发表评论

标题

在此添加评论

称呼

邮箱地址(可选)

个人主页(可选)




Valid XHTML 1.0 Strict and CSS. Powered by pLog
Design by Blog.lvwo.com