Материализованный вид и таблица с тем же именем

Я как бы понимаю материализованные взгляды и работал с ними раньше. Недавно возник вопрос о том, почему в конкретном отчете не отображаются последние данные, я изучил этот вопрос. По-видимому, они имели временную таблицу, загруженную crontab ранее, и позже переключились на материализованное представление.

Когда я просмотрел базу данных с указанным ниже запросом (имя таблицы изменилось):

SELECT * FROM all_objects WHERE object_name = 'TEMP_DATA';

Это фактически показало 2 объекта в одной и той же схеме: одна таблица и другое материализованное представление

OWNER   OBJECT_NAME  OBJECT_TYPE        DATA_OBJECT_ID  LAST_DDL_TIME     TIMESTAMP
SCHEMA  TEMP_DATA    TABLE                      110623  08/06/2013 15:38  2013-08-06:14:53:01
SCHEMA  TEMP_DATA    MATERIALIZED VIEW                  10/30/2015 00:00  2013-08-06:14:56:33

И когда я пытаюсь изменить таблицу, чтобы переименовать ее, она сказала, что материализованное представление не может быть переименовано.

Мой вопрос: действительно ли материализованное представление создает таблицу с тем же именем, и если да, то когда я делаю SELECT откуда берутся данные (таблица или MView)?

Или это просто таблица с предыдущими временами? Если да, разрешает ли Oracle использовать разные типы объектов с тем же именем? (Я был очень взволнован этим, поскольку я думал, что у каждого объекта должно быть уникальное имя!).

И просто любопытно, если они являются 2 объектами, которые используются в следующем SQL:

SELECT * FROM TEMP_DATA;

Любое понимание этого, высоко ценится.

UPDATE на основе ответов @Alex и @Husqvik: В определении Mview я вижу ниже:

BUILD IMMEDIATE  
REFRESH COMPLETE  
START WITH TO_DATE('06-Nov-2015','dd-mon-yyyy')  
NEXT trunc(sysdate) + 1  
WITH PRIMARY KEY  

Означает ли это, что он должен обновляться каждый день (здесь завтра)? Сменится ли START WITH на 07-ноябрь после завтрашнего обновления?

И он автоматически обновляется, и если да, то когда он обновляется?

Есть ли что-нибудь, что помешало бы ему обновиться, потому что пользователь жаловался, что не видит последние данные в отчете с использованием этого MView и почему я получил это, чтобы посмотреть на это в первую очередь?

Вот полный DDL для MView:

DROP MATERIALIZED VIEW SCHEMA.TEMP_DATA;
CREATE MATERIALIZED VIEW SCHEMA.TEMP_DATA 
TABLESPACE ITS_DATASPACE
PCTUSED    0
PCTFREE    10
INITRANS   2
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
NOCACHE
LOGGING
NOCOMPRESS
NOPARALLEL
BUILD IMMEDIATE
REFRESH COMPLETE
START WITH TO_DATE('06-Nov-2015','dd-mon-yyyy')
NEXT trunc(sysdate) + 1
WITH PRIMARY KEY
AS 
/* Formatted on 2015/11/05 09:35 (Formatter Plus v4.8.8) */
SELECT *
  FROM SCHEMA.h_case_data
 WHERE status LIKE 'M%';

COMMENT ON MATERIALIZED VIEW SCHEMA.TEMP_DATA IS 'snapshot table for snapshot SCHEMA.TEMP_DATA';

CREATE INDEX SCHEMA.CASE_ID_IDX ON SCHEMA.TEMP_DATA
(CASE_ID)
LOGGING
TABLESPACE ITS_DATASPACE
PCTFREE    10
INITRANS   2
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
NOPARALLEL;

CREATE INDEX SCHEMA.STATUS_IDX ON SCHEMA.TEMP_DATA
(STATUS)
LOGGING
TABLESPACE ITS_DATASPACE
PCTFREE    10
INITRANS   2
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            NEXT             1M
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           )
NOPARALLEL;

Ответ 1

Из документации:

Когда вы создаете материализованное представление, Oracle Database создает одну внутреннюю таблицу и хотя бы один индекс и может создавать одно представление, все в схеме материализованного представления. База данных Oracle использует эти объекты для сохранения материализованных данных вида.

Таким образом, наличие таблицы и материализованного представления с тем же именем является нормальным. MV должен хранить данные где-то, поэтому наличие таблицы имеет смысл; сам MV определяет, как сохраняются данные таблицы.

Вы можете использовать предложение ON PREBUILT TABLE, чтобы создать представление по существующей таблице, которое, как я полагаю, является "у них была временная таблица ранее... и позже переключился на материализованное представление".

Вы также можете перейти в другую сторону, используя опцию DROP MATERIALIZED VIEW ... PRESERVE TABLE, которая оставляет базовую таблицу позади.

Когда вы SELECT * FROM TEMP_DATA; запрашиваете базовую таблицу, но различие не имеет особого значения, поскольку они относятся к одному и тому же объединенному объекту.

В соответствии с определением, добавленным к вопросу позже, он будет обновляться каждый день в полночь.

Ответ 2

Существует два объекта схемы. Физически материализованное представление представляет собой таблицу. Объекты материализованного представления содержат метаданные о режиме обновления, типе, методе и других свойствах. Если вы проверите ALL_OBJECTS, вы увидите, что объект MATERIALIZED VIEW не имеет своего сегмента. Словарь данных гарантирует, что вы не можете рассматривать базовую таблицу как обычную таблицу, иначе она может нарушить согласованность между этими связанными объектами.

Вы также можете создать материализованный вид поверх готовой таблицы.

UPDATE:

START WITH будет обновляться при каждом обновлении. СЛЕД. ПУСК оценивается при создании или обновлении представления.

Обновление может завершиться неудачей при любой ошибке, которая обычно может возникать в базе данных, например. g, недостаточно места, тайм-аут блокировки, изменения запросов, лежащих в основе объектов.