ORACLE物化视图 Query Rewrite的一般理解之二
在Oracle的Query Rewrite中主要有三点, 第一是要使用CBO; 第二是要设置query rewrite enabled参数为TRUE; 第三是要先择设置query rewrite integrity参数的值(stale_tolerated, trusted, enforced). 对于第一点, 我们最好analyze相关的表及索引及MV; 对于第二点,这个参数只有两个值(true, false), 很简单; 对于第三点, 我们先来看Oracle的官方对于这个参数的解释:
ENFORCED
Oracle enforces and guarantees consistency and integrity
TRUSTED
Oracle allows rewrites using relationships that have been declared, but that are not enforced by Oracle.
STALE_TOLERATED
Oracle allows rewrites using unenforced relationships. Materialized views are eligible for rewrite even if they are known to be inconsistent with the underlying detail data.
这个参数有点难于理解一些, 但主要和数据的一致性有关, 在Oracle的Query Rewrite中, 一些约束的声明或状态和Oracle决于可否Query Rewrite有很大的关系. ENFORCED表示Oracle只相信Enabled和Validated的约束, 而Trusted则相信RELY的约束, 就算这个约束没有Enabled和Validated, 这两种都要求MVIEW中的数据是及时刷新的,而STALE_TOLERATED则可以容忍一切, 就算中间表的数据是旧的, 指基表有新数据修改而MVIEW还没有刷新的情况下, Oracle也会选择使用Query Rewrite来作查询, 在这种情况下, 查出来的数据可能是不准的. 下面我们来作一个例子来显示enforced与trusted的不同:
接着前面的例子,我们创建这样一个实体化视图:
CREATE MATERIALIZED VIEW MV_TABLE
ENABLE QUERY REWRITE
AS
SELECT U.USER#,COUNT(*) OBJCNT from USR_TABLE U,OBJ_TABLE O
WHERE U.USER#=O.USER#
group by u.user#
接下来我们创建这样的两个约束:
ALTER TABLE USR_TABLE ADD PRIMARY KEY (USER#) RELY DISABLE;
ALTER TABLE OBJ_TABLE ADD FOREIGN KEY (USER#)
REFERENCES USR_TABLE(USER#) RELY DISABLE;
下接来创建一个USR_LEVEL的表, 如下所示:
CREATE TABLE USR_LEVLEL AS SELECT USER#, TRUNC(USER#/10) ULEVEL from USR_TABLE;
实验所需要的表都建起来了, 对三个表和一个MVIEW进行分析后, 下面来做测试:
SQL> SHOW PARAMETE
相关文档:
oracle表空间操作详解
1
2
3作者: 来源: 更新日期:2006-01-04
5
6
7建立表空间
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
实践第一讲:
名词解释:
dataguard:呵呵 ORACLE高可用体系中三架马车之一(RAC、STREAM)。干嘛用???就是异地备份、容灾什么的。什么原理??==聊哈。
primary:数据母体
standby:数据母体的拷贝或备份或克隆(只能克9个 为什么 要问ORACLE 为什么 log_archive_dest_n 这个你N的上限是10喽)
实践第二件:
实践检 ......
当你在数据库中创建数据表的时候,你需要定义表中所有字段的类型。ORACLE有许多种数据类型以满足你的需要。数据类型大约分为:character, number, date, LOB, 和RAW等类型。虽然ORACLE8i也允许你自定义数据类型,但是它们是最基本的数据类型。在下面的文章中你将了解到他们在oracle 中的用法、限制以及允许值。
......
本次oracle dataguard
环境:
操作系统:windows 2003 server
数据库:oracle 10g 10.2.0.1
ORACLE_HOME:D:\oracle\product\10.2.0\db_1
archive_dest:D:\archivelog
rman_dest:d:\rman_backup
机器:1台
主库名称:learn
备库名称:learndg
实验步骤:修改好tnsnames、listener、pfile文件,通过rman的duplic ......
itpub论坛中曾有兄弟说过materialized view是以空间换时间,我认为非常贴切。物化视图实际就是基于查询的数据拷贝,其形式
简单理解的话可以看成是create table table_name as select * from table。
呵呵,人们总是希望事情越简单越好嘛,于是当俺看到这个东西这么简单,头脑一发热也迫不及待冲了过云,下面我就具体描 ......