oracle数据库级别优化分析工具介绍
author:skate
time:2010/03/04
oracle数据库级别优化分析工具介绍
当我们对数据库优化诊断时,需要收集相应的信息以供参考,从个人的使用经验来说,这种统计数据分为两大类
一类是数据库级别的统计信息
二类是os级别的统计信息
下面就分别介绍在不同的级别下,常用什么工具来收集信息帮助优化诊断
首先是oracle数据库级别优化分析工具介绍
目录:
1.statspack
2.ASH
3.AWR
4.ORACLE EXPLAIN PLAN的总结(查询sql的执行计划)
a.autotrace
b.explain的使用
1.statspack
a。安装
sql> sqlplus "/ as sysdba"
SQL> select file_name from dba_data_files;
SQL> create tablespace perfstat datafile 'e:\oracle\oradata\skate\perfstat.dbf' size 2000m;
sql> @ORACLE_HOME\rdbms\admin\spcreate.sql
b。使用
SQL> conn perfstat/passwd
收集统计信息
sql> execute statspack.snap
或
SQL> exec statspack.SNAP(i_snap_level =>5);
生成报告
sql> @ORACLE_HOME\rdbms\admin\spreport.sql
定时收集信息有两种方式,一种是oracle job,一种是os的crontab,我比较习惯用os级别的crontab
设定其每个小时自动收集一次采样的job
declare
Variable job number ;
begin
dbms_job.submit(:job, "statspack.snap;" ,trunc( sysdate + 1/24 , 'hh24' ), "trunc(sysdate+1/24,'hh24')" );
commit ;
end ;
/
查看job使用情况
SQL> select job,schema_user,next_date,interval,what from user_jobs
自动停止采样job
declare
Variable job number ;
begin
dbms_job.submit(:job, "dbms_job.broken(44,true);" ,trunc( sysdate + 1 ), "null" );
commit ;
end ;
/
清空所有stats统计信息表里的数据
sql> @ORACLE_HOME\rdbms\admin\sptrunc.sql
snapshot的level,这可以通过EXEC STATSPACK.MODIFY_STATSPACK_PARAMETER(i_snap_level=N)来修改,N可以为0,5,6,7,10,缺省为5。
0 仅提供一般性能统计
5 增加了对SQL语句总体分析
6 增加了SQL计划和使用
7 增加了分段(Segments)级的统计
10增加了对闩锁(Latches)的分析
其中文档建议对10要慎重,因为代价较高。
eg:
SQL> exec statspack.SNAP(i_snap_level =>6);
oracle不仅提供生成
相关文档:
在数据库服务器上,建立了一个用户test,然后使用命令drop user test cascade删除了用户,接着也删除了这个用户的数据文件/opt/oracle/oradata/test/testdata.dbf。当在登录数据库时,能够启动实例,但是打不开数据库,系统报错:
ORA-01157: c ......
author:skate
time:2010/03/03
oracle常用数据类型
今天同事问些数据类型的问题,有的还真有点记不清了,于是就简单总结下常用的数据类型以备日后查用
1、Char
定长格式字符串,在数据库中存储时不足位数填补空格,它的声明方式如下CHAR(L),L为字符串长度,
缺省为1,作为变量最大32767个字符,作为数据存储在ORA ......
一、需要查询的数据
1
、查询出月薪大于
'SMITH'
的所有员工资料
select *from emp where
sal>(select sal from emp where name="SMITH");
2
、查询所有员工的姓名及领导姓名
select e1.ename,e2.ename from
emp e1,emp e2 where e1.mgr=e2.empno(+);
3
......
开启:
net start oracledbconsoleorcl
net start oracleOraDb10g_home1iSQL*Plus
net start oracleOraDb10g_home1TNSListener
net start oracleServiceORCL
net start oraclejobschedulerorcl //可以禁用
关闭:
net stop oracledbconsoleorcl
net stop oracleOraDb10g_home1iSQL*Plus
net stop oracleOraDb10g_h ......
1.DUAL表的用途
Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中
--查看当前连接用户
SQL> select user from dual;
USER
------------------------------
SYSTEM
--查看当前日期、时间
SQL> select sysdate from dual;
SYSDATE
-----------
2007-1-2 ......