ORACLE9以后如果你想用基于成本的优化器,需要定期(每周)对数据库里的表和索引做analyze分析。
数据库参数文件initorasid.ora里默认的优化器 optimizer_mode = choose
你要改成 optimizer_mode = first_rows (OLTP系统)
optimizer_mode = all_rows (DSS 系统)
下面是一个可以在UNIX环境自动生成分析表和索引的脚本analyze.sh
(sys用户的密码password要根据情况修改。)
---------------------------------------------------------------------------------------
su - oracle -c "sqlplus sys/password"<
set pages 9999
set heading off
set echo off
set feedback off
spool /oracle_backup/bin/analyze.sql.
0select