【问题标题】:ORACLE - materialized viewORACLE - 物化视图
【发布时间】:2020-07-07 09:25:39
【问题描述】:

我正在尝试创建实体化视图。

我有 2 个数据库 ORA1 和 ORA2。我在 ORA1 上有 POKUS 表,我正在尝试在 ORA2 上创建视图,每次我更改并在表 POKUS 中对 ORA1 进行更改时都会更改。

这是我的查询。但它不起作用:

CREATE MATERIALIZED VIEW  
REPLIKOVANY_POKUS2 
REFRESH FAST START WITH 
    SYSDATE NEXT SYSDATE + 1/24/60 
ENABLE QUERY REWRITE AS 
    SELECT * 
    FROM dovondrda3.POKUS@ora1.uhk.cz;

你能帮我吗

【问题讨论】:

  • 您应该很快了解到,当您在这样的网站上寻求帮助时,“它不起作用”不会得到很多好的答案。它是如何“不工作”的?发生了什么 - 您是否遇到语法错误?运行时错误?没有错误,但它只是没有做你想做的事? “它不起作用”不是对问题的技术描述。然后:在您的代码中每小时刷新一次与“每次我更改并在 ORA1 上提交更改”不同。您需要哪个 - 用文字说的“每次进行更改和提交”,还是编码时的“每个小时”?

标签: sql oracle view materialized-views


【解决方案1】:

每次我在 ORA1 上更改和提交更改时都会更改

好吧,你不能这样做,不要通过数据库链接,因为在涉及远程数据库时刷新on commit 将不起作用。它记录在数据仓库指南的某处;如果需要,请搜索它。

远程数据库:

SQL> create table a1_brisime as
  2  select * from tom
  3  where sifra = '0387779';

Table created.

SQL> alter table a1_brisime add constraint pkab primary key (sifra);

Table altered.

SQL> create materialized view log on a1_brisime;

Materialized view log created.

SQL>

本地数据库:

SQL> create materialized view mv_test
  2  refresh fast on commit as
  3  select sifra, naziv
  4  from a1_brisime@dbl_test
create materialized view mv_test
*
ERROR at line 1:
ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view


SQL>

正如我所说 - 它不会工作。因此,切换到另一个选项,例如on demand:

SQL> create materialized view mv_test
  2  refresh on demand as
  3  select sifra, naziv
  4  from a1_brisime@dbl_test

Materialized view created.

SQL>

或已安排(如您所愿):

SQL> create materialized view mv_test
  2  refresh complete
  3  start with sysdate
  4  next sysdate + 1/24/60
  5  as
  6  select sifra, naziv
  7  from a1_brisime@dbl_test

Materialized view created.

SQL>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 2012-07-17
    • 2011-11-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多