数据库健康状态检查
使用utl指令、statspack、awr来检查数据库的健康状态
前提:
> show parameter time_ timed_statistics;
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ timed_statistics boolean TRUE
1:utl
##在8i之前只有这个方式,当然在后续的版本中还是有这个功能的
$ cd /doiido/oracle/product/11.2.0.1/db_1/rdbms/admin
$ sqlplus / as sysdba
> @utlbstat.sql
> @utlestat.sql
##上面两条指令分别代表了开始时间以及关闭时间,然后会在当前目录下生成一个report.txt文件
2:statspack
##在8i,9i中使用的方法,当然在后续版本中也存在该功能,这个的好处是可以使用JOB去调度它
2.1首先建立一个表空间,也可以不建,但是必须至少有80M的空间
sql> CREATE TABLESPACE statspack DATAFILE ‘/doiido/oracle/oradata/statspack.dbf‘ SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 500M EXTENT MANAGEMENT local UNIFORM SIZE 128K SEGMENT SPACE MANAGEMENT auto;
2.2进行statspack安装
$ cd /doiido/oracle/product/11.2.0.1/db_1/rdbms/admin
$ sqlplus / as sysdba
> @spcreate.sql
##接下来会自动创建一个用户,你需要输入这个用户的的密码,同时还会让你选择默认表空间,默认临时表空间
2.3手动使用statspack生成性能报告。抓取快照,必须2次或更多
sql> conn perfstat/oracle
sql> exec statspack.snap
sql> exec statspack.snap
2.4生成报告
sql> @spreport.sql
##这里会提示你输入报告的开始和结束的快照ID,注意必须是在同一个没有中断数据库的周期内的连续快照,然后会让你选择报告的名字,也可以选择默认,报告生成默认在当前目录下面
2.5其他功能
(1)如果安装过程出错
必须先用spdrop.sql删除,spcreate.sql创建的相关信息
sql> conn / as sysdba
sql> @spdrop.sql
sql> @spcreate.sql
(2)将statspack安装成自动执行,每小时抓取一次快照
> @spauto.sql
##检查任务中是否有这个任务,并且可以看到job的ID
sql> select * from dba_job;
##如果不想自动抓取快照,记下job的ID后执行
sql> conn perfstat/oracle
sql> exec dbms_remove(n)
3:ARW
##在10g之后的版本支持该功能,默认是开启的
$ cd /doiido/oracle/product/11.2.0.1/db_1/rdbms/admin
> @awrrpt.sql
##然后让你选是要什么格式的(默认是html格式的),同样也是要选择开始和结束的快照ID,然后定义输出文件的名字即可,生成也是在当前目录下