Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle中两个varchar列(来自不同表)之间的正则表达式比较_Sql_Oracle - Fatal编程技术网

Sql Oracle中两个varchar列(来自不同表)之间的正则表达式比较

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

我正试图找到一种从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包含一个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请在帖子的更新部分添加关于你的问题的新信息。你的评论使读者更难理解整体。考虑更新和删除评论。