This discussion is archived
6 Replies Latest reply: Feb 22, 2013 8:30 AM by 992227 RSS

SQL-ERROR ORA-22921 beim Ausführen von DBMS_CUBE.CRETAE_MVIEW

992227 Newbie
Currently Being Moderated
Hallo

Ich versuche mit Hilfe der "DBMS_CUBE" - Funktion einen Cube anzulegen um die Komplexität und das Laufzeitverhalten in unserer Umgebung zu analysieren. Ich habe dazu die Definition aus einem Tool mit 6 Dimensionen und einer prall gefüllten Faktentabelle übernommen. Da der Cube nicht angelegt werden konnte habe ich die Definitionen so weit reduziert, dass ich noch genau eine Dimensiion und einen Faktentabelle nur 7 Rows erhalte.

Das Skript sieht nun wie folgt aus:

-----
DROP TABLE DIM_PYF;

CREATE TABLE DIM_PYF
AS SELECT 1 AS TAG, 'MO' AS TAG_NAME, 1 AS MONAT, 'JAN' AS MONAT_NAME, 2010 AS JAHR FROM DUAL
UNION SELECT 2, 'DI', 2, 'FEB', 2010 FROM DUAL
UNION SELECT 3, 'MI', 3, 'MAR', 2010 FROM DUAL
UNION SELECT 4, 'DO', 4, 'APR', 2010 FROM DUAL
UNION SELECT 5, 'FR', 5, 'MAI', 2010 FROM DUAL
UNION SELECT 6, 'SA', 6, 'JUN', 2010 FROM DUAL
UNION SELECT 7, 'SO', 7, 'JUL', 2010 FROM DUAL
;


DROP DIMENSION D_DIM;

CREATE DIMENSION D_DIM
LEVEL TAG IS ( DIM_PYF.TAG )
LEVEL MONAT IS ( DIM_PYF.MONAT )
LEVEL JAHR IS ( DIM_PYF.JAHR )
HIERARCHY PERIODE_HIRARCHIE ( TAG CHILD OF
MONAT CHILD OF
JAHR
)
ATTRIBUTE TAG DETERMINES ( TAG_NAME )
ATTRIBUTE MONAT DETERMINES ( MONAT_NAME )
;

DROP TABLE FAKT_PYF;

CREATE TABLE FAKT_PYF
AS SELECT PERIODE.TAG, PERIODE.MONAT, PERIODE.JAHR,
( PERIODE.TAG + PERIODE.MONAT * PERIODE.JAHR ) AS BESTAND_A,
( PERIODE.TAG - PERIODE.MONAT * PERIODE.JAHR ) AS BESTAND_P
FROM DIM_PYF PERIODE
;

DROP MATERIALIZED VIEW VMBI_RZ.MV_FAKT_PYF;

CREATE MATERIALIZED VIEW VMBI_RZ.MV_FAKT_PYF
BUILD DEFERRED
AS SELECT DIM.TAG AS TAG,
SUM( FAKT.BESTAND_A ) AS BEST_A_SUM,
SUM( FAKT.BESTAND_P ) AS BEST_P_SUM
FROM DIM_PYF DIM,
FAKT_PYF FAKT
WHERE FAKT.TAG = DIM.TAG
GROUP BY DIM.TAG
;

DECLARE myCubeMv varchar2(32);

BEGIN
myCubeMv :=
DBMS_CUBE.CREATE_MVIEW( mvOwner => 'VMBI_RZ',
mvName => 'MV_FAKT_PYF',
sam_parameters => 'logDest=serverout,build=immediate'
);
END;
/
-----

Ich starte nun diese Skript in SQLTool (1.6) auf einer Oracle-11g - Instanz und erhalte folgende Meldungen:

-----
Line Pos Text
2 Drop table, executed in 385 ms
4 Create table, executed in 85 ms
15 Drop dimension, executed in 80 ms
17 Create dimension, executed in 13 ms
29 Drop table, executed in 15 ms
31 Create table, executed in 15 ms
38 Drop snapshot, executed in 673 ms
40 Create snapshot, executed in 128 ms
SAM NOTE: Logging destination set to server output.
20130220 13:41:41,107 SAM NOTE: Begin cube xml template generation. Version: CF.2009.01.16
20130220 13:41:41,107 SAM NOTE: Checking function argument.
20130220 13:41:41,107 SAM NOTE: Checking owner and materialized view name.
20130220 13:41:41,357 SAM NOTE: Identified ""VMBI_RZ"."FAKT_PYF"" as fact table of materialized view.
20130220 13:41:41,357 SAM NOTE: Setting package options.
SAM NOTE: Logging destination set to server output.
20130220 13:41:45,232 SAM NOTE: Rendering mode is loose.
20130220 13:41:45,357 SAM NOTE: Using default precompute percents "35:0".
20130220 13:41:45,357 SAM NOTE: Evaluating materialized view.
20130220 13:41:45,373 SAM NOTE: Checking for named views.
20130220 13:41:45,498 SAM NOTE: Checking for unsupported expressions.
20130220 13:41:45,529 SAM NOTE: Checking for cube consistant joins.
20130220 13:41:46,998 SAM NOTE: Checking for dimensions on materialized view keys.
20130220 13:41:48,076 SAM NOTE: Checking aggregates.
20130220 13:41:48,185 SAM NOTE: Gathering model information.
20130220 13:42:42,403 SAM NOTE: Using dbms_aw.advise_sparsity to determine partition dimension and level.
20130220 13:42:42,731 SAM NOTE: ERRBACKTRACE:
20130220 13:42:42,731 SAM NOTE: ORA-22921: Länge des Eingabepuffers ist kleiner als der geforderte Wert
ORA-06512: in "SYS.DBMS_AW", Zeile 541
ORA-06512: in "SYS.DBMS_AW", Zeile 574
ORA-06512: in "SYS.DBMS_CUBE", Zeile 7200
ORA-06512: in "SYS.DBMS_CUBE", Zeile 7353
ORA-06512: in "SYS.DBMS_CUBE", Zeile 8438
ORA-06512: in "SYS.DBMS_CUBE", Zeile 8472
ORA-06512: in "SYS.DBMS_CUBE", Zeile 10049
20130220 13:42:42,731 SAM NOTE: ERRBACKTRACE:
20130220 13:42:42,731 SAM NOTE: ORA-22921: Länge des Eingabepuffers ist kleiner als der geforderte Wert
ORA-06512: in "SYS.DBMS_CUBE", Zeile 10112
ORA-06512: in "SYS.DBMS_CUBE", Zeile 10212
51 1 ORA-22921: Länge des Eingabepuffers ist kleiner als der geforderte Wert
ORA-06512: in "SYS.DBMS_CUBE", Zeile 10281
ORA-06512: in Zeile 4

Total execution time 05:14.427 (314.427 sec.)
-----

Für mich ist der Fehler (ORA-22921) nicht nachvollziehbar, zumal die "SYS.DBMS_CUBE"-Fehlermeldungen mit den Zeilennummern nicht wirklich weiterhelfen.

Also, weiss jemand was ich machen muss damit dieser einfache Cube ohne Fehler erstellt werden kann?

Danke für die Hilfe,
Fredy
  • 1. Re: SQL-ERROR ORA-22921 beim Ausführen von DBMS_CUBE.CRETAE_MVIEW
    TPD-Opitz-Consulting-com Expert
    Currently Being Moderated
    Schon mal darüber nachgedacht, warum die anderen Post hier alle nicht auf Deutsch sind?

    bye
    TPD
  • 2. Re: SQL-ERROR ORA-22921 beim Ausführen von DBMS_CUBE.CRETAE_MVIEW
    BluShadow Guru Moderator
    Currently Being Moderated
    Which roughly translated by google says:

    >
    Hello

    I try using the "DBMS_CUBE" - function to create a cube to analyze the complexity and run-time behavior in our environment. I've taken to the definition of a tool with 6 dimensions and a bulging fact table. Since the cube could not be created I have reduced the definition to the point that I still remember getting a Dimensiion and a fact table only 7 rows.

    The script now looks like this:

    >

    and

    >
    For me the error (ORA-22921) incomprehensible, especially since the "SYS.DBMS_CUBE" error messages with the line numbers do not really help.

    So, anyone know what I have so that this simple cube can be created without error?

    Thanks for the help,
  • 3. Re: SQL-ERROR ORA-22921 beim Ausführen von DBMS_CUBE.CRETAE_MVIEW
    992227 Newbie
    Currently Being Moderated
    Hallo TPD

    Danke für den Hinweis zur Sprache ... ich hatte jedoch auf einen Tipp zur Fehlerbehebung oder ggf. zu einem deutschsprachigen Forum gehofft.

    Übrigens, das Problem besteht noch immer und ich bin auch noch immer an einer Lösung interessiert.

    Mfg,
    Pyf
  • 4. Re: SQL-ERROR ORA-22921 beim Ausführen von DBMS_CUBE.CRETAE_MVIEW
    TPD-Opitz-Consulting-com Expert
    Currently Being Moderated
    Pyf wrote:
    Hallo TPD

    Danke für den Hinweis zur Sprache ... ich hatte jedoch auf einen Tipp zur Fehlerbehebung oder ggf. zu einem deutschsprachigen Forum gehofft.
    Dann hättest Du dass auch in erster Linie schreiben sollen.
    Versuchs mal hier: http://www.held-informatik.de/forum/themen/oracle.html

    Aber ohne Englischkenntnisse wirst Du in diesem Job nicht weit kommen.
    Übrigens, das Problem besteht noch immer und ich bin auch noch immer an einer Lösung interessiert.
    Da kann ich leider nicht helfen.

    bye
    TPD
  • 5. Re: SQL-ERROR ORA-22921 beim Ausführen von DBMS_CUBE.CRETAE_MVIEW
    stefan nebesnak Journeyer
    Currently Being Moderated
    Pyf wrote:
    20130220 13:42:42,403 SAM NOTE: Using <font style="background-color: #FFFFCC">dbms_aw.advise_sparsity</font> to determine partition dimension and level.
    20130220 13:42:42,731 SAM NOTE: ERRBACKTRACE:
    20130220 13:42:42,731 SAM NOTE: <font style="background-color: #FFFFCC">ORA-22921</font>: Länge des Eingabepuffers ist kleiner als der geforderte Wert
    ORA-06512: in "<font style="background-color: #FFFFCC">SYS.*DBMS_AW*</font>", Zeile 541
    <tt>
    ORA-22921: length of input buffer is smaller than amount requested
    Cause: The buffer length is not big enough to hold the amount of data requested.
    Action: Verify that the number of bytes/characters specified in the input amount parameter is not bigger than the number of bytes specified in the input buffer length parameter. Allocate more space for the input buffer if necessary.
    </tt>
    Can be a character set problem, or a Bug.

    Number of bytes (for BLOBs) or characters (for CLOBs or NCLOBs) to write <font style="background-color: #F5A9A9">is less</font> then input buffer with data for the write.
    The maximum input buffer size is *32767* bytes.

    (Strange is that <font style="background-color: #FFFFCC">dbms_aw.advise_sparsity</font> does not handle buffer)
    DBMS_AW.advise_sparsity(    fact       IN      VARCHAR2,
                                cubename   IN      VARCHAR2,
                                dimsources IN      dbms_aw$_dimension_sources_t,
                                advmode    IN      BINARY_INTEGER DEFAULT ADVICE_DEFAULT,
                                partby     IN      BINARY_INTEGER DEFAULT PARTBY_DEFAULT,
                                advtable   IN      VARCHAR2 DEFAULT NULL);
    
    
     DESCRIBE dbms_aw$_dimension_source_t
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     DIMNAME                                            VARCHAR2(100)
     COLUMNNAME                                         VARCHAR2(100)
     SOURCEVALUE                                        VARCHAR2(32767) --("?")
     DIMTYPE                                            NUMBER(3)
     HIERCOLS                                           DBMS_AW$_COLUMNLIST_T
     PARTBY                                             NUMBER(9)
    ------------
    Edited by: stefan nebesnak on Feb 21, 2013 6:42 AM
    Pyf wrote:
    ORA-06512: in "<font style="background-color: #FFFFCC">SYS.*DBMS_AW*</font>", line 541
    You may need to open an SR.
  • 6. Re: SQL-ERROR ORA-22921 beim Ausführen von DBMS_CUBE.CRETAE_MVIEW
    992227 Newbie
    Currently Being Moderated
    Tank you for the helpfull hint.
    I will imform me about to open a ServiceRequest for this problem.

    Fredy

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points