Оракул материализовал время обновления представления - PullRequest
5 голосов
/ 19 декабря 2008

Кто-нибудь может сказать мне, как часто материализованное представление обновляется со следующей настройкой plz?

ОБНОВИТЬ СИЛУ ПО ЗАПРОСУ НАЧАТЬ С sysdate + 0 СЛЕДУЮЩИЙ (round (sysdate) + 1/24) + 1

я думаю, что читаю это каждый час, но я не уверен

Ответы [ 4 ]

7 голосов
/ 19 декабря 2008
SQL> alter session set nls_date_format = 'yyyy-mm-dd :hh24:mi:ss';

Session changed.

SQL> select sysdate from dual;

SYSDATE
--------------------
2008-12-19 :12:18:28

SQL> select (round(sysdate) + 1/24) + 1  from dual;

(ROUND(SYSDATE)+1/24
--------------------
2008-12-21 :01:00:00
4 голосов
/ 02 января 2009

Чтобы ответить на ваш первый вопрос (будет ли он выполняться один раз в час?):

Нет, это будет выполнено один раз, когда вы создадите его из-за этого условия:

START WITH sysdate+0 

Лично я думаю, что "+0" является посторонним, как сейчас.

Затем он будет запущен завтра в 1 час ночи из-за следующего предложения:

NEXT (round(sysdate) + 1/24) + 1

Часть "1/24" вычисляет, когда 1 час ночи, поскольку даты Oracle на самом деле хранятся в виде чисел, а десятичная часть указывает часы, минуты и т. Д. Синтаксис очень хорош.

1 голос
/ 19 декабря 2008

Я не уверен на 100%, что это законно в утверждении планирования материализованного представления, но вы можете попробовать (возможно) более интуитивную спецификацию INTERVAL:

round(sysdate) + interval '1 1' day to hour

Другие примеры здесь: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements003.htm#SQLRF00221

0 голосов
/ 26 апреля 2014

Я думаю, используя

NEXT (trunc(sysdate) + 1/24) + 1

точнее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...