Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

-2

积分

1

好友

3

主题
1#
发表于 2013-10-4 15:57:10 | 查看: 3780| 回复: 12
数据库版本:10.2.0.4
操作系统:HP_UNIX
服务器在13:00-15:00之间出现间隔性CPU使用率100%,怀疑是delete from smon_scn_time where thread=0 and scn = (select min(scn) from smon_scn_time where thread=0)  这个SQL引起的,但不懂原理,请刘大及各位朋友看看,谢谢!

AWR报告.zip

102.09 KB, 下载次数: 1092

AWR报告和不同时间段SQL报告

2#
发表于 2013-10-4 16:13:10
select index_name,status from dba_indexes where table_name='SMON_SCN_TIME';
select LAST_ANALYZED,num_rows from dba_tables where table_name='SMON_SCN_TIME';


给出上面的查询结果

conn / as sysdba
alter system flush buffer_cache;

alter session set events '10046 trace name context forever,level 8';
delete from smon_scn_time where thread=0 and scn = (select min(scn) from smon_scn_time where thread=0);

oradebug setmypid
oradebug tracefile_name;


给出压缩打包的trace文件

回复 只看该作者 道具 举报

3#
发表于 2013-10-4 16:42:00
按照要求做的10046

20131004.txt

15.86 KB, 下载次数: 759

10046事件

回复 只看该作者 道具 举报

4#
发表于 2013-10-4 16:47:35
请不要自作聪明, action plan 就一步步做,否则没人能帮你

回复 只看该作者 道具 举报

5#
发表于 2013-10-4 18:08:22
select index_name,status from dba_indexes where table_name='SMON_SCN_TIME';
          SMON_SCN_TIME_TIM_IDE   VALID
          SMON_SCN_TIME_SCN_IDE  VALID
select LAST_ANALYZED,num_rows from dba_tables where table_name='SMON_SCN_TIME';
          2013-05-01      81023

不好意思,兄弟第一次提问,有点急了,恳请刘大原谅!谢谢

soadb1_ora_28229.zip

1.74 KB, 下载次数: 1077

TRACE文件

回复 只看该作者 道具 举报

6#
发表于 2013-10-4 18:24:54
问题解决掉了,但是操作方法不合理,我是先rebuilt两个索引,然后收统了一下统计信息,结果CPU持续了好长一段时间后才恢复,但是有一点不太明白,数据库的统计信息JOB在跑,为什么这个表的统计信息这么旧,同时希望刘大指点一下正确的处理步骤,第一次发贴,不懂规矩,还请原谅,下不为例,谢谢!

回复 只看该作者 道具 举报

7#
发表于 2013-10-4 19:50:23
1、 简单来说是 索引没问题,  统计信息stale 造成 执行计划不当
2、 收集统计信息 不会立即使游标失效 ,具体见http://www.askmaclean.com/archiv ... -invalidations.html

3、 统计信息job并不会每天都更新所有表的统计信息

4、 信息扔有所不足 ,无法回答所有疑问

回复 只看该作者 道具 举报

8#
发表于 2013-10-4 21:12:32
非常感谢刘大,再请教您一个问题,SMON_SCN_TIME这个表在10g中不是大约7分钟左右都要更新一次吗,我10g库中默认统计信息JOB每天都在跑,而且日志显示也是运行成功的,那么按照此表的更新频率,这么多天应该修改超过10%,为什么没收集到它呢?还有哪些表需要注意一下统计信息?麻烦您有空回复一下,非常感谢!

回复 只看该作者 道具 举报

9#
发表于 2013-10-4 21:21:06
信息扔有所不足 ,无法回答所有疑问

回复 只看该作者 道具 举报

10#
发表于 2013-10-4 22:03:52
需要哪此信息提供给您?

回复 只看该作者 道具 举报

11#
发表于 2013-10-4 22:19:44
  1.    SELECT *
  2.     FROM (SELECT '1.v$sql'||'实例号:'||GV$SQL.inst_id source,
  3.                  SQL_ID,
  4.                  plan_hash_value,
  5.                  TO_CHAR (FIRST_LOAD_TIME) begin_time,
  6.                  '在cursor cache中' end_time,
  7.                  executions "No. of exec",
  8.                  (buffer_gets / executions) "LIO/exec",
  9.                  (cpu_time / executions / 1000000) "CPUTIM/exec",
  10.                  (elapsed_time / executions / 1000000) "ETIME/exec",
  11.                  (disk_reads / executions) "PIO/exec",
  12.                  (ROWS_PROCESSED / executions) "ROWs/exec"
  13.             FROM Gv$SQL
  14.            WHERE sql_id = '&A'
  15.           UNION ALL
  16.           SELECT '2.sqltuning set' source,
  17.                  sql_id,
  18.                  plan_hash_value,
  19.                  'JUST SQLSET NO DATE' begin_time,
  20.                  'JUST SQLSET NO DATE' end_time,
  21.                  EXECUTIONS "No. of exec",
  22.                  (buffer_gets / executions) "LIO/exec",
  23.                  (cpu_time / executions / 1000000) "CPUTIM/exec",
  24.                  (elapsed_time / executions / 1000000) "ETIME/exec",
  25.                  (disk_reads / executions) "PIO/exec",
  26.                  (ROWS_PROCESSED / executions) "ROWs/exec"
  27.             FROM dba_sqlset_statements
  28.            WHERE SQL_ID = '&A'
  29.           UNION ALL
  30.           SELECT '3.dba_advisor_sqlstats' source,
  31.                  sql_id,
  32.                  plan_hash_value,
  33.                  'JUST SQLSET NO DATE' begin_time,
  34.                  'JUST SQLSET NO DATE' end_time,
  35.                  EXECUTIONS "No. of exec",
  36.                  (buffer_gets / executions) "LIO/exec",
  37.                  (cpu_time / executions / 1000000) "CPUTIM/exec",
  38.                  (elapsed_time / executions / 1000000) "ETIME/exec",
  39.                  (disk_reads / executions) "PIO/exec",
  40.                  (ROWS_PROCESSED / executions) "ROWs/exec"
  41.             FROM dba_sqlset_statements
  42.            WHERE SQL_ID = '&A'
  43.           UNION ALL
  44.           SELECT DISTINCT
  45.                  '4.dba_hist_sqlstat' || '实例号:' || SQL.INSTANCE_NUMBER
  46.                     source,
  47.                  sql_id,
  48.                  PLAN_HASH_VALUE,
  49.                  TO_CHAR (s.BEGIN_INTERVAL_TIME ,'YYYY-MM-DD hh24:mi:ss') begin_time,
  50.                  TO_CHAR (s.END_INTERVAL_TIME,'YYYY-MM-DD hh24:mi:ss') end_time,
  51.                  SQL.executions_delta,
  52.                  SQL.buffer_gets_delta
  53.                  / DECODE (NVL (SQL.executions_delta, 0),
  54.                            0, 1,
  55.                            SQL.executions_delta)
  56.                     "LIO/exec",
  57.                  (SQL.cpu_time_delta / 1000000)
  58.                  / DECODE (NVL (SQL.executions_delta, 0),
  59.                            0, 1,
  60.                            SQL.executions_delta)
  61.                     "CPUTIM/exec",
  62.                  (SQL.elapsed_time_delta / 1000000)
  63.                  / DECODE (NVL (SQL.executions_delta, 0),
  64.                            0, 1,
  65.                            SQL.executions_delta)
  66.                     "ETIME/exec",
  67.                  SQL.DISK_READS_DELTA
  68.                  / DECODE (NVL (SQL.executions_delta, 0),
  69.                            0, 1,
  70.                            SQL.executions_delta)
  71.                     "PIO/exec",
  72.                  SQL.ROWS_PROCESSED_DELTA
  73.                  / DECODE (NVL (SQL.executions_delta, 0),
  74.                            0, 1,
  75.                            SQL.executions_delta)
  76.                     "ROWs/exec"
  77.             FROM dba_hist_sqlstat SQL, dba_hist_snapshot s
  78.            WHERE     SQL.INSTANCE_NUMBER = s.INSTANCE_NUMBER
  79.                  AND SQL.dbid = (SELECT dbid FROM v$database)
  80.                  AND s.snap_id = SQL.snap_id
  81.                  AND sql_id IN ('&A'))
  82. ORDER BY source, begin_time DESC;
复制代码
执行上面的脚本并输入SQL_ID , 结果贴出来

回复 只看该作者 道具 举报

12#
发表于 2013-10-4 22:57:18
保存了一个txt文件格式比较乱,用QQ截图给您截了三部份,如果需要我再给你传其它的,谢谢

第1个.png (56.24 KB, 下载次数: 208)

第1个.png

第2个.png (53.95 KB, 下载次数: 210)

第2个.png

第3个.png (50.6 KB, 下载次数: 219)

第3个.png

已有 1 人评分威望 理由
Maclean Liu(刘相兵 -2 这种东西居然截图,难以理解你的想法.

总评分: 威望 -2   查看全部评分

回复 只看该作者 道具 举报

13#
发表于 2013-10-4 23:06:21
这种东西居然截图,难以理解你的想法.

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-6-15 13:43 , Processed in 0.055376 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569