版本 < 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