Die Red Stack 05/2019 ist online: "Cloud Native"

  • Erstellt von DOAG online
  • RedStack

Die Ausgabe 05/2019 der Red Stack steht ab sofort zum Download bereit!

Die aktuelle Ausgabe des Red Stack Magazins behandelt das Thema Cloud-Native. Begleiten Sie uns auf die Spurensuche ihrer Entwicklung und ihrer Grundlagen. Viel Spaß beim Lesen!

Zum Download

 

  • „Das wichtigste Design-Kriterium ist die Hybrid- und Multi-Cloud-Fähigkeit, die durch die Cloud-Native-Technologien unterstützt wird." Interview mit Dr. Carlo Velten
  • Auf den Spuren der nächsten IT-Evolutionsstufe: Entwicklung und Grundlagen von Cloud Native, Benjamin Nothdurft
  • Reise in die chinesische Cloud, Jessica Steger
  • Ansible und Exadata — Eine perfekte Symbiose? Timo Giese
  • Patching Oracle — Was muss ich tun? Martin Bracher
  • SQLTXPLAIN — Helfer bei der Performance-Analyse, Stefan Seck
  • Autonomous Database, Sebastian Solbach
  • Oldies but Goldies — Teil 1, Roger Troller
  • Oracle Net 18c — Verschlüsselung ist keine Hexerei, Cornelia Heyde
  • Multitenant — Cloning von Datenbanken, Julian Frey
  • Sicheres Identifizieren von nicht relevanten Indizes, Peter Ramm
  • Eintopf und Trennkost — Datenbanken im Ereignishorizont moderner Software-Entwicklung, Daniel Nelle & Gabriel Nelle

 

Hier finden Sie im Magazin erwähnte Listings:

Roger Troller 
"Oldies but Goldies – Teil 1"

 

select DEPARTMENT_ID

         ,extract(year from HIRE_DATE) as HireYear

         ,round(avg(SALARY),2) as avgSALARY

       from EMPLOYEES

     where (DEPARTMENT_ID, trunc(HIRE_DATE,'year'))

             in (select DEPARTMENT_ID, max(trunc(HIRE_DATE,'year'))

                      from EMPLOYEES

                    group by DEPARTMENT_ID

         group by DEPARTMENT_ID

                   ,extract(year from HIRE_DATE)

         order by DEPARTMENT_ID;

 

Listing 6: Beispiel für durchschnittliche Saläre des letzten Einstellungsjahrs mit Unterabfrage
---

select DEPARTMENT_ID

       ,min(extract (year from HIRE_DATE)) AS HireYear

       ,round(avg(SALARY) keep (dense_rank last

             order by extract(year from HIRE_DATE)),2) as AvgSALARY

    from EMPLOYEES

group by DEPARTMENT_ID;


DEPARTMENT_ID             HIREYEAR           AVGSALARY

------------------------     ----------------     ------------------

                        10                   2003                   4400

                        20                   2004                   6000

                        30                   2002                   2500

                        40                   2002                   6500

...

 

Listing 7: Beispiel für durchschnittliche Saläre des letzten Einstellungsjahrs mit KEEP-LAST
---

B2Trace (P_Field || ' := to_date (''' || to_char(P_Date,

'DD.MM.YYYY') || ''', ''DD.MM.YYYY'')');

 

L_apo varchar2(20) := '''||' || '''''''''' || '||''';

 

Listing 8: User defined quote operator
---

B2Trace (P_Field || q'{ := to_date ('}' || to_char(P_Date,

'DD.MM.YYYY') || q'{', 'DD.MM.YYYY')}');

 

L_apo varchar2(20) := q'{'|| q'['']' ||'}';

 

Listing 9: User defined quote operator
---

SELECT sal

              ,comm

              ,round(sal / comm,3) AS sal_factor

   FROM emp

/

ORA-01476: divisor is equal to zero

 

Listing 10: Fehler bei Division durch 0
---

select sal

         ,comm

         ,round(case

                          ,when comm = 0 then null

                          ,else sal / comm

                     end,3) as sal_factor

    from emp

/

                       SAL         COMM SAL_FACTOR

-----------------------   -------------- ------------------

                    1600              300              5.333

                    1250              500                 2.5

                    1250            1400               .893

                    1500                  0

 

Listing 11: Division durch 0 via CASE verhindert
---

SELECT sal

         ,comm

         ,ROUND(sal / NULLIF(comm,0),2) AS sal_factor

   FROM scott.emp

/

                       SAL         COMM  SAL_FACTOR

-----------------------   -------------- ------------------

                    1600              300               5.333

                    1250              500                   2.5

                    1250            1400                 .893

                    1500                  0

 

Listing 12: NULLIF, um Division durch 0 zu verhindern
---

       if l_string is not null then

           l_string := l_string || '|';

       end if;

       l_string := l_string || l_value;

 

Listing 13: Verkettung von Strings, IF, um zu verhindern, dass der String mit einem Pipe beginnt.
---

     l_string := NULLIF(l_string || '|' , '|') || l_value;

 

Listing 14: Verkettung von Strings, NULLIF, um zu verhindern, dass der String mit einem Komma beginnt.
---