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;
/