Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91802718
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-12 13:29:10

 来源:赛迪网技术社区    作者:xl-rao

19.怎么样dump数据库内部结构,如上面显示的控制文件的结构

常见的有

1、分析数据文件块,转储数据文件n的块m

 

alter system dump datafile n block m

2、分析日志文件

alter system dump logfile logfilename;

3、分析控制文件的内容

alter session set events 'immediate trace name CONTROLF level 10'

4、分析所有数据文件头

alter session set events 'immediate trace name FILE_HDRS level 10'

5、分析日志文件头

alter session set events 'immediate trace name REDOHDR level 10'

6、分析系统状态,最好每10分钟一次,做三次对比

alter session set events 'immediate trace name SYSTEMSTATE level 10'

7、分析进程状态

alter session set events 'immediate trace name PROCESSSTATE level 10'

8、分析Library Cache的详细情况

alter session set events 'immediate trace name library_cache level 10'

20.如何获得所有的事件代码

事件代码范围一般从10000 to 10999,以下列出了这个范围的事件代码与信息

SET SERVEROUTPUT ON
DECLARE 
err_msg VARCHAR2(120);
BEGIN
dbms_output.enable (1000000);
FOR err_num IN 10000..10999
LOOP
err_msg := SQLERRM (-err_num);
IF err_msg NOT LIKE '%Message '||err_num||' not found%' THEN
dbms_output.put_line (err_msg);
END IF;
END LOOP;
END;

在Unix系统上,事件信息放在一个文本文件里 $ORACLE_HOME/rdbms/mesg/oraus.msg

可以用如下脚本查看事件信息

  event=10000
  while [ $event -ne 10999 ]
  do
  event=`expr $event + 1`
  oerr ora $event
  done

对于已经确保的/正在跟踪的事件,可以用如下脚本获得

SET SERVEROUTPUT ON
DECLARE
l_level NUMBER;
BEGIN
FOR l_event IN 10000..10999
LOOP
dbms_system.read_ev (l_event,l_level);
IF l_level > 0 THEN
dbms_output.put_line ('Event '||TO_CHAR (l_event)||
' is set at level '||TO_CHAR (l_level));
END IF;
END LOOP;
END;

21.什么是STATSPACK,我怎么使用它?

Statspack是Oracle 8i以上提供的一个非常好的性能监控与诊断工具,基本上全部包含了BSTAT/ESTAT的功能,更多的信息,可以参考附带文档$ORACLE_HOME/rdbms/admin/spdoc.txt。

安装Statspack:

cd $ORACLE_HOME/rdbms/admin

sqlplus "/ as sysdba" @spdrop.sql -- 卸载,第一次可以不需要

sqlplus "/ as sysdba" @spcreate.sql -- 需要根据提示输入表空间名

使用Statspack:

sqlplus perfstat/perfstat

exec statspack.snap; -- 进行信息收集统计,每次运行都将产生一个快照号

-- 获得快照号,必须要有两个以上的快照,才能生成报表

select SNAP_ID, SNAP_TIME from STATS$SNAPSHOT;

@spreport.sql -- 输入需要查看的开始快照号与结束快照号

其他相关脚本s:

spauto.sql - 利用dbms_job提交一个作业,自动的进行STATPACK的信息收集统计

sppurge.sql - 清除一段范围内的统计信息,需要提供开始快照与结束快照号

sptrunc.sql - 清除(truncate)所有统计信息

阅读(159) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~