WEB开发网
开发学院数据库Oracle oracle10g新特性——物化视图 阅读

oracle10g新特性——物化视图

 2008-08-30 12:44:28 来源:WEB开发网   
核心提示:Advisor在10g将查询重写并且引进了新的强大的调优建议者使管理物化视图变得容易多了,物化视图(Materialized Views MVs),oracle10g新特性——物化视图,也被称为快照,现在已经被广泛应用了,在执行查询前记得先执行设置SET LONG 999999,因为这个视图中的这个字段是一个CLOB类

Advisor

在10g将查询重写并且引进了新的强大的调优建议者使管理物化视图变得容易多了。

物化视图(Materialized Views MVs),也被称为快照,现在已经被广泛应用了。MV将一个查询的结果存储在一个段中,并且当用户提交查询时返回查询结果,而不需要重新执行查询——如果查询会被执行多次(经常出现在数据仓库环境中),这就会非常有效。MV可以从基础表中完全刷新或通过使用快速刷新机制增量刷新。

假如你有如下定义的MV:

create materialized view mv_hotel_resv
refresh fast
enable query rewrite
as
select distinct city, resv_id, cust_name
from hotels h, reservations r
where r.hotel_id = h.hotel_id';
  你如何知道使这个MV正常工作的所有必须对象都已经被创建呢?在10g之前,这一检测是通过包DBMS_MVIEW的存储过程EXPLAIN_MVIEW和EXPLAIN_REWRITE实现的。这些存储过程在10g还存在,它们的功能很简单——检测MV是否具备快速刷新能力和查询重新能力,但它们并不提供如何使这些能力有效的建议。相反,要求对于每个MV的结构都做检查是不切实际的。

在10g中,有一个新的包DBMS_ADVISOR,它有一个存储过程TUNE_MVIEW使这项工作变得非常容易:你可以在调用这个包时输入一个输入参数,参数内容为创建MV的整个脚本。这个存储过程创建了一个建议者任务(Advisor Task),它的名字会通常存储过程唯一的输出参数返回给用户。

这有一个例子。由于第一个参数是一个输出参数,所以你必须定义一个变量:

SQL> -- first define a variable to hold the OUT parameter
SQL> var adv_name varchar2(20)
1 SQL> begin
2 dbms_advisor.tune_mview
3 (
4 :adv_name,
5 'create materialized view mv_hotel_resv refresh fast enable query rewrite as
select distinct city, resv_id, cust_name from hotels h,
reservations r where r.hotel_id = h.hotel_id');
6* end;
Now you can find out the name of the Advisor from the variable.
SQL> print adv_name
ADV_NAME
-----------------------
TASK_117
  接下来,可以通过一个新视图DBA_TUNE_MVIEW从Advisor那获取到所提供的建议。在执行查询前记得先执行设置SET LONG 999999,因为这个视图中的这个字段是一个CLOB类型,而默认知会显示80个字符。

1 2 3 4 5 6  下一页

Tags:oracleg 特性 物化

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接