Frage

Ich versuche, Tuning von materialisierten Ansichten in meiner Anwendung auszuführen. Ich habe aus auszuführen:

 dbms_advisor.tune_mview()

Verfahren und schrieb den folgenden Code in eine SQL_Worksheet von Oracle SQL Developer:

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;

Offensichtlich materialisierte Ansicht ist bereits (mit refresh fast on commmit, die jedoch langsam läuft unannehmbar). Advisor meldet folgende Fehler:

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.

Aber, gibt es nichts mehr berichtet, keine Spur von der zweiten Fehlermeldung. Weiß jemand, was das Problem ist hier? Ich bin umso mehr überrascht, da bereits die MV existieren und arbeiten in der Datenbank, wenn auch langsam.

Auf einem verwandten beachten, weiß jemand, wie eine mehrzeilige Zeichenfolge in SQL Developer einzugeben. Wenn ich versuche, so etwas wie:

execute :mvddl :='create materialized view MV_FOO_BAR
build immediate
refresh fast on commit
...
';

SQL Developer Drosseln auf der ersten Zeile. String-Verkettung fiel mir, aber ich habe mehrere MVs von 100-150 Linien und ich würde es hassen, es zu tun manuell für jeden einzelnen von ihnen.

War es hilfreich?

Lösung

(1) Wenn der Text für einen Fehler 13600 bezieht sich auf die "zweite Fehlermeldung", bedeutet es, die nächsten Fehler in dem Stapel -. In diesem Fall QSM-03112

(2) Der Grund für den Fehler, glaube ich, ist, dass der zweite Parameter in dem Aufruf von TUNE_MVIEW soll der vollständige Text einer CREATE MATERIALIZED VIEW-Anweisung sein, aber Sie nur auf den Abfragetext.

(3) Für die mehrzeiligen Frage erwarte ich, dass es funktioniert, wenn Sie einen expliziten PL / SQL anonymen Block anstelle von „Ausführen“ zu verwenden, z.

BEGIN
  :mvddl := 'create materialized view MV_FOO_BAR
             build immediate
             refresh fast on commit
             ...
            ';
END;
/
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top