查询某系统统计信息是否开启,并每周六上午11点进行重要用户统计信息
1.查看用户统计信息是否开启
SQL> SELECT OWNER,TABLE_NAME,LAST_ANALYZED FROM DBA_TABLES ORDER BY LAST_ANALYZED;
OWNER			       TABLE_NAME		      LAST_ANALYZE
------------------------------ ------------------------------ ------------
SMCS2			       SM_UNSENT_SM_LIST201512	      10-OCT-16
SMCS2			       SM_UNSENT_SM_LIST201601	      10-OCT-16
3522 rows selected.
2.查出主要的用户
SQL> select OWNER,sum(BYTES/1024/1024/1024) g from dba_segments group by OWNER order by 2;
OWNER                                   G
------------------------------ ----------
SYS                            5.45959473
YXT2AI                         16.0548706
SMCS2                          92.6923828
SMS                            361.692993
3.然后统计主要用户的统计信息
--oracle中一般一个用户对应一个schema,默认的缺省值和用户名相同
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SYS',degree=>8,cascade=>true);
exit
4.写shell脚本:
chmod 755 gather_schema_stats.sh
写shell脚本:
#!/bin/sh
. ~/.bash_profile
cd  /home/oracle/tsmscript/
date>>gather_schema_stats.log
echo "gather_schema_stats begin.">>gather_schema_stats.log
sqlplus "/as sysdba"<
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('YXT2AI',degree=>8,cascade=>true);
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SMCS2',degree=>8,cascade=>true);
EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SMS',degree=>8,cascade=>true);
exit
EOF
date>>gather_schema_stats.log
echo "gather_schema_stats end.">>gather_schema_stats.log
mv gather_schema_stats.log log/gather_schema_stats_`date +%Y%m%d%H%M`.log
5.crontab:要求每周六早上11点,记日志 
##add for gather schema stats
00 11 * * 6 /home/oracle/tsmscript/gather_schema_stats.sh >/tmp/gather.log 2>&1