#sql #oracle #cx-oracle
#sql #Oracle #cx-oracle
Вопрос:
У меня есть приведенный ниже запрос 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.
Ответ №1:
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
Комментарии:
1. Для справки, это обсуждается в руководстве cx_Oracle cx-oracle.readthedocs.io/en/latest/user_guide /…