*** 2011-04-30 07:34:18.590
DEADLOCK DETECTED ( ORA-00060 )
[Transaction Deadlock]
The following deadlock is not an ORACLE error. It is a
deadlock due to user error in the design of an application
or from issuing incorrect ad-hoc SQL. The following
information may aid in determining the deadlock:
Deadlock graph:
---------Blocker(s)-------- ---------Waiter(s)---------
Resource Name process session holds waits process session holds waits
TX-00070021-0000022c 33 154 X 33 154 S
session 154: DID 0001-0021-00000011 session 154: DID 0001-0021-00000011
Rows waited on:
Session 154: no rowRemarquez qu'avec tout ce qui m'arrive en ce moment, c'est un vrai bonheur de constater qu'Oracle s'en sort sans une égratignure. Je vais vous expliquer le fin mot de l'histoire...30 avril 2011
Verrouille toi à mort moi-même
J'ai rencontré une situation assez unique (quoique!) dans laquelle un programme arrive à générer un deadlock Oracle avec une seule session. Voici l'extrait de la trace du process incriminé :
Labels:
antipattern,
database,
oracle
Links to this post
29 avril 2011
Gérer un Error Handler et un DML Handler simultanément dans Streams
Un processus d'apply Streams ne peut contenir qu'un seul handler par table/type de commande. "DML apply" ou "Error", il faut donc choisir !
Seulement voilà, il se peut que vous vouliez à la fois gérer un DML et un Error Handler simultanément. Comment faire alors ? C'est la question qu'explore l'article ci-dessous ; vous y trouverez comment utiliser les 2 types de handlers et comment les combiner ; vous verrez également comment réaliser les tests associés :
Seulement voilà, il se peut que vous vouliez à la fois gérer un DML et un Error Handler simultanément. Comment faire alors ? C'est la question qu'explore l'article ci-dessous ; vous y trouverez comment utiliser les 2 types de handlers et comment les combiner ; vous verrez également comment réaliser les tests associés :
Labels:
database,
oracle,
streams
Links to this post
28 avril 2011
Auditez les options utilisées sur vos bases de données
La conformité aux contrats de licences est un enjeu important pour les entreprises et fait généralement partie des responsabilités des DBA. Les risques encourus peuvent aller jusqu'à plusieurs centaines de milliers d'euros si, par exemple, vous utilisez des options ou des éditions auxquelles vous n'avez pas droit. Depuis Oracle 10g, la vue
Si vous êtes du genre à vous reposer sur le travail des autres comme moi, sachez qu'Oracle offre des rapports pré-construits
DBA_FEATURE_USAGE_STATISTICS peut vous aider à déterminer ce que vous utilisez. Evidemment, ce n'est pas parfait ; on peut observer quelques dysfonctionnements notamment avec Active Data Guard. Si vous êtes du genre à vous reposer sur le travail des autres comme moi, sachez qu'Oracle offre des rapports pré-construits
Labels:
database,
oracle
Links to this post
Blogs, rapports et SQL*Plus
Si vous écrivez des articles sur un blog ou des rapports dans lesquels vous copiez les sorties SQL texte de SQL*Plus que vous affichez avec des polices non proportionnelles, vous avez sans doute parfois des problèmes. La faute à l'équivalence entre les tabulations et les espaces qui peut dépendre d'un logiciel à l'autre quand elle n'est pas paramètrable...
Après 15 ans d'Oracle, je viens de trouver la solution avec la commande SQL*Plus suivante ; on passe tout en espace :
Après 15 ans d'Oracle, je viens de trouver la solution avec la commande SQL*Plus suivante ; on passe tout en espace :
set tab offComme quoi, il n'y a pas d'age pour apprendre des trucs qui sont du B.A-BA ; et voilà, c'est dans le fichier
glogin.sql du répertoire $ORACLE_HOME/sqlplus/admin
Labels:
database,
oracle
Links to this post
Contraintes référentielles, plans d'exécution et clause RELY
Les contraintes référentielles assurent la cohérence des données. Si le bénéfice est évident pour prévenir des erreurs des applications, les développeurs ont beau jeu d'expliquer, aujourd'hui, que ce n'est pas un problème pour eux ; la logique métier assure cette cohérence de manière bien plus riche encore...
Et pourtant, les plans d'exécution et donc les performances sont impactées par les contraintes, y compris les contraintes référentielles. Vous fournissez des informations à Oracle sur les relations qui existent entre les données, il en tire parti. Il en paie également le prix s'il doit valider cette cohérence...
Cet article illustre ces points à travers un exemple simple dans la perspective des systèmes transactionnels. Il montre également comment éviter qu'Oracle paie le prix de la validation avec la clause
Et pourtant, les plans d'exécution et donc les performances sont impactées par les contraintes, y compris les contraintes référentielles. Vous fournissez des informations à Oracle sur les relations qui existent entre les données, il en tire parti. Il en paie également le prix s'il doit valider cette cohérence...
Cet article illustre ces points à travers un exemple simple dans la perspective des systèmes transactionnels. Il montre également comment éviter qu'Oracle paie le prix de la validation avec la clause
RELY DISABLE. Vous découvrirez enfin qu'un produit cartésien peut parfois avoir un coût de 0 ; étonnant ?Dans le contexte des systèmes décisionnels, les perspectives sont très différentes. L'article précédent intitulé Mon petit Data Mart (Partie 4) : Clés étrangères et Query Rewrite discutait déjà de ce sujet avec un exemple mettant en oeuvre une vue matérialisée. Cela étant, la nature des développements est très différente. La logique objet et la modèlisation des systèmes transactionnels également.
Labels:
database,
sql
Links to this post
25 avril 2011
Schéma LDAP Oracle, alias TNS et Novell eDirectory
Le schéma fournit par Oracle avec Oracle Virtual Directory 11.1.1.4 ne permet pas de stocker les alias TNS dans l'annuaire de Novell. La faute au fichier
Pour corriger ce problème et vous permettre de stocker vos alias TNS avec vos utilisateurs d'Entreprise via EUS, j'ai créé un fichier LDIF qui contient les clauses
eDirSchema.ldif qui en plus de contenir des erreurs de syntaxe est incomplet quant aux classes qui peuvent contenir orclNetService, orclNetDescription, orclNetAddressList et orclNetAddress.Pour corriger ce problème et vous permettre de stocker vos alias TNS avec vos utilisateurs d'Entreprise via EUS, j'ai créé un fichier LDIF qui contient les clauses
X-NDS_CONTAINMENT compatibles avec vos besoins. Certaines fonctionnalités pourraient encore être limitées mais au moins ça fonctionne...
Labels:
database,
oracle,
securite
Links to this post
23 avril 2011
Quoi de neuf à propos d'Oracle et d'Amazon EC2 ?
Oracle et Amazon ont fait "le buzz" à propos d'EC2 et de la base de données leader du marché, la semaine dernière. Jean-Philippe se délecte évidemment et ne manque pas de le souligner sur son blog en référençant notamment l'article de International Business Times.
Mais qu'est-ce qui a changé ? Et bien, en fait et concrètement, rien pour l'instant... sinon une annonce sur le site d'Amazon que quelquechose sera disponible pendant le second trimestre 2011... Et tout tient dans 1 paragraphes qu'on peut réduire encore à ça :
Mais qu'est-ce qui a changé ? Et bien, en fait et concrètement, rien pour l'instant... sinon une annonce sur le site d'Amazon que quelquechose sera disponible pendant le second trimestre 2011... Et tout tient dans 1 paragraphes qu'on peut réduire encore à ça :
Oracle Database 11g available via the Amazon Relational Database Service (Amazon RDS) [...] you’ll be able to take advantage of on-demand hourly licensing with no upfront fees or long-term commitments.Ou, en 7 mots et en français, "Payez vos licences Oracle à l'heure !". Bon, il y en a surement 1 ou 2 qui diront que c'est déjà possible à 19 950 USD/Processeur pour la 1ère heure. Il n'empêche que, par exemple pour des tirs de performances, ça sera peut-être ultra-intéressant (ou pas, on verra !).
Labels:
amazon,
database,
oracle
Links to this post
Installer Glassfish en mode silencieux
Installer Glassfish en mode silencieux est d'une simplicité enfantine. La procédure décrite dans la documentation permet de faciliter vos déploiements "en masse", sur des serveurs distants ou sur lesquels, ça arrive, les bibliothèques clientes X ne sont pas installées ; dans cet article, vous trouverez une illustration de la mise en oeuvre de cette installation, juste pour démystifier.
Puisque je reprends ma liberté, voici au passage une petite citation bienvenue que m'a fait un copain à moitié anglais qui est plutôt un caviar (la citation aussi mais je parle bien du copain !!!) :
Puisque je reprends ma liberté, voici au passage une petite citation bienvenue que m'a fait un copain à moitié anglais qui est plutôt un caviar (la citation aussi mais je parle bien du copain !!!) :
If you pay peanuts, you get monkeysMais revenons au sujet principal de cet article...
Labels:
glassfish,
oracle
Links to this post
Recherche d'ordres SQL "factorisables" dans Oracle
Juste un rapide commentaire pour indiquer une colonne très utile sur les environnements transactionnels avec le paramètre
cursor_sharing=EXACT. Si vous cherchez à détecter des requêtes qui s'éxécuteraient de manière très fréquente avec des valeurs litérales plutôt qu'avec des variables bind, regardez la colonne FORCE_MATCHING_SIGNATURE de la vue V$SQL ; voici une petite démonstration :
Labels:
database,
oracle
Links to this post
20 avril 2011
Authentification SYSDBA via les Enterprise Users
Vos bases de données sont soumises à de nouvelles contraintes. D'un côté, l'ouverture de plus en plus grande du fait de la multiplication des intervenants ; les partenaires deviennent externaliseurs, outsourceurs, offshore et font eux-mêmes appels aux externaliseurs, outsourceurs ou offshore ; tout le monde rêve de mettre sa tête dans le cloud. De l'autre, le champ des responsabilités et conformité s'étend avec la nécessité de plus en plus importante de protéger ses informations et de détecter les comportements déviants.
Administrateurs et développeurs continuent de s'authentifier
"Breaking News" : Enterprise User Security implémente désormais toute cette fonctionnalité. En effet, la solution est (enfin!) compatible avec les drivers JDBC thin à venir dans quelques semaines pour 10g/11g et également les connexions SYSDBA. Ceci, quel que soit l'annuaire d'entreprise que vous utilisez : Active Directory, Sun/Oracle Directory Server ou Novell eDirectory ! Autrement dit : 98% des cas d'authentification avec un utilisateur et un mot de passe permettent désormais de faire le lien avec utilisateur physique, ce qui est bien la fondation pour le reste des mécanismes de sécurité. J'ai eu l'occasion de tester tous ces cas et... ça marche au delà des espérences
Administrateurs et développeurs continuent de s'authentifier
"... as sysdba" ou "apps/apps..." rendant inutiles firewalls, chiffrement ou toutes les politiques d'autorisation ou d'audit que les équipes de sécurité tentent en vain de mettre en place depuis des années sur les bases de données ; il faut dire que c'est un peu compliqué, incapable qu'ils sont de faire le lien entre ce qui est fait et qui le fait. Sauf bien sur si vous utilisez une infrastructure à clé publique."Breaking News" : Enterprise User Security implémente désormais toute cette fonctionnalité. En effet, la solution est (enfin!) compatible avec les drivers JDBC thin à venir dans quelques semaines pour 10g/11g et également les connexions SYSDBA. Ceci, quel que soit l'annuaire d'entreprise que vous utilisez : Active Directory, Sun/Oracle Directory Server ou Novell eDirectory ! Autrement dit : 98% des cas d'authentification avec un utilisateur et un mot de passe permettent désormais de faire le lien avec utilisateur physique, ce qui est bien la fondation pour le reste des mécanismes de sécurité. J'ai eu l'occasion de tester tous ces cas et... ça marche au delà des espérences
Labels:
11gR2,
database,
oracle,
securite
Links to this post
11 avril 2011
Oracle Real-Time SQL Monitoring en Flash depuis SQL*Plus
Real-Time SQL Monitoring est une des fonctionnalités les plus Rock'N Roll de Oracle 11g. En 11.2, la fonction
Dans cet article, vous trouverez un exemple simple qui illustre l'utilisation de Real-Time SQL Monitoring d'abord en mode "Text" puis en mode "Flash". Quel Intérêt ? Disons que, si vous travaillez avec des développeurs, des développeuses ou des fonctionnels Business Intelligence, vous pourrez leur en mettre plein les yeux. Et à part ça ? Rien de plus que vous ne pourrez pas faire avec le mode "Texte", certes...
dbms_sqltune.report_sql_monitor permet très simplement d'utiliser l'outil sans avoir à écrire de requête sur v$SQL_PLAN_MONITOR; mais savez-vous qu'il est possible de créer un rapport qui inclut la plug-in Flash depuis cette même fonction ? Et qu'il n'est pas nécessaire d'installer Enterprise Manager, ni Grid Control, ni Database Console ?Dans cet article, vous trouverez un exemple simple qui illustre l'utilisation de Real-Time SQL Monitoring d'abord en mode "Text" puis en mode "Flash". Quel Intérêt ? Disons que, si vous travaillez avec des développeurs, des développeuses ou des fonctionnels Business Intelligence, vous pourrez leur en mettre plein les yeux. Et à part ça ? Rien de plus que vous ne pourrez pas faire avec le mode "Texte", certes...
Labels:
11gR2,
database,
oracle,
sql
Links to this post
10 avril 2011
Oracle 11.2.0.2 et la détection automatique de colonnes corrélées
Oracle 11g a introduit la notion de statistiques étendues. Il est ainsi possible de stocker des informations de distribution de résultats de fonctions ou de corrélation entre colonnes. L'idée sous-jascente est de fournir au CBO toujours plus d'informations statistiques. De cette manière, il peut les prendre en compte dans son modèle et améliorer ses choix.
Dans cet article, vous trouverez un exemple simple qui illustrer cette fonctionnalité mais également comment Oracle 11.2.0.2 offre une nouvelle fonction pour détecter automatiquement les statistiques étendues qu'il serait pertinent de collecter.
Dans cet article, vous trouverez un exemple simple qui illustrer cette fonctionnalité mais également comment Oracle 11.2.0.2 offre une nouvelle fonction pour détecter automatiquement les statistiques étendues qu'il serait pertinent de collecter.
Labels:
11gR2,
database,
sql
Links to this post
Oracle optimizer_dynamic_sampling vs statistiques InnoDB
Les statistiques générées par InnoDB utilisent une méthode d'échantillonage comme on peut facilement le mettre en évidence en regardant le nombre de lignes d'une table dont la taille des lignes est mal distribuée... C'est un peu comme si Oracle faisait tout le temps du
La comparaison entre Oracle et InnoDB a ses limites puisque les valeurs de l'échantillonnage sont très différentes comme on peut le voir en observant les valeurs des paramètres
dynamic_sampling. Cette approche a ses avantages, sinon sur les temps de parsing au moins sur la maintenance de la base de données et, pourquoi pas, sur la pertinence des plans. La comparaison entre Oracle et InnoDB a ses limites puisque les valeurs de l'échantillonnage sont très différentes comme on peut le voir en observant les valeurs des paramètres
innodb_stats_sample_pages dans le cas de MySQL et de optimizer_dynamic_sampling dans le cas d'Oracle. En outre, la méthode d'échantillonnage qu'utilise Oracle est stable alors que celle d'InnoDB est aléatoire comme vous pouvez le voir ci-dessous...
Labels:
database,
mysql,
oracle
Links to this post
08 avril 2011
Noyau Ubuntu/Utrace pour probes Dtrace de MySQL
Si vous voulez utiliser les probes DTrace de MySQL grace à SystemTap sur Ubuntu, il faut, d'abord, que les packages "systemtap" et "systemtap-sdt-dev" soient installés. Il faut également que MySQL soit compilé avec le package "systemtap-sdt-dev" et l'option
Avec Ubuntu 10.10 Maverick Meerkat, rien n'est plus simple ;
-DENABLE_DTRACE=1. Il faut enfin que votre noyau soit patché avec utrace (CONFIG_UTRACE) ce qui n'est pas le cas avec les distributions standard Ubuntu ; au contraire des noyaux Oracle/Redhat EL ou Fedora. Avec Ubuntu 10.10 Maverick Meerkat, rien n'est plus simple ;
Labels:
linux,
mysql
Links to this post
06 avril 2011
Installer MySQL sur Ubuntu à partir des sources
La version de MySQL disponible via les repository Ubuntu n'est pas, la plupart du temps, la dernière version. Dans de nombreux cas, vous voudrez donc installer une version différente.
Cet article, largement inspiré de la section "2.9.2. Installing MySQL from a Standard Source Distribution" de la documentation présente comment effectuer cette opération en quelques minutes.
Cet article, largement inspiré de la section "2.9.2. Installing MySQL from a Standard Source Distribution" de la documentation présente comment effectuer cette opération en quelques minutes.
Labels:
linux,
mysql
Links to this post
05 avril 2011
Configurer SystemTap avec Oracle EL et Ubuntu
SystemTap permet de manipuler un nombre important de probes de votre noyau Linux. C'est un outil fantastique pour superviser les performances de vos serveurs et diagnostiquer vos problèmes rapidement. La liste de ces indicateurs est disponible dans la section man stapprobes.
Ainsi si vous êtes un utilisateur averti d'Oracle sous Linux, vous serez étonné de ce que vous pouvez faire avec SystemTap pour identifier vos problèmes et, par exemple, classer vos processus par "Top IO" ou "Top Network"
Ainsi si vous êtes un utilisateur averti d'Oracle sous Linux, vous serez étonné de ce que vous pouvez faire avec SystemTap pour identifier vos problèmes et, par exemple, classer vos processus par "Top IO" ou "Top Network"
Labels:
linux,
mysql
Links to this post
Plans et Hints MySQL pour les DBA Oracle
MySQL, comme Oracle, permet de visualiser les plans des requêtes et offre, à travers des hints, des moyens pour les influencer. Passer d'Oracle à MySQL est donc ultra-simple ! En théorie d'accord mais en pratique ?
Cet article fait un petit parallèle entre Oracle et MySQL s'agissant de ces 2 outils que sont la commande
Cet article fait un petit parallèle entre Oracle et MySQL s'agissant de ces 2 outils que sont la commande
explain et les hints...
Labels:
mysql,
oracle
Links to this post
02 avril 2011
Semaine de fou : SQL*Developer, XE 11g R2, OCM 11g et un casque Exadata
Enorme semaine côté Oracle, puisque outre quelques beaux poissons d'avril (Un Headphone Exadata) :
- Oracle SQL*Developer 3.0 est désormais production
- Oracle XE a désormais une version 11g R2 (Beta) et peut stocker désormais jusqu'à 11Go (vs 4 Go en 10g!)
- S-ASH 2.2 également dehors
- 11.2.0.2 est disponible sous zLinux
- L'exam complet OCM 11g est live !
- Virtual Assembly Builder OVAB 11.1.1.4
- Ce n'est pas Oracle : Natty Narwhal Beta 1 (i.e Ubuntu 11.04 avec un noyau 2.6.38) est disponible...La prochaine version, la 11.10 sera Oneiric Ocelot ! La 12.04 sera LTS
Labels:
11gR2,
database,
linux,
oracle
Links to this post
Inscription à :
Messages (Atom)