Исключение: ORA-08181: указанный номер не является допустимым номером изменения системы

У меня есть таблица, которая выдает ошибку для некоторых строк при попытке конвертировать ORA_ROWSCN для соответствующей строки SCN_TO_TIMESTAMP, как показано ниже: -

Select SCN_TO_TIMESTAMP(429804070) from dual; --14-NOV-22 07.52.22.000000000 AM
Select SCN_TO_TIMESTAMP(432572474) from dual; --16-NOV-22 02.00.59.000000000 AM
Select SCN_TO_TIMESTAMP(423859441) from dual; --ORA-08181: specified number is not a valid system change number
Select SCN_TO_TIMESTAMP(423859575) from dual; --ORA-08181: specified number is not a valid system change number

Пожалуйста, кто-нибудь объясните и предоставьте решение.

Попутный вопрос.
Alex Poole 20.11.2022 09:36
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
1
142
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это потому что ты вне досягаемости.

SQL> show user
USER is "SYS"

Сначала проверим диапазон:

SQL> select min(scn), max(scn) from smon_scn_time;

  MIN(SCN)   MAX(SCN)
---------- ----------
  14831895   16817322

Примените scn_to_timestamp к значениям MIN и MAX - оба они действительны:

SQL> select SCN_TO_TIMESTAMP(14831895) min_scn,
  2         SCN_TO_TIMESTAMP(16817322) max_scn
  3  from dual;

MIN_SCN                          MAX_SCN
-------------------------------- --------------------------------
08-OCT-22 10.23.31.000000000 PM  19-NOV-22 10.11.36.000000000 PM

Что, если вы попробуете значения, выходящие за пределы этого диапазона (т. е. ниже MIN и выше MAX)? Ни один из них не работает, и это ваш случай:

SQL> select SCN_TO_TIMESTAMP(10831895) lower_than_min_scn from dual;
select SCN_TO_TIMESTAMP(10831895) lower_than_min_scn from dual
       *
ERROR at line 1:
ORA-08181: specified number is not a valid system change number
ORA-06512: at "SYS.SCN_TO_TIMESTAMP", line 1


SQL> Select SCN_TO_TIMESTAMP(19817322) higher_than_max_scn from dual;
Select SCN_TO_TIMESTAMP(19817322) higher_than_max_scn from dual
       *
ERROR at line 1:
ORA-08181: specified number is not a valid system change number
ORA-06512: at "SYS.SCN_TO_TIMESTAMP", line 1


SQL>

Спасибо, @Littlefoot. Можем ли мы каким-то образом увеличить smon_scn_time, чтобы приспособиться к номеру scn вне допустимого диапазона. Извините, я новичок в оракуле и просто изучаю возможности

Gaurav Chaudhary 20.11.2022 11:48

SCN меняется при каждом коммите, Oracle увеличивает его сам. Я не думаю, что вы можете установить его самостоятельно.

Littlefoot 20.11.2022 11:55

Другие вопросы по теме