Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Materialized View aktualisiert sich nicht

Dieses Thema im Forum "Oracle" wurde erstellt von Steve6, 22 April 2016.

  1. Steve6

    Steve6 Aktiver Benutzer

    Hallo Forum,

    ich habe einer MV erstellt, die sich regelmäßig aktualisieren soll. zuerst die MVIEW:

    Code:
    CREATE MATERIALIZED VIEW MV_V_DATEN
    REFRESH FORCE ON DEMAND WITH ROWID
    START WITH SYSDATE NEXT SYSDATE + interval '5' minute
    as
    
    select
    
    a.ROWID as ID,
    a.FELD6,
    b.FELD4 as FIELD4,
    TO_NUMBER(a.FELD3|| '' ||a.FELD1)  as FID,
    a.FELD3|| '-' ||a.FELD1  as Akten,
    TO_DATE(replace(a.FELD4, '          ', '1111.11.11'), 'yyyy-mm-dd') AS Intern,
    TO_DATE(replace(b.FELD7, '          ', '1111.11.11'), 'yyyy-mm-dd') AS Extern,
    SDO_GEOMETRY(2001, 25832, sdo_point_type(to_number(substr(a.FELD12, 1, 10)),to_number(substr(a.FELD12, 14, 11)),null), null, null) geom,
    a.FELD14, a.FELD15, a.FELD16, a.FELD17
    
    FROM DATA@DBLINK a LEFT JOIN DATA2@DBLINK b
    
    ON (b.FELD3|| '' ||b.FELD1|| '' ||b.FELD4) = (a.FELD3|| '' ||a.FELD1|| '' ||2060)
    
    WHERE (a.FELD12 like '3%' OR a.FELD12 like '4%')
    
    AND (a.FELD6 <> 1
      AND a.FELD6 <> 4
      AND a.FELD6 <> 10
      AND a.FELD6 <> 15
      AND a.FELD6 <> 16
      AND a.FELD6 <> 18
      AND a.FELD6 <> 19
      AND a.FELD6 <> 21
      AND a.FELD6 <> 35
      AND a.FELD6 <> 38
      AND a.FELD6 <> 45
      AND a.FELD6 <> 80
      AND a.FELD6 <> 95);
    
    Dann füge ich die MV in die USER_SDO_GEOM_METADATA ein, damit diese in einem WEB-GIS sichtbar wird.:

    Code:
    INSERT INTO user_sdo_geom_metadata VALUES
    ('MV_V_DATEN',   
    'GEOM',
    SDO_DIM_ARRAY
    (SDO_DIM_ELEMENT ('X',-10,10000000, 0.0005),
    SDO_DIM_ELEMENT ('Y',-10,10000000, 0.0005)),25832);
    
    Zuletzt gibt es noch einen Spatial-Index, ebenfalls für das WEB-GIS:

    Code:
    CREATE INDEX MV_V_DATEN_idx
    ON MV_V_DATEN (GEOM)
    INDEXTYPE IS MDSYS.SPATIAL_INDEX;
    
    Meine Fragen dazu:

    Wie kann ich feststellen, ob sich die MV auch regelmäßig aktualsiert? Ich habe das Problem, dass die Daten für die MV nicht täglich aktualisiert werden. Wir stellen aber irgendwann fest, dass die MV sich nicht mehr aktualisiert. am Tag der Erstellung geht noch alles gut, danach aber nicht mehr. Was passiert hier?
    Der 5-Minuten Intervall ist nur testweise. Normal soll sich die MV täglich aktualisieren.

    Wie kann ich hier etwas analysieren? Kann man den Zeitpunkt der letzten Änderung feststellen? Ab wann schläft die MV ein? Grübel....

    Gruß Steve
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Auf Deine Ora-spezifischen Probleme kann ich Dir nicht antworten (höchstens mit dem Hinweis auf PostgreSQL, wo matViews ja auch verfügbar sind und nach meinem Wissen stabil und robust funktionieren), aber was mir auffällt ist die Benamung Deiner Spalten - diese ist suboptimal. FIELDX mit X fortlaufend ...

    Komisch kommt mir auch dies vor: "TO_NUMBER(a.FELD3|| '' ||a.FELD1)"? Was tust Du da?
     
  3. unficyp

    unficyp Fleissiger Benutzer

    was steht im alert.log ?
     
  4. Steve6

    Steve6 Aktiver Benutzer

    Hallo,

    die Benamung der Spalten kommt nicht von mir. Das kann ich leider nicht ändern.
    Ich verkette die Felder FELD3 und FELD1 und mache daraus eine NUMBER.

    Auszüge aus der Alert.log. Ich vermut es liegt an der Sicherung der Datenbank. Diese wird Nachts dafür gestoppt. Sicher bin ich mir aber nicht.

    Code:
    Fatal NI connect error 12518, connecting to:
    (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.15)(PORT=1521)))(CONNECT_DATA=(SID=DB1)(SERVER=DEDICATED)(CID=(PROGRAM=d:\app\administrator\product\11.2.0\dbhome_1\bin\ORACLE.EXE)(HOST=SERVER79)(USER=SYSTEM))))
    
      VERSION INFORMATION:
        TNS for 64-bit Windows: Version 11.2.0.4.0 - Production
        Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 11.2.0.4.0 - Production
      Time: 23-APR-2016 00:13:39
      Tracing not turned on.
      Tns error struct:
        ns main err code: 12564
      
    TNS-12564: TNS: Verbindung verweigert
        ns secondary err code: 0
        nt main err code: 0
        nt secondary err code: 0
        nt OS err code: 0
    
    
    ***********************************************************************
    Code:
    Fatal NI connect error 12518, connecting to:
    (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.15)(PORT=1521)))(CONNECT_DATA=(SID=DB1)(SERVER=DEDICATED)(CID=(PROGRAM=d:\app\administrator\product\11.2.0\dbhome_1\bin\ORACLE.EXE)(HOST=SERVER79)(USER=SYSTEM))))
    
      VERSION INFORMATION:
        TNS for 64-bit Windows: Version 11.2.0.4.0 - Production
        Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 11.2.0.4.0 - Production
      Time: 23-APR-2016 00:13:39
      Tracing not turned on.
      Tns error struct:
        ns main err code: 12564
      
    TNS-12564: TNS: Verbindung verweigert
        ns secondary err code: 0
        nt main err code: 0
        nt secondary err code: 0
        nt OS err code: 0
    Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\79\79\trace\79_j000_5684.trc  (incident=13712429):
    ORA-00600: Interner Fehlercode, Argumente: [qcsprfro_tree:jrs present], [0x01EAF3718], [], [], [], [], [], [], [], [], [], []
    Incident details in: D:\APP\ADMINISTRATOR\diag\rdbms\79\79\incident\incdir_13712429\79_j000_5684_i13712429.trc
    Use ADRCI or Support Workbench to package the incident.
    See Note 411.1 at My Oracle Support for error and packaging details.
    Errors in file D:\APP\ADMINISTRATOR\diag\rdbms\79\79\trace\79_j000_5684.trc:
    ORA-12012: Fehler beim autom Ausführen von Job 406
    ORA-12008: Fehler in Refresh-Pfad von Materialized View
    ORA-00600: Interner Fehlercode, Argumente: [qcsprfro_tree:jrs present], [0x01EAF3718], [], [], [], [], [], [], [], [], [], []
    ORA-06512: in "SYS.DBMS_SNAPSHOT", Zeile 2809
    ORA-06512: in "SYS.DBMS_SNAPSHOT", Zeile 3025
    ORA-06512: in "SYS.DBMS_IREFRESH", Zeile 689
    ORA-06512: in "SYS.DBMS_REFRESH", Zeile 195
    ORA-06512: in Zeile 1
    Sat Apr 23 00:13:40 2016
    Dumping diagnostic data in directory=[cdmp_20160423001340], requested by (instance=1, osid=5684 (J000)), summary=[incident=13712429].
    Sat Apr 23 00:13:42 2016
    Gruß, Steve
     
  5. unficyp

    unficyp Fleissiger Benutzer

    Schaut aus als ob der db link in der mview nicht funktioniert, deswegen der TNS-12564.
    Check mal User/Pass bzw den Connect Identifier in der DB Link Definition.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Also z.B. die Zahl Pi mit 3.14 würde dann als 2 Strings gespeichert sein, z.B. '3' und '.14' oder auch '3.1' und '4'.

    Ich sag mal ganz vorsichtig: sehr interessant...
     
  7. Steve6

    Steve6 Aktiver Benutzer

    @unficyp
    Der DB-Link funktioniert. Zumindest bis sich die MV nicht mehr aktualisiert. Aber warum der Link dann nicht mehr funktioniert...das ist die Frage.

    @akretschmer
    Die Zahl Pi kommt aber nicht darin vor. Auch keine anderweitigen Sonderzeichen oder Buchstaben. Es sind ganzstellige Zahlen.
    Gibt es alternativ Verbesserungsvorschläge?
     
  8. unficyp

    unficyp Fleissiger Benutzer

    select mview_name,staleness,last_refresh_date,stale_since,compile_state from user_mviews;
    gibt Auskunft über alle User MVIEWS.

    was ich nicht verstehe:
    "Ich vermut es liegt an der Sicherung der Datenbank. Diese wird Nachts dafür gestoppt. Sicher bin ich mir aber nicht."

    Die Datenbank, auf die DBLINK zeigt, wird wegen der Sicherung abgedreht ?
    Dann wundert es mich nicht wenn die MVIEW nicht refresht und stale wird.

    (BTW: Produktionsdatenbank ? Schlechte Idee. Sollte im archive Log Modus laufen und per RMAN gesichert werden)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden