J'essaye d'effectuer l'accord des vues matérialisées dans mon application. Je mets à exécuter:Oracle matérialisé vue réglage
dbms_advisor.tune_mview()
procédure
, et écrit le code suivant dans un SQL_Worksheet d'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;
De toute évidence, vue matérialisée est déjà créé (avec refresh fast on commmit
, qui, cependant, fonctionne de manière inacceptable lente). Le conseiller signale une erreur suivante:
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.
Mais, il n'y a rien de plus signalé, aucune trace du second message d'erreur. Est-ce que quelqu'un sait quel est le problème ici? Je suis d'autant plus surpris que la MV existe déjà et fonctionne dans la base de données, quoique lentement. Sur une note connexe, quelqu'un sait comment entrer une chaîne multiligne dans SQL Developer. Lorsque j'essaie quelque chose comme:
execute :mvddl :='create materialized view MV_FOO_BAR
build immediate
refresh fast on commit
...
';
SQL Developer s'étouffe sur la première ligne. La concaténation de cordes a traversé mon esprit, mais j'ai plusieurs MV de 100-150 lignes et je détesterais le faire manuellement pour chacun d'entre eux.
+1 Bonne réponse concise. – DCookie
Еexactement ce dont j'avais besoin. Merci. – javashlook