Materialized View aktualisiert sich nicht

Steve6

Aktiver Benutzer
Beiträge
26
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
 
Werbung:
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?
 
Hallo,

die Benamung der Spalten kommt nicht von mir. Das kann ich leider nicht ändern.
Komisch kommt mir auch dies vor: "TO_NUMBER(a.FELD3|| '' ||a.FELD1)"? Was tust Du da?
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
 
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.
 
@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?
 
Werbung:
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)
 
Zurück
Oben