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

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

30

积分

0

好友

1

主题
1#
发表于 2012-3-12 09:33:03 | 查看: 12029| 回复: 11
数据库alter log 报错,请问是什么原因?
ORA-24010 encountered when generating server alert SMG-3000
2#
发表于 2012-3-12 09:40:50
把完整的alert log压缩打包后上传

回复 只看该作者 道具 举报

3#
发表于 2012-3-12 10:35:54
开始出现问题的时间大概是
Sat Mar 10 20:09:15 CST 2012
ORA-24010 encountered when generating server alert SMG-3000

请帮忙分析一下

alter.rar

426.95 KB, 下载次数: 916

回复 只看该作者 道具 举报

4#
发表于 2012-3-12 10:57:54
ODM DATA:

[oracle@vrh8 ~]$ oerr ora 24010
24010, 00000, "QUEUE %s does not exist"
// *Cause:  The specified queue does not exist.
// *Action: Specify a valid queue. Query USER_QUEUES for all the valid
//          queues.
//
[oracle@vrh8 ~]$ oerr SMG 3000
03000, 00000, "Tablespace [%s] is [%s] full"


10.2.0.5.0  Linux x64 2 nodes RAC


action plan , 跑一下以下SQL语句 贴出结果:
  1. select OWNER, NAME, QUEUE_TABLE from dba_queues where NAME like '%ALERT%';

  2. REM tablespace report

  3. set linesize 200

  4. select a.tablespace_name,
  5.        round(a.bytes_alloc / 1024 / 1024) megs_alloc,
  6.        round(nvl(b.bytes_free, 0) / 1024 / 1024) megs_free,
  7.        round((a.bytes_alloc - nvl(b.bytes_free, 0)) / 1024 / 1024) megs_used,
  8.        round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100) Pct_Free,
  9.        100 - round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100) Pct_used,
  10.        round(maxbytes / 1048576) Max
  11.   from (select f.tablespace_name,
  12.                sum(f.bytes) bytes_alloc,
  13.                sum(decode(f.autoextensible, 'YES', f.maxbytes, 'NO', f.bytes)) maxbytes
  14.           from dba_data_files f
  15.          group by tablespace_name) a,
  16.        (select f.tablespace_name, sum(f.bytes) bytes_free
  17.           from dba_free_space f
  18.          group by tablespace_name) b
  19. where a.tablespace_name = b.tablespace_name(+)
  20. union all
  21. select h.tablespace_name,
  22.        round(sum(h.bytes_free + h.bytes_used) / 1048576) megs_alloc,
  23.        round(sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) /
  24.              1048576) megs_free,
  25.        round(sum(nvl(p.bytes_used, 0)) / 1048576) megs_used,
  26.        round((sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) /
  27.              sum(h.bytes_used + h.bytes_free)) * 100) Pct_Free,
  28.        100 -
  29.        round((sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) /
  30.              sum(h.bytes_used + h.bytes_free)) * 100) pct_used,
  31.        round(sum(f.maxbytes) / 1048576) max
  32.   from sys.v_$TEMP_SPACE_HEADER h,
  33.        sys.v_$Temp_extent_pool  p,
  34.        dba_temp_files           f
  35. where p.file_id(+) = h.file_id
  36.    and p.tablespace_name(+) = h.tablespace_name
  37.    and f.file_id = h.file_id
  38.    and f.tablespace_name = h.tablespace_name
  39. group by h.tablespace_name
  40. ORDER BY 1
  41. /
复制代码

回复 只看该作者 道具 举报

5#
发表于 2012-3-12 12:44:05
SQL> select OWNER, NAME, QUEUE_TABLE from dba_queues where NAME like '%ALERT%';

OWNER                          NAME                           QUEUE_TABLE
------------------------------ ------------------------------ ------------------------------

SQL>
SQL> REM tablespace report
SQL> set linesize 200
SQL>
SQL> select a.tablespace_name,
  2         round(a.bytes_alloc / 1024 / 1024) megs_alloc,
  3         round(nvl(b.bytes_free, 0) / 1024 / 1024) megs_free,
  4         round((a.bytes_alloc - nvl(b.bytes_free, 0)) / 1024 / 1024) megs_used,
  5         round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100) Pct_Free,
  6         100 - round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100) Pct_used,
  7         round(maxbytes / 1048576) Max
  8    from (select f.tablespace_name,
  9                 sum(f.bytes) bytes_alloc,
10                 sum(decode(f.autoextensible, 'YES', f.maxbytes, 'NO', f.bytes)) maxbytes
11            from dba_data_files f
12           group by tablespace_name) a,
13         (select f.tablespace_name, sum(f.bytes) bytes_free
14            from dba_free_space f
15           group by tablespace_name) b
16  where a.tablespace_name = b.tablespace_name(+)
17  union all
18  select h.tablespace_name,
19         round(sum(h.bytes_free + h.bytes_used) / 1048576) megs_alloc,
20         round(sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) /
21               1048576) megs_free,
22         round(sum(nvl(p.bytes_used, 0)) / 1048576) megs_used,
23         round((sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) /
24               sum(h.bytes_used + h.bytes_free)) * 100) Pct_Free,
25         100 -
26         round((sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) /
27               sum(h.bytes_used + h.bytes_free)) * 100) pct_used,
28         round(sum(f.maxbytes) / 1048576) max
29    from sys.v_$TEMP_SPACE_HEADER h,
30         sys.v_$Temp_extent_pool  p,
31         dba_temp_files           f
32  where p.file_id(+) = h.file_id
33     and p.tablespace_name(+) = h.tablespace_name
34     and f.file_id = h.file_id
35     and f.tablespace_name = h.tablespace_name
36  group by h.tablespace_name
37  ORDER BY 1
38  /


TABLESPACE_NAME                MEGS_ALLOC  MEGS_FREE  MEGS_USED   PCT_FREE   PCT_USED        MAX
------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
SYSAUX                              16604       7076       9528         43         57      40960
SYSTEM                               4096       3329        767         81         19      32768
TEMP                                16384      16384          0        100          0          0
TS16K_DATA01                        32768      30753       2016         94          6      32768
TS16K_DW_DATA                       40240      17891      22349         44         56      40240
TS16K_DW_INDX                       60240      24338      35902         40         60      60240
TS16K_ODS_BIGTABLE                  20480       2947      17534         14         86      20480
TS16K_ODS_BIGTABLE_INDX             30240       6918      23322         23         77      30240
TS16K_TRADEDATA                   1048560     157059     891501         15         85    1048560
TS_BD_DW                           163835      29995     133840         18         82     163835
TS_BD_DW_IDX                        63151      28033      35118         44         56      63151
TS_BD_DW_TMP                         4096       4096          0        100          0          0
TS_BOBJ                              2048       2032         16         99          1       2048
TS_DATADIR_DATA                     10240      10010        230         98          2      10240
TS_DATADIR_INDX                     10240      10240          0        100          0      10240
TS_DATAIO                          522197      72854     449344         14         86     522197
TS_DPDW_INDX                       227301      25537     201764         11         89     227301
TS_DPETL_DATA                        8192       8072        120         99          1       8192
TS_DPODS_BIGDATA                   131068      19109     111960         15         85     131068
TS_DPODS_DATA                        8192       8169         23        100          0       8192

TABLESPACE_NAME                MEGS_ALLOC  MEGS_FREE  MEGS_USED   PCT_FREE   PCT_USED        MAX
------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
TS_DPODS_INDX                      194555      31607     162948         16         84     194555
TS_DWTEMP                           64511      64511          0        100          0      32768
TS_DW_BIGDATA                      121872      37320      84552         31         69     121872
TS_DW_DATA                          20192      18236       1956         90         10      20192
TS_ETL_DATA                         10240      10225         15        100          0      10240
TS_INTERFACE                        81920      19565      62355         24         76      81920
TS_INTERFACEIDX                     40768       9184      31584         23         77      40768
TS_INTERFACETEMP                     8192       8192          0        100          0          0
TS_JDGAODE                          32768      22625      10143         69         31      32768
TS_JDTAEP                           32768      30456       2312         93          7      32768
TS_MONITOR_TEMP                     16096      16096          0        100          0          0
TS_MONITOR_WORK                     16384      15677        707         96          4      16384
TS_ODS_DATA                         40780      14349      26431         35         65      40780
TS_ODS_INDX                         10240       8674       1566         85         15      10240
TS_STG_DATA                         10240       9941        299         97          3      10240
TS_STG_INDX                         10240      10240          0        100          0      10240
TS_TAEP                            160000      30328     129672         19         81     160000
TS_TAPETEMP                         32384      32384          0        100          0          0
TS_TRADEDATA_INDEX                 413628      73239     340390         18         82     413628
TS_XW_DATA                          16384      14502       1882         89         11      16384
TS_XW_TEMP                          16384      16384          0        100          0          0

TABLESPACE_NAME                MEGS_ALLOC  MEGS_FREE  MEGS_USED   PCT_FREE   PCT_USED        MAX
------------------------------ ---------- ---------- ---------- ---------- ---------- ----------
UNDOTBS1                            96000      94957       1043         99          1      96768
UNDOTBS2                            96000      90043       5957         94          6      96768
USERS                                   5          5          0         91          9          5

44 rows selected




表空间没有满,请查看上面结果

回复 只看该作者 道具 举报

6#
发表于 2012-3-12 12:58:28
运行一下脚本:

conn / as sysdba
@?/rdbms/admin/catalrt.sql

再次检查select OWNER, NAME, QUEUE_TABLE from dba_queues where NAME like '%ALERT%';

回复 只看该作者 道具 举报

7#
发表于 2012-3-12 13:45:30
SQL> select OWNER, NAME, QUEUE_TABLE from dba_queues where NAME like '%ALERT%';

OWNER                          NAME                           QUEUE_TABLE
------------------------------ ------------------------------ ------------------------------
SYS                            ALERT_QUE                      ALERT_QT
SYS                            AQ$_ALERT_QT_E                 ALERT_QT

回复 只看该作者 道具 举报

8#
发表于 2012-3-12 16:34:12
目前观察,数据库日志信息正常,请LIU帮忙分析原因,谢谢

回复 只看该作者 道具 举报

9#
发表于 2012-3-12 18:50:39
ODM data:
  1. Ora-24010: Queue SYS.ALERT_QUE Does Not Exist In Emagent.Trc

  2. Applies to:
  3. Enterprise Manager Grid Control - Version: 10.2.0.1 to 11.1.0.1 - Release: 10.2 to 11.1
  4. Information in this document applies to any platform.
  5. Symptoms
  6. The <AGENT_ORACLE_HOME>/sysman/log/emagent.trc file fills with errors like below:


  7. SQL = "/* OracleOEM */ DECLARE subscriber sys.aq$_agent;
  8. BEGIN"...
  9. LOGIN =
  10. dbsnmp/<PW>@(DESCRIPTION=(ADDRESS=(PROTO =TCP)(HOST=<hostname>)(PORT
  11. =1521))(CONNECT_DATA=(SID=<sid>)))
  12. 2006-04-21 10:11:46 Thread-130 ERROR recvlets.aq: Error creating subscriber
  13. hirogen_ins_s_3872_testdb01 on <service_name>: ORA-24010: QUEUE
  14. SYS.ALERT_QUE does not exist
  15. ORA-06512: at line 1
  16. 2006-04-21 10:11:46 Thread-130 ERROR recvlets.aq: unable to create subscription
  17. on oracle_database <service_name>
  18. 2006-04-21 10:12:01 Thread-130 WARN vpxoci: OCI Error -- ErrorCode(24010):
  19. ORA-24010: QUEUE SYS.ALERT_QUE does not exist
  20. ORA-06512: at line 1

  21. SQL = "/* OracleOEM */ DECLARE subscriber sys.aq$_agent;
  22. BEGIN"...
  23. LOGIN =
  24. dbsnmp/<PW>@(DESCRIPTION=(ADDRESS=(PROTO =TCP)(HOST=<hostname>)(POR
  25. =1521))(CONNECT_DATA=(SID=<sid>)))
  26. 2006-04-21 10:12:01 Thread-130 ERROR recvlets.aq: Error creating subscriber
  27. hirogen_ins_s_3872_testdb01 on <service_name>: ORA-24010: QUEUE
  28. SYS.ALERT_QUE does not exist
  29. ORA-06512: at line 1
  30. 2006-04-21 10:12:02 Thread-130 ERROR recvlets.aq: unable to create subscription
  31. on oracle_database <service_name>


  32. Cause
  33. The ALERT_QUE is missing; you can check this by running the following query in sqlplus connected as sys on the target database for which the errors are logged :

  34. select NAME, QUEUE_TABLE from DBA_QUEUES;
  35. Solution

  36. 1. Login to SQL*Plus as the SYS user on the target database instance for which the errors are generated.

  37. 2. Run the catalrt.sql script

  38. SQL>@?/rdbms/admin/catalrt.sql

  39. 3. Run the following statements

  40. SQL> select OWNER, NAME, QUEUE_TABLE from dba_queues where NAME like '%ALERT%';

  41. Two rows should be returned:

  42. OWNER NAME QUEUE_TABLE
  43. -------------------- -------------------- ------------------------------
  44. SYS ALERT_QUE ALERT_QT
  45. SYS AQ$_ALERT_QT_E ALERT_QT


  46. 4. SQL>grant OEM_MONITOR to system;

  47. 5. SQL>exec dbms_aqadm.grant_queue_privilege('dequeue','alert_que','OEM_MONITOR',false);

  48. 6. SQL>@?/rdbms/admin/catsnmp.sql

  49. 7. Restart the grid agent:
  50. <AGENT_HOME>/bin/emctl stop agent
  51. <AGENT_HOME>/bin/emctl start agent
复制代码

回复 只看该作者 道具 举报

10#
发表于 2012-3-12 19:01:09
$ORACLE_HOME/rdbms/admin/catalrt.sql

Rem $Header: catalrt.sql 09-dec-2004.14:43:16 ysarig Exp $
Rem
Rem catalrt.sql
Rem
Rem Copyright (c) 2002, 2004, Oracle. All rights reserved.
Rem
Rem    NAME
Rem      catalrt.sql - Catalog script for server ALeRT
Rem
Rem    DESCRIPTION
Rem      Creates tables, sequence, type and queue for server alert
Rem
Rem    NOTES
Rem      Must be run when connected as SYSDBA
Rem

-- Create table of outstanding alerts

这个脚本用来创建 outstanding alert 等组件的对象 , 需要用到 2个Advanced QUEUE 对象::
  1. - Create alert queue table and alert queue
  2. BEGIN
  3.    BEGIN
  4.    dbms_aqadm.create_queue_table(
  5.             queue_table => 'SYS.ALERT_QT',
  6.             queue_payload_type => 'SYS.ALERT_TYPE',
  7.             storage_clause => 'TABLESPACE "SYSAUX"',
  8.             multiple_consumers => TRUE,
  9.             comment => 'Server Generated Alert Queue Table',
  10.             secure => TRUE);
  11.    dbms_aqadm.create_queue(
  12.             queue_name => 'SYS.ALERT_QUE',
  13.             queue_table => 'SYS.ALERT_QT',
  14.             comment => 'Server Generated Alert Queue');
  15.    EXCEPTION
  16.      when others then
  17.        if sqlcode = -24001 then NULL;
  18.        else raise;
  19.        end if;
  20.    END;
  21.    dbms_aqadm.start_queue('SYS.ALERT_QUE', TRUE, TRUE);
  22.    dbms_aqadm.start_queue('SYS.AQ$_ALERT_QT_E', FALSE, TRUE);
  23.    commit;
  24. EXCEPTION
  25.   when others then
  26.      raise;
  27. END;
  28. /
复制代码
而你的DB 中恰恰没有这2个 Queue, 这造成生成的如SMG-3000 这类EM alert无处存放。


在创建DB 时 catproc.sql (all sql scripts for the procedural option)脚本会调用 catsvrm.sql(Catalog script for Server Manageability) , 而 catsvrm.sql 脚本会调用 @@catalrt(Rem Create server alert schema)。

即 catproc.sql => catsrvm.sql => catalrt.sql

至于为什么 catalrt相关的2个QUEUE 不存在了, 需要你们自己排查。

回复 只看该作者 道具 举报

11#
发表于 2012-3-13 09:17:51
这个高级队列应该原来是有的,如果没有的话,早就应该报错了。
还有,我在建立库表的时候就没有安装EM,怎么会造成生成的如SMG-3000 这类EM alert无处存放错误呢?
这个继续观察分析

回复 只看该作者 道具 举报

12#
发表于 2012-3-13 10:55:20
这2个Advanced Queue 原本应当是存在的, 具体怎么消失了 可能是被人为drop 了或者运行了什么脚本, 请自行排查

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-11-15 10:44 , Processed in 0.053807 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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