Oracle物化视图调整

Oracle物化视图调整,oracle,performance,oracle-sqldeveloper,materialized-views,Oracle,Performance,Oracle Sqldeveloper,Materialized Views,我试图在我的应用程序中执行物化视图的调优。我开始执行: dbms_advisor.tune_mview() 过程,并将以下代码写入Oracle SQL Developer的SQL_工作表中: variable mvtask varchar2(100); variable mvddl varchar2(4000); execute :mvtask := 'MV_FOO_BAR'; execute select query into :mvddl from user_mviews where

我试图在我的应用程序中执行物化视图的调优。我开始执行:

 dbms_advisor.tune_mview()
过程,并将以下代码写入Oracle SQL Developer的SQL_工作表中:

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;
显然,已经创建了物化视图(commmit上的
刷新速度快,但是运行速度慢得令人无法接受)。Advisor报告以下错误:

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 encountered in Advisor\n%s" *Cause: An error occurred in the Advisor. This message will be followed by a second message giving more details about the nature of the error. *Action: See the Advisor documentation for an explanation of the second error message. SQL开发人员在第一行遇到瓶颈。我想到了字符串连接,但我有几个100-150行的MVs,我不喜欢为每个MVs手动进行连接。

(1)当错误13600的文本指向“第二条错误消息”时,它意味着堆栈中的下一个错误——在本例中为QSM-03112

(2) 我认为,错误的原因是调用TUNE_MVIEW中的第二个参数是CREATE-MATERIALIZED-VIEW语句的全文,但您只传递了查询文本

(3) 对于多行问题,如果使用显式PL/SQL匿名块而不是“执行”,我希望它会起作用,例如:

(1) 当错误13600的文本引用“第二条错误消息”时,它表示堆栈中的下一个错误——在本例中为QSM-03112

(2) 我认为,错误的原因是调用TUNE_MVIEW中的第二个参数是CREATE-MATERIALIZED-VIEW语句的全文,但您只传递了查询文本

(3) 对于多行问题,如果使用显式PL/SQL匿名块而不是“执行”,我希望它会起作用,例如:


恰恰是我所需要的。谢谢。这正是我所需要的。谢谢
execute :mvddl :='create materialized view MV_FOO_BAR
build immediate
refresh fast on commit
...
';
BEGIN
  :mvddl := 'create materialized view MV_FOO_BAR
             build immediate
             refresh fast on commit
             ...
            ';
END;
/