Rechercher sur arkzoyd.com

25 septembre 2011

Programmation "Event-Based"

L'article précédent présente les limites de l'utilisation de DBMS_SCHEDULER avec des évènements :
  • Les messages ne peuvent pas être traités de manière séquentielle
  • Vous pouvez perdre les messages en cas d'un crash d'instance et ceci, bien que les files d'attentes soient persistentes 
Alors comment gérer proprement des évènements dans les bases de données Oracle ? Deux options s'offrent à vous : (1) développer un daemon ou (2) vous appuyer sur un message handler Streams. La seconde méthode est bien plus simple et c'est l'option que ce nouvel article illustre à travers un exemple.

23 septembre 2011

Oracle Event-Based Scheduler n'est pas Event-Based

Ca parait sévère dit comme ça... Le fait est que, si vous envisagez de gérer des évènements de manière asynchrone dans une base Oracle, il y a de grande chance que le scheduler ne soit pas l'outils pour ça. A moins que :
  • vous n'ayez pas peur de perdre des évènements
  • vous n'ayez pas trop d'évènements
  • vous n'avez pas besoin de gèrer les évènements en série
Je ne vais pas faire de mystère, le problème est décrit avec le paramètre parallel_instances la documentation ! Pour le contourner, vous préfèrerez utiliser un message handler.

Cet article illustre, à travers un exemple simple comment mettre en oeuvre le scheduler avec des évènements et les limites de ce type d'approche

22 septembre 2011

Pourquoi Oracle Database Appliance n'a rien à voir avec Exadata ?

A force d'entendre parler de "mini-exadata", beaucoup s'attendaient à voir apparaître... un mini-exadata ? Oracle Database Appliance (ODA) est une appliance d'une toute autre nature. Pas sur que tout le monde l'ai bien compris. Cet article revient sur l'annonce et ce qui pourrait changer.

Une configuration sympa, mais...

21 septembre 2011

Pythian is breaking the rules !

J'adore cet état d'esprit !!!!!! Migrer une base Oracle de 10 To de 9i AIX à Exadata X2-2 pour moins de 15k€ au cours du jour pour un tarif fixe et avec moins de 4 heures d'indisponiblité, c'est juste ENORME... Faites votre quotation en ligne.


Vous allez pouvoir challenger vos fournisseurs. J'entends bien quand @alexgorbachev "The devil is in the details" ! N'empêche, ça remet bien les choses à leur place. Tant pis si ça ne plait pas à tout le monde

#Pythian, I wish all the best to your top performers !

17 septembre 2011

Référencer les tables d'une requêtes dans vos hints

Lorsqu'une requête inclut des sous-requêtes, il n'est pas toujours simple de référencer les tables associées dans des hints ; cet article illustre, grâce à quelques exemples simples, comment faciliter ces références :
  • grâce à des hints au niveau de chaque bloc
  • à l'aide du hint QB_NAME
  • en s'appuyant sur le nommage automatique des blocs d'une requête
Evidemment chaque méthode à ses avantages et ses limites...
Remarque :
Cet article n'est en aucun cas un encouragement à mettre des hints dans vos requêtes...

08 septembre 2011

Exadata et SAP : c'est hot !

Si vous utilisez SAP et que vous êtes, pour de bonnes ou de mauvaises raisons >:), intéressé par les technologies Oracle et en particulier Exadata, le sujet a rarement été aussi chaud :

04 septembre 2011

2x plus rapide à 100% de charge

J'aime mon laptop. Pas cher, facile à remplacer, un peu de RAM, Linux, quad-cores, 64 bits. Bref, il me permet de simuler beaucoup de comportements des serveurs et j'ai 5 navigateurs web différents sans compter wget et curl...

Alors quand, pour un bête test de montée en charge, j'obtiens la courbe en rouge ci-dessous, j'avoue que je reste perplexe


Par quel miracle, est-il 2x plus rapide à 100% de charge qu'à 50% ?

01 septembre 2011

Range Partitioning Multi-Colonnes vs Multi-Niveau

Il ne faut confondre Range Partitioning multi-colonnes et Range-Range Partitioning. Outre la syntaxe, le modèle de partitionnement est très différent. Vous pourrez, dans certains cas, avoir le choix entre l'une et l'autre des implémentations mais ce n'est pas parce qu'on peut utiliser des clous et de la colle pour accrocher un tableau au mur que c'est la même chose...

Cet article présente ces 2 exemples de partitioning Range. Dans un premier temps, ils semblent identiques mais à y regarder de plus prêt et avec à l'aide d'un graphique, vous découvrirez qu'ils sont très différents

Range Partitioning et Null

Hors contexte, cet article n'a pas beaucoup de sens ! Pourquoi utiliser la valeur NULL dans une clé de partitionnement ? Evidemment, il ne s'agit pas d'encourager qui que ce soit à ce genre de pratiques ; ou au moins, il ne s'agit pas de l'encourager, plus que ça.

Oracle n'interdit pas d'utiliser NULL dans une clé de partitionnement. Et comme ça n'est pas interdit, attendez-vous à ce que ce soit utilisé. En fait, il y a au moins 2 bonnes raisons à cette utilisation auxquelles je peux penser :
  • Une erreur
  • L'utilisation de clés multi-colonnes comme clé de partitionnement ; j'en reparlerai bientôt
Cet article illustre comment gérer une table partitionnée avec des clés de partitionnement NULL.