Я как бы понимаю материализованные взгляды и работал с ними раньше. Недавно возник вопрос о том, почему в конкретном отчете не отображаются последние данные, я изучил этот вопрос. По-видимому, они имели временную таблицу, загруженную 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;