oracle 10g和11g版本数据库重建awr的例子

由于某种原因,比如数据异常断电,导致awr数据严重不一致,awr部分表损坏等情况,需要重建awr,可以参考如下步骤进行重建,本文主要针对目前主流的10g和11g版本数据库,12c未进行测试
停止awr自动收集信息

方法1:参数调整

sqlplus /nolog
connect / as sysdba
create pfile='/tmp/pfile.xifenfei' from spfile;
alter system set shared_pool_size = 200m scope = spfile;
alter system set db_cache_size = 300m scope = spfile;
alter system set java_pool_size = 100m scope = spfile;
alter system set large_pool_size = 50m scope = spfile;

--内存值可以根据实际情况调整

alter system reset sga_target  scope = spfile sid='*';
alter system set statistics_level=basic scope=spfile;
--11G
alter system reset memory_target scope= spfile sid='*';
alter system reset memory_max_target scope=spfile sid='*';
alter system set sga_target=0 scope= spfile;
alter system set memory_target=0 scope= spfile;
--RAC
alter system set cluster_database = false scope = spfile;

方法2:使用包/参数

For 10g, you need to download the package DBMS_AWR.DISABLE_AWR available at Note 436386.1 Package
for disabling AWR without a Diagnostic Pack license in Oracle To
install, run the package as SYS from SQL*Plus:
@dbmsnoawr.plb
To execute the package, use the command:
begin dbms_awr.disable_awr(); end;
 
For 11g, use the parameter control_management_pack_access to disable it
alter system set control_management_pack_access = NONE scope = both;

方法1:需要重启数据库

如果选择方法2,忽略此步骤

sqlplus /nolog
connect / as sysdba
shutdown immediate
startup restrict
删除AWR
start ?/rdbms/admin/catnoawr.sql 
--由于Bug 5376177在10.2.0.1/2中可能没有catnoawr.sql文件,可以从10.2.0.3/4中拷贝过来
 
alter system flush shared_pool;
 
--验证awr数据数据删除情况

select table_name from dba_tables where table_name like 'WRM$_%' or table_name like 'WRH$_%';
如果有记录存在,使用drop table 语句删除

创建AWR

start ?/rdbms/admin/catawrtb.sql
start ?/rdbms/admin/utlrp.sql
--11G
start ?/rdbms/admin/execsvrm.sql
alter package dbms_swrf_internal compile;
alter package dbms_swrf_internal compile body;
start ?/rdbms/admin/execsvrm.sql
重启数据库
方法1对应处理
create spfile from pfile='/tmp/pfile.xifenfei';
shutdown immediate
startup

方法2对应处理

--11g
alter system set control_management_pack_access = 'DIAGNOSTIC+TUNING' scope = both;
shutdown immediate
startup
 
--10g
@dbmsnoawr.plb
begin dbms_awr.enable_awr();end;

处理无效对象

spool 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 <schema name>.<package_name> compile;
alter package <schema name>.<package_name> compile body;
alter view <schema name>.<view_name> compile;
alter trigger <schema).<trigger_name> compile;

测试AWR

--收集快照
exec dbms_workload_repository.create_snapshot;
--wait for 5 min
exec dbms_workload_repository.create_snapshot;
 
--生成awr报告

start $ORACLE_HOME/rdbms/admin/awrrpt.sql

注意BUG

Bug:17063159 CATNOAWR.SQL NOT DROPPING ALL AWR TABLES
Bug:10211252 ‘DROP TABLE WRM$_WR_USAGE MISSING IN CATNOAWR.SQL
Bug:9150463 CANNOT RECREATE THE AWR ON R11.1

时间: 2024-08-02 04:44:11

oracle 10g和11g版本数据库重建awr的例子的相关文章

Oracle 10g中用RMAN恢复数据库功能增强

我们知道在Oracle 10g R2以前的版本中,如果使用RMAN恢复数据库,临时表空间的临时文件是不会自动恢复的. 这曾经引发了一系列的麻烦,很多DBA在恢复完成之后忘记添加临时文件,经常到应用出错时才能发现. 从Oracle 10g R2开始,使用RMAN恢复数据库之后,Oracle会自动重新创建临时文件,由于临时文件是Sparse File,所以创建会非常迅速,通常你不会感觉得到. 以下是我曾经恢复的一段日志,其中记录了Oracle的恢复处理过程: Thu Sep 14 22:52:06

使用带dblink方式的datapump迁移Oracle 10g到11g

      对于从Oracle 10g下迁移数据库到Oracle 11g,除了使用RMAN方式之外,我们可以使用带dblink的datapump方式来实现基于逻辑上的迁移.其步骤也相对简单,而且不会产生中间过程生成的dump文件.本文即针对如何使用该方法给出了示例,供大家参考.   1.确保源数据库和目标数据库处于可用状态 --环境描述 --源库: mftst Oracle 10.2.0.3 + Enterprise Linux Enterprise Linux Server release 5

oracle 10g rac及单实例开启归档操作例子

一.单实例开启归档日志的顺序 1.首先需要对原参数文件进行备份 create pfile='f:\pfile1018.ora' from spfile; 2.调整归档日志的格式 alter system set log_archive_format='%s_%t_%r.log' scope=spfile; 3.设置归档路径 在做这一步之前,先要建好目录 alter system set log_archive_dest_1='location=/u01/app/oracle/archive';

从Oracle 10g到11g,到底该升不该升?

    话题 Topic Oracle 10gR2目前运行比较平稳,从你的角度来说说,是否有升级的必要性?可从正反两方面来讨论,先抛出论点,再阐述论据.(本期话题贡献人:杨志洪)    正方:升  彭小波:在今年的7月份,我们10多套生产库从10g升级到了11g,高版本是下兼容的,10g在市场运行了这么多年,是相当稳定了.但是11g中改进了很多优化器的算法,也增加很多新特性.不管是从优化,还是管理上,对DBA来说都是一大福音.在升级的过程,我们也遇到一点小问题.   1.在10g升级到11g时,

Oracle 10g 到11g的数据迁移 导入导出 顺序步骤 expdp/impdp

原库版本:Oracle 10.2.0.4.0 目标库版本:Oracle 11.2.0.1.0 使用expdp导出原库数据: expdp system/xxxxxx schemas=test1201 directory=easbak dumpfile=test1201.dmp logfile=zytest1201.log; impdp前准备: 1:确保目标数据库和原库字符集一致 2:创建好所需表空间,可以在原库里查询test1201这个用户使用了哪些表空间查询语句如下: select distin

用EXP/IMP从高版本数据库导出至低版本数据库导入实验

一般来说,从低版本数据库EXP数据,导入至高版本数据库是没什么问题的,因为Oracle数据库在开发设计的时候,考虑了同以前版本的兼容.但是从高本数据库EXP导出数据,导入至低版本数据库,经常会有各种各样的问题. 在,在Oracle9i之前,不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决: 1).在高版本数据库上运行底版本的catexp.sql:11G的库里运行10G数据库软件下ORACLE_HOME/rdbms/admin/catexp.sql 2).使用低版本的EXP来导出高

[Oracle 10g] 表空间更名

oracle [Oracle 10g] 表空间更名作者:Fenng 日期:24-Oct-2004 出处:http://www.dbanotes.net版本:0.1 简单介绍在 Oracle 10g 以前的版本,更改表空间名字是几乎不可能的事情,除非删除,重新创建,大费周章.Oracle 10g 新添加了一项更改表空间名字的功能,使得更改表空间名字瞬间即可完成.是个较为人性化的功能. SQL> COL FILE_NAME format a70SQL> SET linesize 120SQL>

Oracle 10g列掩码与关系视图比较

在前面的文章,我为大家介绍了如何使用Oracle 10g的虚拟私有数据库特征(VPD)掩藏某列数据TechRepublic的成员BrooklynPennyPincher建议我写一篇关于VPD与关系视图的比较文章. 前面文章中小技巧的任务是如果department_id的值等于60,那么掩藏报告中的salary和commission_pct列.因为谓词是一个静态值,所以一个关系视图肯定也能够完成同样的任务. 列表A显示了使用选择器CASE语句(这个语句在Oracle SQL的8i版本有了)比较de

修改oracle 10g的字符集

修改oracle 10g的字符集 修改数据库字符集为:ZHS16GBK查看服务器端字符集SQL > select * from V$NLS_PARAMETERS;修改:$sqlplus /nologSQL>conn / as sysdba若此时数据库服务器已启动,则先执行 SHUTDOWN IMMEDIATE 命令关闭数据库服务器,然后执行以下命令:SQL>shutdown immediateSQL>STARTUP MOUNTSQL>ALTER SYSTEM ENABLE R