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

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

0

积分

1

好友

6

主题
1#
发表于 2013-12-13 23:44:36 | 查看: 3821| 回复: 3
数据库版本:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for HPUX: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
操作系统版本:
HP-UX husoaa04 B.11.31 U ia64
问题描述:
从主机层面可以看到SMON进程CPU使用率过高
1.png
从AWR报告中可以看到如下SQL语句大量的被执行
delete from smon_scn_time where thread=0 and time_mp = (select min(time_mp) from smon_scn_time where thread=0);
2.png
对表结构进行分析报错
3.png

处理:
删除索引
drop index smon_scn_time_scn_idx;
drop index smon_scn_time_tim_idx;
创建索引
create unique index smon_scn_time_scn_idx on smon_scn_time(scn);
create unique index smon_scn_time_tim_idx on smon_scn_time(time_mp);
分析smon_scn_time表和索引
analyze table smon_scn_time validate structure cascade;

但是处理完成后还出现smon进程占用CPU过高的情况。
2.png
smom_scn_time 表中数据并长时间没有更新。

请问上述问题,需要手动清理smon_scn_time表中数据吗?还是需要观察一段时间?

awrrpt_1_24997_24998.html (254.74 KB, 下载次数: 602) awrrpt_1_24998_24999.html (235.79 KB, 下载次数: 579) awrsqlrpt_1_24998_24999.html (10.96 KB, 下载次数: 598)





2#
发表于 2013-12-14 16:03:18
搞清楚smon执行的SQL有没有完成过, 虽然你创建了索引,但不代表 smon就能立即用上。

一般来说重启可以绕过该问题

回复 只看该作者 道具 举报

3#
发表于 2013-12-14 17:12:25
问题凌晨时候就处理了,处理完成后,我检查了一下无效对象。看到有不少sys的对象失效了,我重新编了无效对象后,smon_scn_time中的数据正常跟新了

回复 只看该作者 道具 举报

4#
发表于 2013-12-16 22:41:16
--查询无效对象无语
SELECT owner, object_type, object_name, status
FROM all_objects
WHERE status = 'INVALID'
ORDER BY owner;

--编译无效 SQL 脚本,然后运行语句
SELECT CASE WHEN object_type = 'SYNONYM' AND owner = 'PUBLIC' THEN
            'alter ' || owner || ' ' || DECODE(object_type, 'PACKAGE BODY', 'PACKAGE', object_type) || ' ' || object_name || ' ' || DECODE(object_type, 'PACKAGE BODY', 'COMPILE BODY', 'COMPILE') || ';'
            ELSE
            'alter ' || DECODE(object_type, 'PACKAGE BODY', 'PACKAGE', object_type) || ' ' || owner || '.' || object_name || ' ' || DECODE(object_type, 'PACKAGE BODY', 'COMPILE BODY', 'COMPILE') || ';'
            END "SQL_COMMANDS"
            FROM dba_objects
            WHERE object_type IN ('PACKAGE', 'PACKAGE BODY', 'VIEW', 'PROCEDURE', 'FUNCTION', 'TRIGGER', 'SYNONYM')
            AND status = 'INVALID'
            ORDER BY DECODE(object_type, 'TRIGGER', '99', '00');

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-6-2 07:43 , Processed in 0.052474 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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