Oracle 需要一些关于以下查询的建议吗
我需要一些关于以下问题的建议Oracle 需要一些关于以下查询的建议吗,oracle,oracle10g,dataguard,Oracle,Oracle10g,Dataguard,我需要一些关于以下问题的建议 SQL> select value from v$dataguard_stats where name like 'apply lag'; VALUE ---------------------------------------------------------------- +00 00:21:38 其中,如果滞后时间超过24小时,+00-->增加到1。我的目标是编写一个脚本,每当延迟超过5小时时,即当值大于+0005:00:00时,发送邮件。值的数
SQL> select value from v$dataguard_stats where name like 'apply lag';
VALUE
----------------------------------------------------------------
+00 00:21:38
其中,如果滞后时间超过24小时,+00-->增加到1。我的目标是编写一个脚本,每当延迟超过5小时时,即当值大于+0005:00:00时,发送邮件。值的数据类型为varchar2(64)。我需要重写查询,使查询仅在值大于或等于+0005:00:00时显示输出。我不知道如何比较这个值。非常感谢您的帮助/建议
请查找查看v$dataguard_stats的说明
SQL> desc v$dataguard_stats;
Name Null? Type
----------------------------------------------------------------------------------------- -------- ------------------------------------------------------------
NAME VARCHAR2(32)
VALUE VARCHAR2(64)
UNIT VARCHAR2(30)
TIME_COMPUTED VARCHAR2(30)
谢谢和问候
Karthik M该值存储为区间值的字符表示形式。您可以通过查看v$dataguard_stats视图中的UNIT列看到这一点:
SQL> SELECT name, value, unit
2 FROM v$dataguard_stats
3 WHERE name = 'apply lag';
NAME VALUE UNIT
--------------- --------------- ------------------------------
apply lag +00 00:00:21 day(2) to second(0) interval
SQL>
这将使您接近您想要的:
SELECT 1
FROM v$dataguard_stats
WHERE name LIKE 'apply lag'
AND TO_DSINTERVAL(value) > NUMTODSINTERVAL(5,'HOUR');
如果应用延迟大于5小时,则返回1。非常感谢您的查询。我真的很感激。我按照如下方式执行查询:“从v$dataguard_stats中选择1,其中名称类似于'apply lag',并选择到\u DSINTERVAL('00 05:00:00')>NUMTODSINTERVAL(5,'HOUR');”但是。。。?如果在注释中有查询,则不会得到任何结果。TO_数据间隔('00 05:00:00')不大于5小时,等于5小时。为什么在TO_DSINTERVAL调用中使用常量?你不想要价值吗?