版本 < 12 的 Oracle 查询兼容性问题
Oracle query compatibility issue with versions < 12
我有下面提到的 Oracle SQL 查询。它 运行 对于 > 12 的版本完全没问题。但是对于 < 12 的版本,它给出的错误为 SQL command not properly ended
(错误代码:ORA-00933)。
查询:
select
LEAST(ROUND(SUM((BLOCKS*BLOCK_SIZE)/1024/1024/1024)),200) GB,
to_char(COMPLETION_TIME,'MM.DD.YYYY') COMPLETION_DATE
from
v$archived_log
where
trunc(COMPLETION_TIME,'DD') > sysdate - 30
group by to_char(COMPLETION_TIME,'MM.DD.YYYY')
order by SUM((BLOCKS*BLOCK_SIZE)/1024/1024/1024) DESC
FETCH FIRST 1 ROWS ONLY
查询的作用:它获取过去 30 天的最大存档大小以及最大存档大小发生的日期。
我 运行 此查询使用 via Python 使用 cx_Oracle.
FETCH FIRST 1 ROWS ONLY
Oracle 11g 及之前版本不支持。
你可以使用rownum
方法
select * from
(
select
LEAST(ROUND(SUM((BLOCKS*BLOCK_SIZE)/1024/1024/1024)),200) GB,
to_char(COMPLETION_TIME,'MM.DD.YYYY') COMPLETION_DATE
from
v$archived_log
where
trunc(COMPLETION_TIME,'DD') > sysdate - 30
group by to_char(COMPLETION_TIME,'MM.DD.YYYY')
order by SUM((BLOCKS*BLOCK_SIZE)/1024/1024/1024) DESC
) t
where rownum < 2
我有下面提到的 Oracle SQL 查询。它 运行 对于 > 12 的版本完全没问题。但是对于 < 12 的版本,它给出的错误为 SQL command not properly ended
(错误代码:ORA-00933)。
查询:
select
LEAST(ROUND(SUM((BLOCKS*BLOCK_SIZE)/1024/1024/1024)),200) GB,
to_char(COMPLETION_TIME,'MM.DD.YYYY') COMPLETION_DATE
from
v$archived_log
where
trunc(COMPLETION_TIME,'DD') > sysdate - 30
group by to_char(COMPLETION_TIME,'MM.DD.YYYY')
order by SUM((BLOCKS*BLOCK_SIZE)/1024/1024/1024) DESC
FETCH FIRST 1 ROWS ONLY
查询的作用:它获取过去 30 天的最大存档大小以及最大存档大小发生的日期。
我 运行 此查询使用 via Python 使用 cx_Oracle.
FETCH FIRST 1 ROWS ONLY
Oracle 11g 及之前版本不支持。
你可以使用rownum
方法
select * from
(
select
LEAST(ROUND(SUM((BLOCKS*BLOCK_SIZE)/1024/1024/1024)),200) GB,
to_char(COMPLETION_TIME,'MM.DD.YYYY') COMPLETION_DATE
from
v$archived_log
where
trunc(COMPLETION_TIME,'DD') > sysdate - 30
group by to_char(COMPLETION_TIME,'MM.DD.YYYY')
order by SUM((BLOCKS*BLOCK_SIZE)/1024/1024/1024) DESC
) t
where rownum < 2