select * from"> select * from" />
科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道ORACLE学习笔记--性能优化

ORACLE学习笔记--性能优化

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

1. 查询正在执行语句的执行计划(也就是实际语句执行计划) select * from

作者:中国IT实验室 来源:中国IT实验室 2007年10月11日

关键字: ORACLE

在本页阅读全文(共4页)

18.怎么清理临时段

 

可以使用如下办法

 

<1>  使用如下语句查看一下认谁在用临时段

 

SELECT  username,sid,serial#,sql_address,machine,program,

tablespace,segtype,  contents

FROM  v$session  se,v$sort_usage  su

WHERE  se.saddr=su.session_addr

 

<2>  那些正在使用临时段的进程

 

SQL>Alter  system  kill  session  “sid,serial#“;

 

<3>、把TEMP表空间回缩一下

 

SQL>Alter  tablespace  TEMP  coalesce;

 

还可以使用诊断事件

 

<1>  确定TEMP表空间的ts#

 

SQL>  select  ts#,  name  FROM  v$tablespace;

TS#  NAME

-----------------------

0  SYSYEM

1  RBS

2  USERS

3*  TEMP

...

 

<2>  执行清理操作

 

alter  session  set  events  “immediate  trace  name  DROP_SEGMENTS  level  TS#+1“

说明:

temp表空间的TS#    3*,  So  TS#+  1=  4,如果想清除所有表空间的临时段,则,TS#  =  2147483647

 

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,我怎么使用它?

 

StatspackOracle  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)所有统计信息

查看本文来源

    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章