Как-то в прошлом году еще читал отличную книжку Тома ДеМарко – Deadline. Там у главного героя была записная книжка, в которую он в конце каждой главы записывал свои выводы и мысли, которые, можно сказать, являются аксиомами в проджект менеджменте. ИМХО, лучше прочитать книжку целиком, ну а тут можно просто освежить память
Полдня не могли понять, почему не работает кусок кода на стыке двух проектов?! Все переменные через dbms_output выглядят красиво, но ничего не работает…
Сомнения закрались, когда в запросе вместо параметров подставили значения… Все заработало! Все оказалось просто – Oracle хранит дату всегда со временем, даже после trunc там останется 00:00:00. Выяснилось, что приложение присылало дату +1 час (кто-то поясное время использовал).
Сделал для себя вывод – если в тестовом выводе участвует дата, то конвертация к строке только явная, с указанием времени в формате.
DBMS_OUTPUT.PUT_LINE(to_char(DT,'DD-MON-YYYY hh24:mi:ss'));
Обновил тут свою программку для поиска GPS треков. Версия 2.0, можно сказать. Полностью переписал UI. Добавил возможность поиска не относительно точки, а относительно всех точек выбранного файла (трека или файла точек). Буду рад любым предложениям.
Далее немного подробностей.
Запрос работает медленно? Ну что ж, его надо оптимизировать, и первое, на что мы будем смотреть – план его выполнения.
В этом посте расскажу как посмотреть план, если недоступны всякие GUI тулзы вроде TOAD и SQLNavigator.
Тут рассмотрим два способа:
- Скрипты utlxpls.sql | utlxplp.sql
- Пакет DBMS_XPLAN
Вроде и нужно часто, а команда забывается:
alter session set current_schema=SCHEMA_NAME;
Если часто приходится работать под другим ползователем в БД, то включить эту команду в скрипт будет хорошей идеей.
Кстати, если вдруг придется использовать эту команду в PL/SQL, подставить туда bind variable не удасться – придется генерить строку команды и выполнять ее через
execute immediate ALTER_SQL_STATEMENT;