我使用下面的查询来构建物化视图。
CREATE MATERIALIZED VIEW gcms_business_profile_mview
BUILD IMMEDIATE
REFRESH FAST
WITH PRIMARY KEY
START WITH SYSDATE
NEXT (TRUNC (SYSDATE + 1) + 20 / 96)
AS
SELECT DISTINCT obp.bp_id,
obp.bp_typ_cd,
os.spcl_desc,
obpi.frs_nm,
obpi.mdl_nm,
NVL (rep_lst_nm.lst_nm, othr_lst_nm.lst_nm) last_name,
NVL (rep_lst_nm.lst_nm_typ_id, othr_lst_nm.lst_nm_typ_id)
last_name_type_id
FROM tr_ods.ods_business_parties obp
LEFT JOIN ( SELECT bp_id,
speciality_id,
updtd_dt,
ROW_NUMBER ()
OVER (PARTITION BY bp_id ORDER BY updtd_dt DESC)
AS spec_rn
FROM tr_ods.ods_bp_specialty
WHERE updtd_dt IS NOT NULL
) obs
ON obs.bp_id = obp.bp_id
AND obs.spec_rn =1
LEFT JOIN tr_ods.ods_specialty os
ON os.speciality_id = latest_spec.speciality_id
AND os.delete_flag = 'N'
LEFT JOIN tr_ods.ods_business_party_individuals obpi
ON obpi.bp_id = obp.bp_id
LEFT JOIN (SELECT obpln1.bp_id,
obpln1.lst_nm,
obpln1.lst_nm_typ_id,
ROW_NUMBER ()
OVER (PARTITION BY obpln1.bp_id ORDER BY updtd_dt DESC)
AS lst_rn_22
FROM tr_ods.ods_business_party_last_names obpln1
WHERE lst_nm_typ_id = 22
AND updtd_dt =
(SELECT MAX (obpln2.updtd_dt)
FROM tr_ods.ods_business_party_last_names obpln2
WHERE obpln2.bp_id = obpln1.bp_id
AND obpln2.lst_nm_typ_id = 22)) rep_lst_nm
ON (rep_lst_nm.bp_id = obp.bp_id AND rep_lst_nm.lst_rn_22 = 1)
LEFT JOIN (SELECT obpln1.bp_id,
obpln1.lst_nm,
obpln1.lst_nm_typ_id,
ROW_NUMBER ()
OVER (PARTITION BY obpln1.bp_id ORDER BY updtd_dt DESC)
AS lst_rn
FROM tr_ods.ods_business_party_last_names obpln1
WHERE lst_nm_typ_id IN (21, 23)
AND updtd_dt =
(SELECT MAX (obpln2.updtd_dt)
FROM tr_ods.ods_business_party_last_names obpln2
WHERE obpln2.bp_id = obpln1.bp_id
AND obpln2.lst_nm_typ_id IN (21, 23))) othr_lst_nm
ON (othr_lst_nm.bp_id = obp.bp_id AND othr_lst_nm.lst_rn = 1)
我正在
ORA-12015:无法从复杂的查询错误消息创建快速刷新物化视图。
我已经为所有表创建了物化视图日志。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
CREATE MATERIALIZED VIEW - Restrictions on FAST Refresh
快速刷新的限制
FAST刷新受以下限制:
在创建时指定FAST刷新时,Oracle数据库会进行验证 您正在创建的物化视图符合快速条件 刷新。在ALTER中将刷新方法更改为FAST时 MATERIALIZED VIEW语句,Oracle数据库不执行此操作 验证。如果物化视图不符合快速条件 刷新,然后Oracle数据库在您尝试时返回错误 刷新这个观点。
如果定义,物化视图不符合快速刷新的条件 查询包含分析函数或XMLTable函数。
如果定义,物化视图不符合快速刷新的条件 query引用了一个定义了XMLIndex索引的表。
如果其任何列是,则无法快速刷新实例化视图 加密。
您的查询包含分析结果:
ROW_NUMBER () OVER (PARTITION BY bp_id ORDER BY updtd_dt DESC)
因此您无法对此查询使用快速刷新。