任何人都能告诉我物化视图设置为使用以下设置刷新的频率?
按需启动强制执行sysdate + 0 NEXT(round(sysdate)+ 1/24)+ 1
我想我每小时都读它,但我不确定
我对Materialized视图感到困惑.要么是我使用的Toad IDE让我感到困惑,要么就是我对MV的了解不够.
我通过这样的东西在Oracle中创建了一个物化视图....
CREATE MATERIALIZED VIEW TESTRESULT
NOCACHE
LOGGING
NOCOMPRESS
NOPARALLEL
BUILD IMMEDIATE
REFRESH FORCE ON DEMAND
WITH PRIMARY KEY
AS
SELECT ...
FROM tables...
Run Code Online (Sandbox Code Playgroud)
我希望将使用查询返回的数据创建和填充实体化视图.好的,没什么大不了的.
我感到困惑的是为什么我的Toad IDE在表格部分下显示了一个表'TESTRESULT'.它甚至还有一个我可以看到的"创建表脚本".
但我也在"物化视图"部分下看到了物化视图.
幕后是Oracle在创建物化视图时创建表格吗?它看起来好像有两个单独的对象,一个物化视图和一个表?有人可以在创建物化视图时解释幕后发生的事情吗?蟾蜍错了还是我误解了什么?
Toad版本:9.6.1.1 Oracle:10g
假设您有两个Oracle数据库,DB_A和DB_B.DB_A中有一个名为TAB1的表,其中包含物化视图日志,以及在DB_B中创建的名为SNAP_TAB1的物化视图
CREATE SNAPSHOT SNAP_TAB1
REFRESH FAST
AS SELECT * FROM TAB1@DB_A;
Run Code Online (Sandbox Code Playgroud)
有没有办法在DB_B中查询每次调用快速刷新物化视图后对SNAP_TAB1所做的更改?
DBMS_SNAPSHOT.REFRESH( 'SNAP_TAB1', 'F' );
Run Code Online (Sandbox Code Playgroud)
在DB_A中,在刷新之前,您可以查询物化视图日志表MLOG $ _TAB1,以查看在TAB1中已更改的行.我正在寻找一种方法在DB_B中查询,每次刷新后,哪些行已在SNAP_TAB1中刷新.
谢谢!
我正在使用实例化视图,由于某些表来自没有实例化视图日志的远程数据库,因此无法将其设置为快速刷新。
当我创建实例化视图时,它花费了大约20 30秒。但是,当我尝试刷新它时。花了2到3个小时以上。记录总数只有460,000左右。
有谁知道它会如何发生吗?
谢谢
代码如下
create materialized view MY_MV1
refresh force on demand
start with to_date('20-02-2013 22:00:00', 'dd-mm-yyyy hh24:mi:ss') next trunc(sysdate)+1+22/24
as
( SELECT Nvl(Cr.Sol_Chng_Num, ' ') AS Change_Request_Nbr,
Nvl(Sr.Sr_Num, ' ') AS Service_Request_Nbr,
Nvl(Sr.w_Org_Id, 0) AS Org_Id,
Fcr.rowid,
Cr.rowid,
Bsr.rowid,
Sr.rowid,
SYSDATE
FROM Dwadmin.f_S_Change@DateWarehouse.World Fcr
INNER JOIN Dwadmin.d_S_Change@DateWarehouse.World Cr
ON Fcr.w_Sol_Chng_Id = Cr.w_Sol_Chng_Id
INNER JOIN Dwadmin.b_S_Change_Obl@DateWarehouse.World Bsr
ON Fcr.w_Sol_Chng_Id = Bsr.w_Sol_Chng_Id
INNER JOIN Dwadmin.d_S_Rec@DateWarehouse.World Sr
ON Sr.w_Srv_Rec_Id = Bsr.w_Srv_Rec_Id
WHERE Sr.Sr_Num <> 'NS'
);
Run Code Online (Sandbox Code Playgroud)
我尝试使用dbms_mview.refresh('MY_MATVIEW','C',atomic_refresh => false),但仍然需要141分钟才能运行...而没有atomic_refresh => …
I\xe2\x80\x99在我的 PostgreSQL 中有一个视图,它可以是正常的也可以是具体化的,具体取决于某些情况。我正在尝试编写一个查询,该查询肯定会删除视图,并且无论它目前的类型是什么,都不会出现错误。然而,这似乎并不容易。当我尝试使用以下代码时,出现错误:
\n\nDROP VIEW IF EXISTS {{ schema }}.{{ viewName }};\nDROP MATERIALIZED VIEW IF EXISTS {{ schema }}.{{ viewName }};\nRun Code Online (Sandbox Code Playgroud)\n\n\xc2\xa0
\n\nSQLSTATE[42809]: Wrong object type: 7 ERROR: "{{ viewName }}" is not a view \nHINT: Use DROP MATERIALIZED VIEW to remove a materialized view. \nRun Code Online (Sandbox Code Playgroud)\n\n因此,当视图具体化时,\xe2\x80\x98IF EXISTS\xe2\x80\x99 在第一行结果为 true,DROP 命令启动,但由于视图类型错误而失败(这是不正常的) 。谁能提出一种既适用于物化视图又适用于普通视图的通用解决方法?
\n我创建了一些物化视图,Oracle SQL Developer 在每个视图旁边放了一个红色的小“x”。目前,当我查询它们并在 SQL Plus 中运行以下查询时,它们返回正确的信息表明没有错误:
SELECT * FROM USER_SNAPSHOTS
Run Code Online (Sandbox Code Playgroud)
ERROR对于有问题的物化视图,此列中的列返回 0。
有谁知道为什么 SQL Developer 认为有错误?我还有其他地方可以检查吗?
根据帕特里克的建议,我运行了以下查询:
SELECT * FROM ALL_MVIEWS
Run Code Online (Sandbox Code Playgroud)
对于每个有问题的视图,COMPILE_STATE 是“NEEDS_COMPILE”。这是什么意思?为什么需要重新编译?未更改任何基础表。
对于常规表和视图,我可以通过运行以下查询来查看其数据类型:
select data_type from information_schema.columns
where .....
Run Code Online (Sandbox Code Playgroud)
但是,似乎没有关于物化视图的任何信息出现在此处.
通过运行,我能够获得物化视图的列列表:
SELECT
a.attname as column_name
FROM
pg_catalog.pg_attribute a
INNER JOIN
(SELECT c.oid,
n.nspname,
c.relname
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname ~ ('^(materializedview)$')
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3) b
ON a.attrelid = b.oid
INNER JOIN
(SELECT
a.attrelid,
max(a.attnum) as max_attnum
FROM pg_catalog.pg_attribute a
WHERE a.attnum > 0
AND NOT a.attisdropped
GROUP BY a.attrelid) e
ON a.attrelid=e.attrelid
WHERE a.attnum > 0
AND NOT a.attisdropped
ORDER BY …Run Code Online (Sandbox Code Playgroud) 我们有一个高度(也许已经结束?)规范化的表来跟踪版本化的值。它只是插入,没有更新。
示例数据:
"ID" "Version" "Value"
1 0 "A_1"
2 0 "B_1"
1 1 "A_2"
3 0 "C_1"
Run Code Online (Sandbox Code Playgroud)
我们经常运行查询以仅提取每个 ID 的最新值。当我们处理数百万行时,我们开始遇到性能问题。我已经能够使用物化视图对改进进行原型设计,但无法以它们自刷新“ON COMMIT”的方式创建它们
到目前为止我得到的是这个(修改如下)
CREATE MATERIALIZED VIEW TABLE_LATEST
BUILD IMMEDIATE
REFRESH FAST
ON COMMIT AS
SELECT T.ID
,T.LAST_VERSION
FROM (
SELECT ID
,MAX(VERSION) OVER (PARTITION BY ID) LAST_VERSION
FROM TABLE
) T
GROUP BY T.ID, T.LAST_VERSION;
Run Code Online (Sandbox Code Playgroud)
由于反馈,现在对其进行了修订:
CREATE MATERIALIZED VIEW TABLE_LATEST
BUILD IMMEDIATE
REFRESH FAST
ON COMMIT AS
SELECT ID
,MAX(VERSION)
FROM TABLE
GROUP BY T.ID;
Run Code Online (Sandbox Code Playgroud)
哪个失败了:
ORA-12033: 无法在“SCHEMA”.“TABLE”上使用物化视图日志中的过滤器列
Run Code Online (Sandbox Code Playgroud)*Cause: The materialized …
我正在使用以下查询创建物化视图:
CREATE MATERIALIZED VIEW article_view AS
SELECT
id,
alternative_headline,
article_author_id,
created_at,
description,
headline,
preview_paragraph_image_id,
published_at,
updated_at
FROM article
WHERE
published_at IS NOT NULL
WITH NO DATA;
CREATE UNIQUE INDEX ON article_view (id);
Run Code Online (Sandbox Code Playgroud)
我希望它在实体化视图中表示该published_at列不可为空。
想要将published_at列表示为不可为空的原因是因为我使用了一个脚手架工具,它根据数据库模式生成数据库查询和类型。在这种特殊情况下,published_at被错误地表示为触发严格类型检查错误的可空列。
所述脚手架工具使用以下查询来描述数据库:
SELECT
pc1.relname AS "tableName",
pa1.attname AS "columnName",
pg_catalog.format_type (pa1.atttypid, NULL) "dataType",
pc1.relkind = 'm' "isMaterializedView",
NOT(pa1.attnotnull) "isNullable"
FROM
pg_class pc1
JOIN pg_namespace pn1 ON pn1.oid = pc1.relnamespace
JOIN
pg_attribute pa1 ON pa1.attrelid = pc1.oid
AND …Run Code Online (Sandbox Code Playgroud) 我做了一些谷歌搜索,但没有找到一个 oracle 性能问题的明确答案。也许我们可以在这里记录它。我正在构建一个非常简单但在相当大的桌子上的 MV。像许多事情一样的查询可以用不止一种方式编写。在我的情况下,当作为 select 语句编写时,两个解决方案具有相似的成本/执行计划,但是当放置在创建物化视图中时,执行时间会发生巨大变化。任何洞察为什么?
查询是:
SELECT
CR1.Several_Fields
FROM
SCHEMA1.tab1 T1
WHERE T1.field2 like 'EXAMPLE%'
AND T1.field1 not in (
SELECT T2.field1
FROM SCHEMA1.tab2 T2
)
;
Run Code Online (Sandbox Code Playgroud)
SELECT
CR1.Several_Fields
FROM
SCHEMA1.tab1 T1
WHERE T1.field2 like 'EXAMPLE%'
AND not exists (
SELECT 1
FROM SCHEMA1.tab2 T2
WHERE T1.field1 = T2.field1
)
;
Run Code Online (Sandbox Code Playgroud)
两个查询作为 select …
oracle ×7
postgresql ×3
oracle10g ×2
oracle12c ×1
performance ×1
plsql ×1
replication ×1
sql ×1
sql-drop ×1
toad ×1
views ×1