У меня есть таблица, которая выдает ошибку для некоторых строк при попытке конвертировать 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
Пожалуйста, кто-нибудь объясните и предоставьте решение.
Это потому что ты вне досягаемости.
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 вне допустимого диапазона. Извините, я новичок в оракуле и просто изучаю возможности
SCN меняется при каждом коммите, Oracle увеличивает его сам. Я не думаю, что вы можете установить его самостоятельно.