了解Maclean Liu|向Maclean Liu提问 Oracle ALLSTARS 全明星(群内有多位Oracle高级售后support,N位OCM和ACE) QQ群 # QQ群号:23549328 # 已经升级到 2000人群,空位多多。欢迎有一定基础的Oracle骨友加入,现在入群需要经过Maclean的技术面试,欢迎面试,请加QQ号:47079569 为好友参加面试 2群基础群 适合刚入门的同学,会共享最佳入门实践和资料 QQ群 # QQ群号:171092051 # 已经升级到 500人的超级群,空位多多,无需面试

如何重建SYSAUX表空间上的对象

SQL> select file_id,file_name from dba_data_files where tablespace_name='SYSAUX'; FILE_ID ---------- FILE_NAME -------------------------------------------------------------------------------------------------------------------------------------------- 2 /s01/oradata/FIXIT/datafile/o1_mf_sysaux_85wkhmrk_.dbf SQL> alter database datafile 2 offline; Database altered. 假设这里datafile 2即SYSAUX所有的数据文件都丢失了 且没有任何备份,此时我们无法利用任何备份还原该表空间 但是SYSAUX表空间却是数据库必要的系统表空间之一,存放了 AWR等重要数据和其他一些组件的辅助数据 SQL> exec dbms_workload_repository.create_snapshot; BEGIN dbms_workload_repository.create_snapshot; END; * ERROR at line 1: ORA-13509: error encountered during updates to a AWR table ORA-00376: file ORA-00376: file 2 cannot be read at this time ORA-01110: data file 2: '/s01/oradata/FIXIT/datafile/o1_mf_sysaux_85wkhmrk_.dbf' cannot be read at this time ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 99 ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 122 ORA-06512: at line 1   我们需要在 丢失SYSAUX所有数据文件及其备份的情况下 重建该表空间上的对象   除了以上彻底丢失 数据文件的情况, SYSAUX 数据文件存在某些逻辑或物理坏块也可能是重建该表空间上对象的理由 例如以下错误: ORA-00600: [kcbz_check_objd_typ] from MMON slave or its process ORA-00600: [kdsgrp1] while querying WR% tables from SYSAUX 对应不同的AWR负载基表, $ORACLE_HOME/rdbms/admin/目录下存有相关这些系统表的创建脚本,例如: WRI$_OPTSTAT catost.sql - Optimizer Statistics Tables WRI$_ALERT catalrt.sql - Catalog script for server ALeRT WRH$_* catawrtb.sql - Catalog script for AWR Tables catawrvw.sql - Catalog script for AWR Views 接下来我们开始着手重建SYSAUX上的对象,请注意recreate sysaux上的对象是在正常恢复之外的非常规手段,也是恢复SYSAUX的最后一步,不要在产品环境中滥用以下手段:   1. 如果是丢失数据文件导致的问题,那么 先在原SYSAUX表空间加入一个 数据 文件 SQL> alter tablespace sysaux add datafile size 500M; Tablespace altered. 2. 重建对象的第一步是禁用AWR、ASH、ADDM 对于10g执行以下脚本: -- 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; 对于11g直接使用control_management_pack_access 参数 alter system set control_management_pack_access = NONE scope = both;     3. 第二步drop并重建SYSAUX上的数据库监控统计对象: 对于10gR1 执行以下脚本: sqlplus /nolog connect / as sysdba @?/rdbms/admin/catnoawr.sql alter system flush shared_pool; @?/rdbms/admin/catawr.sql   对于 10gR2 执行以下脚本: sqlplus /nolog connect / as sysdba @?/rdbms/admin/catnoawr -- @?/rdbms/admin/catnomwn -- fails with ORA-27479: @?/rdbms/admin/catnomtr @?/rdbms/admin/catnoalr @?/rdbms/admin/catnofus -- Some objects don't have a DROP script, they will have to -- WRR$ drop SEQUENCE WRR$_CAPTURE_ID ; drop TABLE WRR$_CAPTURES ; drop TABLE WRR$_CAPTURE_STATS ; drop TABLE WRR$_FILTERS ; -- WRM$ drop TABLE WRM$_WR_USAGE ; -- WRI$ drop SEQUENCE WRI$_SQLSET_ID_SEQ ; drop SEQUENCE WRI$_SQLSET_REF_ID_SEQ ; drop SEQUENCE WRI$_SQLSET_STMT_ID_SEQ ; drop SEQUENCE WRI$_ADV_SEQ_TASK ; drop SEQUENCE WRI$_ADV_SEQ_DIR ; drop SEQUENCE WRI$_ADV_SEQ_JOURNAL ; drop SEQUENCE WRI$_ADV_SEQ_MSGGROUP ; drop SEQUENCE WRI$_ADV_SEQ_SQLW_QUERY ; drop TABLE WRI$_ADV_DEFINITIONS ; drop TABLE WRI$_ADV_TASKS ; drop TABLE WRI$_ADV_DEF_PARAMETERS ; drop TABLE WRI$_ADV_PARAMETERS ; drop TABLE WRI$_ADV_OBJECTS ; drop TABLE WRI$_ADV_FINDINGS ; drop TABLE WRI$_ADV_RECOMMENDATIONS ; drop TABLE WRI$_ADV_ACTIONS ; drop TABLE WRI$_ADV_RATIONALE ; drop TABLE WRI$_ADV_REC_ACTIONS ; drop TABLE WRI$_ADV_DIRECTIVES ; drop TABLE WRI$_ADV_JOURNAL ; drop TABLE WRI$_ADV_MESSAGE_GROUPS ; drop TABLE WRI$_ADV_USAGE ; drop TABLE WRI$_ADV_SQLW_SUM ; drop TABLE WRI$_ADV_SQLW_STMTS ; drop TABLE WRI$_ADV_SQLW_TABLES ; drop TABLE WRI$_ADV_SQLW_TABVOL ; drop TABLE WRI$_ADV_SQLW_COLVOL ; drop TABLE WRI$_ADV_SQLA_MAP ; drop TABLE WRI$_ADV_SQLA_STMTS ; drop TABLE WRI$_ADV_SQLA_TMP ; drop TABLE WRI$_ADV_SQLA_FAKE_REG ; drop TABLE WRI$_SEGADV_OBJLIST ; drop TABLE WRI$_SEGADV_CNTRLTAB ; drop TABLE WRI$_ADV_ASA_RECO_DATA ; drop TABLE WRI$_OPTSTAT_TAB_HISTORY ; drop TABLE WRI$_OPTSTAT_IND_HISTORY ; drop TABLE WRI$_OPTSTAT_HISTHEAD_HISTORY ; drop TABLE WRI$_OPTSTAT_HISTGRM_HISTORY ; drop TABLE WRI$_OPTSTAT_AUX_HISTORY ; drop TABLE WRI$_OPTSTAT_OPR ; drop TABLE WRI$_ADV_SQLT_BINDS ; drop TABLE WRI$_ADV_SQLT_STATISTICS ; drop TABLE WRI$_ADV_SQLT_PLANS ; drop TABLE WRI$_ADV_SQLT_RTN_PLAN ; drop TABLE WRI$_SQLSET_DEFINITIONS ; drop TABLE WRI$_SQLSET_REFERENCES ; drop TABLE WRI$_SQLSET_STATEMENTS ; drop TABLE WRI$_SQLSET_PLANS ; drop TABLE WRI$_SQLSET_PLANS_TOCAP ; drop TABLE WRI$_SQLSET_STATISTICS ; drop TABLE WRI$_SQLSET_MASK ; drop TABLE WRI$_SQLSET_PLAN_LINES ; drop TABLE WRI$_SQLSET_BINDS ; drop TABLE WRI$_SQLSET_WORKSPACE ; drop TABLE WRI$_ADV_OBJSPACE_CHROW_DATA ; drop TABLE WRI$_ADV_OBJSPACE_TREND_DATA ; drop TYPE WRI$_ADV_ABSTRACT_T ; drop TYPE WRI$_ADV_HDM_T ; drop TYPE WRI$_ADV_SQLACCESS_ADV ; drop TYPE WRI$_ADV_TUNEMVIEW_ADV ; drop TYPE WRI$_ADV_WORKLOAD ; drop TYPE WRI$_ADV_UNDO_ADV ; drop TYPE WRI$_ADV_SQLTUNE ; drop TYPE WRI$_ADV_OBJSPACE_TREND_T ; drop table WRM$_SNAPSHOT_DETAILS;   在10gR2中重建对象的脚本如下: alter system flush shared_pool; alter system flush shared_pool; alter system flush shared_pool; @?/rdbms/admin/catadvtb.sql @?/rdbms/admin/catsvrm.sql @?/rdbms/admin/catsqlt.sql @?/rdbms/admin/catsqltv.sql @?/rdbms/admin/catadv.sql @?/rdbms/admin/catost.sql @?/rdbms/admin/dbmsslrt.sql @?/rdbms/admin/catawrtb.sql 版本10.2.0.2 中可能缺失catnoawr.sql脚本,这不要紧 可以从版本10.2.0.3中拷贝过来用   3. 重新启用AWR、ASH、ADDM 10g执行以下脚本 -- To install, run the package as SYS from SQL*Plus: @dbmsnoawr.plb -- To execute the package use the command: begin dbms_awr.enable_awr(); end;   11g 执行以下脚本 alter system set control_management_pack_access = 'DIAGNOSTIC+TUNING' scope = both;   4. 尝试做一个AWR快照确保重建已经成功 -- Take the AWR snaps exec dbms_workload_repository.create_snapshot; -- wait for 5 min exec dbms_workload_repository.create_snapshot; -- Create the AWR report, run below script @$ORACLE_HOME/rdbms/admin/awrrpt.sql

posted on 2013-03-19 00:48  Oracle和MySQL  阅读(1611)  评论(0编辑  收藏  举报

导航