Sql Oracle中两个varchar列(来自不同表)之间的正则表达式比较
我正试图找到一种从oracle alertlog捕获相关错误的方法。我有一个表ORA_黑名单,列值如下,这些是我想忽略的值 V$DIAG\u ALERT\u EXT 下面是ORA_黑名单表中的样本数据。此表可能会根据alertlog中要忽略的其他错误而增长Sql Oracle中两个varchar列(来自不同表)之间的正则表达式比较,sql,oracle,Sql,Oracle,我正试图找到一种从oracle alertlog捕获相关错误的方法。我有一个表ORA_黑名单,列值如下,这些是我想忽略的值 V$DIAG\u ALERT\u EXT 下面是ORA_黑名单表中的样本数据。此表可能会根据alertlog中要忽略的其他错误而增长 ORA-07445%[kkqctdrvJPPD ORA-07445%[kxsPurgeCursor ORA-01013% ORA-27037% ORA-01110 ORA-2154 V$DIAG\u ALERT\u EXT包含一个MESSA
ORA-07445%[kkqctdrvJPPD
ORA-07445%[kxsPurgeCursor
ORA-01013%
ORA-27037%
ORA-01110
ORA-2154
V$DIAG\u ALERT\u EXT包含一个MESSAGE\u文本列,其中包含如下示例文本
ORA-01013: user requested cancel of current operation
ORA-07445: exception encountered: core dump [kxtogboh()+22] [SIGSEGV] [ADDR:0x87] [PC:0x12292A56]
ORA-07445: exception encountered: core dump [java_util_HashMap__get()] [SIGSEGV]
ORA-00600: internal error code arguments: [qercoRopRowsets:anumrows]
我想写一个如下的查询来忽略黑名单上的错误,只捕获如下的相关信息
ORA-01013: user requested cancel of current operation
ORA-07445: exception encountered: core dump [kxtogboh()+22] [SIGSEGV] [ADDR:0x87] [PC:0x12292A56]
ORA-07445: exception encountered: core dump [java_util_HashMap__get()] [SIGSEGV]
ORA-00600: internal error code arguments: [qercoRopRowsets:anumrows]
挑选
dae.instance_id,
dae.U名称,
算了吧,
dae.U级消息
从…起
ORA_黑名单ob,
V$DIAG\u ALERT\u EXT dae
哪里
由……分组
有人能建议一种方法或示例代码来实现它吗
我应该提供黑名单表的确切内容。它当前包含一些正则表达式perl,我想将其转换为类似oracle的正则表达式,并与v$diag\u alert\u ext message\u text列进行比较。下面是我的黑名单表中的perl正则表达式示例
ORA-0,|$|
ORA-48913
ORA-00060
ORA-609,|$|
ORA-65011
ORA-65020 ORA-31,|$|
ORA-7452 ORA-959,|$|
ORA-3136,| |$|
ORA-07445.[kkqctdrvJPPD
ORA-07445。[kxsPurgeCursor–您的黑名单表看起来像模式,而不是正则表达式
您可以编写如下查询:
select dae.* -- or whatever columns you want
from V$DIAG_ALERT_EXT dae
where not exists (select 1
from ORA_BLACKLIST ob
where dae.message_text like ob.<column name>
);
<>这将不会有特别好的性能,如果表很大。 @ PrimTiPrabasaHoo请在帖子的更新部分添加关于你的问题的新信息。你的评论使读者更难理解整体。考虑更新和删除评论。