Вы находитесь на страницах старой версии сайта.
Переходите на новую версию Interface.Ru


FAQ по


Решение "Проблемы 2000" в продуктах Oracle


Вопрос: Что означает понятие “Соответствие требованиям 2000 года” для продуктов фирмы Oracle?

Ответ: Согласно точке зрения корпорации Oracle, в понятие “Соответствие требованиям 2000 года” включается выполнение пяти основных требований к программному обеспечению, касающихся обработки данных типа DATE:

  1. Программы должны корректно обрабатывать даты до наступления 1-го января 2000 года, саму дату 1-е января 2000 года, и все последующие даты при вводе даты, при выводе даты и при выполнении вычислений с датами и/или их частями.
  2. Функции, оперирующие с данными, должны одинаково корректно выполняться до 1 января 2000 года, непосредственно в день 1 января 2000 года и после 1 января 2000 года
  3. При вводе значения года в виде двух последних его цифр столетие должно трактоваться однозначно.
  4. Программы должны обеспечивать хранение и вывод дат в таком виде, который исключает двусмысленность толкования относительно используемого столетия.
  5. Программы должны обрабатывать данные в соответствии с правилом определения високосных лет, согласно которым 2000-й год будет високосным.

Эти критерии являются расширением набора требований, установленных Британским институтом стандартов.


Вопрос: Соответствуют ли продукты фирмы Oracle требованиям 2000 года?

Ответ: Семейство продуктов Oracle Server 7 и 8

Семейство продуктов Oracle Server 7 и 8 ПОЛНОСТЬЮ СООТВЕТСТВУЕТ требованиям 2000 года. Приложения, которые используют СУБД Oracle (серверы Oracle7 и Oracle8), а также тип данных DATE (только для дат и/или для дат и времени) будут корректно выполнять операции с данными типа DATE, извлеченными из баз данных Oracle.

Для хранения данных типа DATE серверы Oracle7 и Oracle8 используют формат, предусматривающий четыре позиции для года, две позиции для месяца и так далее для всех остальных компонентов вплоть до секунд (общий вид “YYYY:MM:DD:HH24:MI:SS”).

Oracle RDBMS Version 6

Подобно Oracle7 и Oracle8, в СУБД Oracle версии 6 год представлен четырьмя цифрами. Единственная причина, по которой данная версия не может быть классифицирована, как полностью соответствующая требованиям 2000 года, заключается в том, что СУБД Oracle версии 6 не позволяет однозначно интерпретировать столетие при вводе даты с двузначным представлением года. То есть отсутствует механизм, аналогичный формату ‘RR’ в версиях 7 и 8.

Текущие продукты Oracle

Практически все текущие продукты Oracle ПОЛНОСТЬЮ СООТВЕТСТВУЮТ требованиям 2000 года, что подтверждается регрессионными и сценарными тестами.

Часть устаревших продуктов не удовлетворяет требованиям 2000 года, или удовлетворяет им не полностью. В эту категорию попадают Oracle RDBMS Version 6, SQL*Forms Version 3.0 & SQL*Menu Version 5.0, SQL*Forms Version 2.0/2.3, SQL*ReportWriter Version 1.1, SQL*Report Version 1.0 (RPT), Oracle Forms Version 4.0, Oracle Reports 2.0 & Oracle Graphics 2.0 (CDE1), Oracle Data Query Version 3.0, Oracle CASE / Dictionary Version 5.1, Oracle Core Applications Version 9, Oracle Applications Rel. 10.5/10.6, CDDPLUS.


Вопрос: Какой алгоритм интерпретации столетия заложен при использовании формата “RR” (представление даты)?

Ответ: Описанный ниже алгоритм используется в версиях Oracle7 и Oracle8. Oracle RDBMS Version 6 не поддерживает его.

Применение формата “RR” дает предписание интерпретировать столетие, к которому относится дата с двузначным представлением года, в соответствии с правилами, приведенными в таблице.

Таблица . Применение маски формата “RR”
 
Последние две цифры текущего года Двузначное представление года Что получается при использовании формата “RR”
0 – 49 0 – 49 Текущее столетие
50 – 99 0 – 49 Следующее столетие
0 – 49 50 – 99 Предыдущее столетие
50 - 99 50 – 99 Текущее столетие

Следовательно, независимо от того, какое столетие было текущим во время ввода данных, использование формата “RR” гарантирует, что год будет загружен в базу данных в следующем виде:

Если текущий год (на момент загрузки) – во второй половине столетия (50 - 99)

· и введен двузначный год между “00” и “49”, то год будет загружен как год следующего столетия. Например, год “02”, введенный в 1996 году, будет загружен как “2002”.

· и введен двузначный год между “50” и “99”, то год будет загружен как год текущего столетия. Например, год “97”, введенный в 1996 году, будет загружен как “1997”.

Если текущий год (на момент загрузки) – в первой половине столетия (00 - 49)

· и введен двузначный год между “00” и “49”, то год будет загружен как год текущего столетия. Например, год “02”, введенный в 2001 году, будет загружен как “2002”.

· и введен двузначный год между “50” и “99”,то год будет загружен как год предыдущего столетия. Например, год “97”, введенный в 2001 году, будет загружен как “1997”.

Формат даты “RR” пригоден для добавления в базу данных и обновления данных типа DATE. Он не требуется для выборки уже загруженных в БД данных, так как Oracle всегда загружает компонент даты YEAR в четырехзначном виде. Детали использования формата “RR” можно найти в документе Oracle Technical Bulletin Reference 104296.626.

Для применения формата “RR” необходимо установить значение ‘DD-MM-RR’ параметра ‘NLS_DATA_FORMAT’.

Пример использования формата “RR”

SQL>select last_day(‘01-Feb-00’) from dual; (1)

LAST_DAY
--------

28-Feb-00

SQL>select last_day(‘01-Feb-2000’) from dual; (2)

LAST_DAY
--------

29-Feb-2000

SQL>alter session set NLS_DATA_FORMAT=‘DD-MM-RR’; (3)

Session altered

SQL>select last_day(‘01-Feb-00’) from dual; (4)

LAST_DAY
--------

29-02-00

Запрос (1) означает получение последнего дня месяца, указанного в запросе. По умолчанию параметр NLS_DATA_FORMAT имеет значение ‘DD-MM-YY’, следовательно, дата с двузначным представлением года будет интерпретироваться обычным образом, то есть как дата двадцатого века. Результатом запроса будет дата 28 февраля 1900 года (этот год не был високосным). Разумеется, подобный эффект будет только в случае “короткого” формата даты (год представлен двумя цифрами). В случае нормального представления даты, как это сделано в запросе (2) (год представлен четырьмя цифрами), результат будет верным - 29 февраля 2000 года (2000 год - это високосный год). Запрос даты в нормальном виде влечет за собой и вывод даты также в нормальном виде.

Теперь установим значение ‘DD-MM-RR’ параметра NLS_DATA_FORMAT (это можно сделать, используя оператор ALTER SESSION, как это показано в запросе (3)). После этого запрос (4), аналогичный запросу (1), будет имет правильный результат. То есть год будет интерпретирован корректно, в соответствии с приведенными выше правилами, что мы видим по выдаваемому результату (29 февраля).


Вопрос: Что предпринять для решения проблемы 2000 для серии продуктов Oracle?

Ответ: Для решения проблемы 2000 года можно рекомендовать следующую последовательность действий.

  1. Произвести инвентаризацию всех используемых программных продуктов Oracle, точно установить номера версий и релизов, определить степень их соответствия требованиям 2000 года по документу “Oracle Products and Year 2000 Compliance”.
  2. Оформить техническую поддержку Oracle (если этого еще не сделано) и выполнить обновление версий всех программных продуктов Oracle до категории Текущие.
  3. Проанализировать коды приложений, работающих с СУБД Oracle, при необходимости выполнить модификацию представления дат.
  4. Выполнить комплексное тестирование информационной системы (по регрессионной и/или сценарной методике.

Существует также специальная программа Oracle - Обзор2000

Обзор2000 - это один из сервисов, предлагаемых Всемирной Службой Поддержки Пользователей корпорации Oracle тем организациям, которые уже построили свои информационные системы на базе продуктов и технологий Oracle и в настоящий момент готовят свои системы к наступлению 2000 года. Обзор2000 предполагает выезд инженера или группы инженеров службы технической поддержки Oracle к заказчику и детальный комплексный анализ всей информационной системы с целью выявления несоответствий требованиям 2000 года. Результатом работы является детальный технический отчет - официальный документ корпорации Oracle, на основании которого специалисты организации-заказчика самостоятельно устраняют имеющие несоответствия и выявленные ошибки.

Информация для разработчиков

Для специалистов, ведущих разработку на Oracle Developer, мы предлагаем воспользоваться детальным техническим руководством “Data Handling in Developer/2000. An Oracle White Paper”. Для пользователей Oracle Designer рекомендуется документ “Oracle Designer and Year 2000 Compliance. An Oracle White Paper”.

Для тех организаций, которые самостоятельно разработали приложения, используя программные продукты Oracle Forms, Oracle PL/SQL, Oracle Report Writer и в настоящий момент приступают к тестированию приложений на предмет ошибок, связанных с проблемой 2000 года, корпорация Oracle рекомендует воспользоваться стандартным набором средств верификации исходного кода приложений и тестирования.

Стандартный набор для тестирования приложений

Корпорация Oracle рекомендует использовать для верификации кода приложений и выполнения регрессионных тестов для приложений набор продуктов третьих фирм. В этот набор входят:

Средства анализа исходного кода

Средства (общее название UNRAVEL 2000 Tools for Oracle) реализованы в виде набора программных продуктов фирмы Ravel Software. Продукт позволяет анализировать исходные коды приложений, разработанных с помощью:

Продукт UNRAVEL 2000 является результатом совместных усилий Oracle Corporation и Ravel Software. Разработчики Oracle идентифицировали ключевые ошибки в датах, а специалисты Ravel Software обеспечили их учет в данном программном продукте по технологии семантического соответствия. Опытным путем было установлено, что от 80% до 90% ошибок, связанных с проблемой 2000-го года, идентифицируется с помощью данной технологии.

Средства регрессионного тестирования

Информация о средстве для регрессионного тестирования приложений Rational TestStudio фирмы Rational Software представлена на нашем сайте

Информация для контактов:

e-mail: y2ktools@us.oracle.com

Глеб Михайлович Ладыженский, Oracle Corporation,
e-mail: glodigen@ru.oracle.com


За дополнительной информацией обращайтесь в компанию Interface Ltd.

Обсудить на форуме Oracle

Рекомендовать страницу

INTERFACE Ltd.
Телефон/Факс: +7 (495) 925-0049
Отправить E-Mail
http://www.interface.ru
Rambler's Top100
По техническим вопросам обращайтесь к вебмастеру