标签: materialized-views

我可以在提交时仅对其 select 语句中的三个表中的两个表进行物化视图刷新吗?

我想使用刷新的物化视图ON COMMIT。我的支持视图通过 DB Link 连接本地数据库中的两个表和远程数据库中的一个表。如何仅在对两个本地表之一进行更改时才刷新视图?

还有其他方法可以解决这个问题吗?我可以让物化视图只连接两个本地表并为远程数据库中的列设置 NULL,然后在插入/更新物化视图时使用触发器来填充这些字段吗?或者物化视图的更新是否传播回源表?

我正在做这样的事情:

SELECT LOC1.ID, LOC1.NAME, LOC2.PRICING_TYPE, REM1.PURCHASING_ID
FROM LOCAL_TABLE_A LOC1, LOCAL_TABLE_B LOC2, REMOTE_TABLE@SOMEDB.WORLD REM1
WHERE LOC1.ID = LOC2.MASTER_ID
AND LOC1.REM_ID = REM1.ID
AND LOC2.YEAR = REM1.YEAR
Run Code Online (Sandbox Code Playgroud)

REMOTE_TABLE只是与两个本地表相关的信息的查找表。它不应该在这里驱动任何东西,我只希望物化视图在LOCAL_TABLE_AOR LOCAL_TABLE_BCHANGE 时更​​新。

sql oracle triggers materialized-views

2
推荐指数
1
解决办法
886
查看次数

PostgreSQL,防止更改物化视图将 WITH NO DATA 更​​改为 WITH DATA

我想在不丢失数据的情况下更改 PostgreSQL 10.1 物化视图的名称。刷新这个物化视图需要 12 多个小时。

因此,为了测试更改物化视图语句,我WITH NO DATA在定义中包含该子句的不同物化视图上进行了尝试。

当我运行命令时:

ALTER MATERIALIZED VIEW etl.mv_test
RENAME to etl.vw_test
Run Code Online (Sandbox Code Playgroud)

WITH NO DATA条款已更改为WITH DATA。所以我假设视图会被刷新。是否可以将WITH NO DATA条款保留在更改后的视图中?

postgresql materialized-views

2
推荐指数
1
解决办法
1470
查看次数

在Postgres中的物化视图上创建主键

如何在Postgres中的物化视图上创建主键?

ALTER MATERIALIZED VIEW my_mat_view ADD PRIMARY KEY (id)
Run Code Online (Sandbox Code Playgroud)

返回错误:

Error in query: ERROR: "my_mat_view" is not a table 
Run Code Online (Sandbox Code Playgroud)

postgresql view materialized-views

2
推荐指数
1
解决办法
1730
查看次数

将物化视图更改为常规视图

出于性能原因,我的数据库中有一个物化视图。环境的约束已经改变,现在我需要使更新出现得更快,视图本身的性能不再那么重要。如何将物化视图更改为常规视图?寻找类似的东西:

ALTER MATERIALIZED VIEW viewname TO VIEW
Run Code Online (Sandbox Code Playgroud)

postgresql materialized-views sql-view

2
推荐指数
1
解决办法
2013
查看次数

找出连续聚集体的大小

拥有包含几百万行的超表。我可以使用以下命令来选择它的大小:

SELECT pg_size_pretty( pg_total_relation_size('towns') );

我还有该超表的连续聚合:

WITH (timescaledb.continuous, timescaledb.materialized_only=true) AS
SELECT time_bucket(INTERVAL '1 minute', timestamp) AS bucket,
 /* random query */
FROM towns
GROUP BY bucket, town
WITH NO DATA;
Run Code Online (Sandbox Code Playgroud)

我已刷新视图,数据按预期显示。然而,我似乎无法弄清楚这个新视图占用了多少空间。

SELECT pg_size_pretty( pg_total_relation_size('towns_income') );返回 0 字节,我知道这是不正确的。我认为也许 Total_relation_sizetowns会增加,但这似乎也是一样的。我错过了什么吗?我也尝试过hypertable_size但没有成功,因为 mv 从技术上讲并不是一个超表。

postgresql materialized-views timescaledb continuous-aggregates

2
推荐指数
1
解决办法
729
查看次数

Oracle物化视图调优

我正在尝试在我的应用程序中调整物化视图.我开始执行:

 dbms_advisor.tune_mview()
Run Code Online (Sandbox Code Playgroud)

过程,并将以下代码写入Oracle SQL Developer的SQL_Worksheet:

variable mvtask varchar2(100); 
variable mvddl varchar2(4000);

execute :mvtask := 'MV_FOO_BAR';
execute select query into :mvddl from user_mviews where view_name = 'MV_FOO_BAR';

execute dbms_advisor.tune_mview(:mvtask, :mvddl);

select * from user_tune_mview;
Run Code Online (Sandbox Code Playgroud)

显然,已经创建了物化视图(refresh fast on commmit然而,其运行速度令人无法接受地慢).顾问报告以下错误:

Error report:
ORA-13600: error encountered in Advisor
QSM-03112: Invalid CREATE MATERIALIZED VIEW statement
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "SYS.PRVT_ACCESS_ADVISOR", line 202
ORA-06512: at "SYS.PRVT_TUNE_MVIEW", line 1026
ORA-06512: at "SYS.DBMS_ADVISOR", line 754
ORA-06512: at line 1
13600. 00000 -  "error …

oracle performance materialized-views oracle-sqldeveloper

1
推荐指数
1
解决办法
4825
查看次数

什么可以导致Oracle 10g中的物化视图停止快速刷新?

如果我在Oracle中有物化视图,定义为REFRESH FAST ON COMMIT每15分钟一次.它在最初创建和快乐刷新时有效.什么可以导致它停止快速刷新?

我可以看到它已基于此停止刷新:

select mview_name, last_refresh_date from all_mviews;
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql materialized-views oracle10g

1
推荐指数
1
解决办法
7023
查看次数

Oracle刷新物化视图 - 编译错误

我试图在物化视图上执行刷新,但我无法编译脚本.

CREATE OR REPLACE PROCEDURE REFRESH_MV AS
BEGIN
    exec DBMS_MVIEW.REFRESH('my_mat_view_mv','C');
END REFRESH_MV;
Run Code Online (Sandbox Code Playgroud)

我收到消息:

ORA-06550:第3行第9列:PLS-00103:遇到以下其中一项时遇到符号"DBMS_MVIEW":

:=.(@%;立即用符号":="代替"DBMS_MVIEW"继续.

难道我做错了什么 ?需要进口什么?

更新

CREATE OR REPLACE PROCEDURE REFRESH_MV AS
BEGIN
    EXECUTE  DBMS_MVIEW.REFRESH('my_mat_view_mv','C');
END REFRESH_MV;
Run Code Online (Sandbox Code Playgroud)

(S1917)期待:(; @
IMMEDIATE

CREATE OR REPLACE PROCEDURE REFRESH_MV AS
BEGIN
    EXECUTE IMMEDIATE DBMS_MVIEW.REFRESH('my_mat_view_mv','C');
END REFRESH_MV;

Warning: compiled but with compilation errors
Run Code Online (Sandbox Code Playgroud)

这是一个Oracle 10g XE,希望没问题.

提前致谢 !

oracle plsql materialized-views ora-06550

1
推荐指数
1
解决办法
1万
查看次数

如何使用触发器刷新物化视图?

create or replace TRIGGER REFRESH_REST_VIEW
 AFTER
  INSERT OR UPDATE
 ON tbl_contract
BEGIN
    execute DBMS_MVIEW.REFRESH('REST_VIEW');
END REFRESH_REST_VIEW;
commit;
Run Code Online (Sandbox Code Playgroud)

这是我用来刷新Materialized View的sql触发器.但它说......

Warning: execution completed with warning
TRIGGER REFRESH_REST_VIEW Compiled.
Run Code Online (Sandbox Code Playgroud)

PS:当表的数据(由Materialized View使用)进行任何DML操作时,将执行触发器.

我已经google了足够多,很多帖子说这是可能的,但我没有得到如何做到这一点.我尝试使用常规触发器语法,但它不起作用.

更新:

现在我尝试与过程和触发器相同..

create or replace
PROCEDURE Rfresh_mate_views AS
  BEGIN
   DBMS_MVIEW.REFRESH('REST_VIEW');
  END Rfresh_mate_views;


create or replace trigger refresh_company_mview
after insert or update ON BCD.BCD_COMPANY
begin
RFRESH_MATE_VIEWS(); 
end refresh_company_mview;
Run Code Online (Sandbox Code Playgroud)

所有都已成功编译,但在表中更新时它说:

ORA-04092: cannot COMMIT in a trigger
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2449
ORA-06512: at "SYS.DBMS_SNAPSHOT", line 2429
ORA-06512: at "BCD.RFRESH_MATE_VIEWS", line 3
ORA-06512: …
Run Code Online (Sandbox Code Playgroud)

sql oracle triggers materialized-views oracle10g

1
推荐指数
1
解决办法
1万
查看次数

这个快速刷新的视图定义有什么问题:它并不复杂和完整,但是ORA-12015被提升了

Oracle 10.2中这种快速刷新的视图定义有什么问题:

create table A
(
  ID number(19,0) not null constraint A_PK primary key using index
, C number(9,0) not null
);

create table B
(
  ID number(19,0) not null constraint B_PK primary key using index
, A_ID number(19,0) not null constraint A_FK references A(ID) on delete cascade
, D number(9,0) not null
);

create index B_FK_IDX on B(A_ID);

create materialized view log on A 
  with primary key, rowid, sequence (C) including new values;
create materialized view log on B …
Run Code Online (Sandbox Code Playgroud)

oracle materialized-views oracle10g

1
推荐指数
1
解决办法
5171
查看次数