Workaround: Unpivot mit ORA-00942 oder ORA-00904

Ausgangslage

Kürzlich trat ein Problem mit einem UNPIVOT Operator in der Entwicklung einer Statistik-Abfrage auf

Select [...]
 from VIEW1 unpivot(val for year in ([...]);
ORA-00942: table of view does not exist

Die Abfrage wurde im gleichen Schema ausgeführt wo auch der View sein sollte. Folgendes Select funktionierte zum Beispiel problemlos:

select * from VIEW1;

Lösung

Eine Recherche ergab anfangs wenig Lösung. Die üblichen Lösungsvorschläge bezogen sich auf Problem mit Arbeiten in unterschiedlichen Schemas oder über Datenbank-Links. Da die Tabelle aber grundsätzlich als vorhanden erkannt wurde musste der Grund woanders liegen. Im Oracle Support habe ich die Lösung gefunden, im Dokument Doc ID 22339954.8.

Laut diesem Dokument handelt es sich hierbei um einen Bug in potentiell allen Datenbankversionen vor 12.2.0.1. Laut diesem Dokument gibt es keinen Workaround. Das Problem kann ich außerdem in langen Laufzeiten äußern selbst wenn keine Fehler auftreten. Die Probleme treten lt. Dokument auf wenn eine Abfrage eine UNPIVOT Operation auf Views mit mehrfachen verschachtelten Abfrageblöcken und/oder einer großen Anzahl von Tabellen macht.

Wir haben einen Workaround gefunden der in unserem Fall das Problem recht leicht und zufriedenstellend gelöst hat:

with base as (select /*+ materialize */ * from VIEW1)
Select [...]
from base unpivot(val for year in ([...]);
Solaris 11next

Solaris 11.next – lang lebe Solaris!

Speziell zum Jahresanfang gab es viele Gerüchte bzw. Internet „Rumors“ rund um das Oracle Solaris Betriebssystem. Im Zuge des Jahreswechsels hat Oracle angekündigt keine Solaris 12 Version in den Markt zu bringen, wie die eigentlichen Präsentationen vermuten ließen, sondern vielmehr die Solaris 11 Release in den bekannten Minor Versionen weiter laufen zu lassen.

Oracle hat diesen Schritt leider etwas ungeschickt kommuniziert, da natürlich die gängige „Message“ verstanden wurde, dass Oracle kein Interesse an einer neuen Solaris Release habe. Doch das Gegenteil ist der Fall; als spezialisierter Solaris Partner darf ich meine Meinung und Interpretation dazu kundtun…

Platinum Partner - Specialized Oracle Solaris 11

Solaris 11.next

Als langjähriger und treuer Solaris Fan sehe ich diesen Zug als eine logische Konsequenz und schon fast marktkonform…

Als die neue Oracle/Sun UNIX Version Ende 2011 offiziell verfügbar war, wurde sehr viel Zeit und Energie in die Einführung von Solaris 11 gesteckt. Viele Teile des Derivats wurden gegen aktuellste Technologien getauscht und das teilweise schon verstaubte Solaris 10 User-Land durch den Einsatz von GNU Tools rundum erneuert. Ein komplett neues Paket Management, neue Security- und Virtualisierungs-Möglichkeiten und eine tiefe Integration aller systemnahmen Dienste in das Solaris SMF (service management facility) ließen schon fast den Glauben ein ganz neues Betriebssystem unter den Fingern zu haben.

Zu der Zeit wurden unzählige ISVs und andere Hersteller angehalten, Ihre Software für den Betrieb unter Solaris 11 zu re-zertifizieren und das neue UNIX Environment zu unterstützen. Dieser Umstieg dauerte lange und hatte auch zur Folge, dass einige den traditionellen UNIX Pfad verließen und „nur“ noch auf Linux setzten. Mittlerweile ist die Liste der Zertifizierungen wieder beachtlich und viele Software-Häuser haben den Weg zurück auf das Enterprise OS gefunden:

Applications Certified on Oracle Solaris 11 >>

SPARC/Solaris Roadmap

Oracle stellt mit Jänner 2017 eine neue public Roadmap vor, die noch viele Neuerungen und spannende Features verspricht, sowohl für die Architektur als auch für das Betriebssystem:

Oracle SPARC/Solaris Platform Roadmap >>

Aktuell befindet sich Solaris in der Release 11.3 mit regelmäßigen Updates, welche für Sicherheit und Stabilität sorgen.
Viele neue Features wurden in den unterschiedlichen Solaris 11 & 11.1.-11.3 Versionen eingearbeitet.

What’s new in Solaris 11.3

Next?

Die Überlegung die Version als Minor Releases fort zu führen und trotzdem von allen neuen „Major“ Errungenschaften zu profitieren ist wohl mehr ein Marketing Grund als ein technischer. Viele Zertifizierungen schreiben zum Beispiel eine Version als „Solaris 11.2 or newer“ vor. Haben wir in Zukunft eine Solaris 11.4 nach dem .next Prinzip, von Oracle als „Continuous Delivery Model“ bezeichnet, gilt diese Aussage natürlich weiterhin. Nicht aber so bei einem Wechsel auf eine neue Major Release wie es der 12er Ansatz war.

Aus internen Diskussionen heraus war auch der offene Punkt der Solaris Support Repository Updates (SRU), welche die Updates innerhalb der Major/Minor Versionen bezeichnen. Ein Beispiel wäre für Solaris 11.3 die Version 11.3.16.0.3.0, welche auf „Build“ und „Branch“ hindeutet. Wäre Solaris 11 als Release parallel gelaufen oder ein mögliches 12er im Image Packaging System (IPS) der direkte Nachfolger einer „final“ 11er Release? Eine spannende Frage; wirtschaftlich macht es ja nur bedingt Sinn mehrere Releases zu führen und alle Patches immer „backboard’ten“. Technisch verkompliziert es das SRU Prinzip und das Single-Repository, wie es aktuell mit allen Updates für 11 angeboten wird. Vor allem da mittels IPS die nächste Release ja nur einen Befehl entfernt wäre:

# pkg update

17 weitere Jahre fix!!

Um die Angst und die bösen Worte der Marktbegleiter die Kraft zu nehmen, hat Oracle im selben Atemzug den generellen Premier Support von Solaris 11 und des Solaris Cluster 4 bis 2031, respektive mit Extended Support bis 2034, stand heute angekündigt.
Oracle unterstreicht hier die Wichtigkeit und Anerkennung innerhalb des Unternehmens und positioniert Solaris und SPARC wörtlich als „the enterprise leader in security, scalability, and reliability for mission critical computing and continues to deliver tremendous business value for customers in both cloud and on-premise deployments. “

Shakeout?

Auch andere Hersteller springen auf diesen Zug auf und ergeben sich dem Release Kampf.
Microsoft selbst hat Windows 10 als „last version of Windows“ bezeichnet. Und das Windows 98 aufgrund des Namens nicht zwangsweise zehn mal so viele Features haben muss als Windows 10, wissen wir ja. 🙂

Als etwas älteres HP Beispiel gab es HP-UX seit dem Jahr 1997 bereits als Version 11.00 als Hewlett Packard Unix. 😉

Zu guter Letzt möchte ich noch auf das offizielle Statement von Oracle hinweisen, in Person von John Fowler, Executive Vice President, Systems, ein langjähriger Prediger von Solaris und SPARC:

Gerne unterstützen ich Sie persönlich Ihre bestehende Solaris Landschaft auf aktuellste Technologien zu portieren und von den neuesten Funktionen und der beeindruckenden Performance der neuen SPARC CPUs zu profitieren.

Wir begleiten gerne einen maßgescheiderten PoC und freuen uns Ihnen mit unserer Demo Hardware die Oracle Technologien näher zu bringen.

NO RISC, NO FUN!

Problem und Lösung mit Klick auf URL in Outlook 2010 unter Win10

Ich hatte nach dem Umstieg auf Windows 10 das Problem, dass ich keine URLs aus Outlook 2010 mehr öffnen konnte. Ich bekam immer folgende Fehlermeldung:

Fehlermeldung Outlook 2010 bei Klick auf URL

Nachdem mir unsere Admins versichert haben, dass es hier keine Gruppenrichtlinie gibt, die das verhindert, musste ich mich auf die Suche nach einer Lösung machen.

Ein bisschen googeln und man findet folgenden Artikel:

https://support.microsoft.com/de-de/help/310049/hyperlinks-are-not-working-in-outlook

Dieser Artikel ist schon sehr lösungsschwanger, aber:

Es gibt zwar einen Button im KB Artikel zu einem Fixit Tool für Windows 10, 8.1 und 8, aber der führt nur zu der allgemeinen Beschreibung, wie man ein FixIt Tool benutzt. Das Fixit Tool für Windows 7 oder früher lässt sich nicht unter Windows 10 ausführen.

Na gut, es gibt ja auch eine Beschreibung, wie das manuell erledigt werden kann, aber:

Methode 1: Zurücksetzen der Internet Explorer-Einstellungen

Problem: Es gibt keinen Internet Explorer in Windows 10!

Methode 2: Exportieren des Registrierungsschlüssels von einem anderen Computer

Tja, keinen im Zugriff. Was jetzt?

Nach längerem Recherchieren kam ich auf folgende Lösung:

  1. Registrierungseditor öffnen (regedit.exe)
  2. Zu folgenden Schlüssel navigieren: HKEY_LOCAL_MACHINE\htmlfile\shell
  3. An dieser Stelle folgende Unterschlüssel erstellen (falls nicht vorhanden – was wahrscheinlich der Fall ist, weil sonst das Problem ja nicht auftreten würde): \open\command
  4. Hier unter „(Standard)“ oder „(Default)“ folgendes eintragen:
    „%systemroot%\system32\rundll32.exe“ „%systemroot%\system32\url.dll“,FileProtocolHandler „%1“

So sollte es im Registrierungseditor schlussendlich aussehen:

Registrierungseditor mit korrekten Key Eintrag

Jetzt Outlook neu starten.
Ich kann natürlich nicht versprechen, dass diese Lösung bei jedem funktioniert, aber bei mir tat es das.

Ich hätte mich gefreut, wenn ich diese Lösung früher gefunden hätte. Es gibt zwar ein paar Artikel, die diese Lösung fast vorschlagen, allerdings unter folgenden Registrierungsschlüssel:

HKEY_LOCAL_MACHINE\htmlfile\shell\opennew\command

Bei mir hat es aber nur unter HKEY_LOCAL_MACHINE\htmlfile\shell\open\command  funktioniert.