Chinaunix首页 | 论坛 | 博客
  • 博客访问: 81324
  • 博文数量: 65
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 500
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-30 11:16
个人简介

cuug

文章分类
文章存档

2014年(65)

我的朋友

分类: Oracle

2014-05-09 10:02:20

如果在日常工作中遇见了AWR数据量太大,可以通过如下方式做以清除:

SQL> select distinct dbid,db_name,instance_name from wrm$_database_instance;
DBID DB_NAME   INSTANCE_NAME                                           
---------- --------- ----------------                                 
2691876695 MYDB      mydb     


运行如下脚本,清除AWR数据:
SQL> @?\rdbms\admin\catnoawr.sql
 (略)


不重启的话,清空共享池
alter system flush shared_pool;


运行重建AWR脚本:
SQL> @?\rdbms\admin\catawrtb.sql
 (略)


会话已更改


SQL> @?\rdbms\admin\utlrp.sql


(略)


 




Oracle 11g需要需要运行如下脚本:
SQL> @?\rdbms\admin\execsvrm.sql


SQL> exec dbms_workload_repository.create_snapshot;


PL/SQL 过程已成功完成。


如果不对存储过程进行重新编译,执行快照过程会提示如下问题:


SQL> exec dbms_workload_repository.create_snapshot;
BEGIN dbms_workload_repository.create_snapshot; END;


*
第 1 行出现错误: 
ORA-13516: AWR 操作失败: AWR Schema not initialized
ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSITORY", line 99
ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSITORY", line 122
ORA-06512: 在 line 1


在重新编译了存储过程后,存储过程运行正常


 


隔5分钟后,再次运行:
SQL> exec dbms_workload_repository.create_snapshot;


PL/SQL 过程已成功完成。
SQL> @?/rdbms/admin/awrrpt.sql


注意在RAC环境下的话,需要取消集群参数后,待执行完成后再次修改过来:
alter system set cluster_database = false scope = spfile;


 




当然在重建后我们需要进一步检查下相关对象是否存在异常,对于存在异常的对象需要重新编译:


pool objects.lst                                                                  
set pagesize500                                                                   
set linesize 100                                                                  
                                                                                  
select substr(comp_name,1,40) comp_name, status, substr(version,1,10) version     
from dba_registry                                                                 
order by comp_name;                                                               
                                                                                  
select substr(object_name,1,40) object_name,substr(owner,1,15) owner,object_type  
from dba_objects                                                                  
where status='INVALID' order by owner,object_type;                                
                                                                                  
select owner,object_type,count(*)                                                 
from dba_objects                                                                  
where status='INVALID'                                                            
group by owner,object_type order by owner,object_type ;                           
                                                                                  
spool off                                                                         
                                                                                  
alter package . compile;                               
alter package . compile body;                          
alter view . compile;                                     
alter trigger compile;       
阅读(260) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~