19 août 2019

les erreurs sous oracle 2 : contraintes d'intégrité, whenever oserror/sqlerror, trigger servererror, fichiers alert.log/trace

IntroductionCet article est le deuxième d'une série consacrée à la gestion des erreurs sous Oracle. Les autres articles sont ici : - Les erreurs sous Oracle 1 : erreurs syntaxiques/sémantiques, utilitaire OERR, table SPERRORLOG, table ERRLOGAujourd'hui nous allons regarder quatre choses : - les erreurs liées aux contraintes d'intégrité : EXCEPTIONS INTO EXCEPTIONS- les erreurs dans les scripts SQL : WHENEVER OSERROR et WHENEVER SQLERROR- les triggers système : CREATE TRIGGER ... SERVERERROR ...- les fichiers Oracle : fichier... [Lire la suite]
Posté par David DBA à 15:31 - - Permalien [#]
Tags : ,

09 août 2019

Les erreurs sous Oracle 1 : erreurs syntaxiques/sémantiques, utilitaire OERR, table SPERRORLOG, table ERRLOG

IntroductionCet article est le premier d'une série consacrée à la gestion des erreurs sous Oracle. Ce sujet est vaste, ces erreurs pouvant être gérées sous SQL*Plus, en PL/SQL, dans des fichiers, via des triggers, j'en passe et des meilleurs :-)  Attention, le but ici est de présenter cette gestion des erreurs, pas d'en faire une analyse poussée et exhaustive, ça, c'est à vous de le faire selon vos besoins...Les autres articles sont ici : - les erreurs sous oracle 2 : contraintes d'intégrité, whenever oserror/sqlerror,... [Lire la suite]
Posté par David DBA à 11:07 - - Permalien [#]
Tags : ,
28 juillet 2019

La pseudo-colonne ORA_ROWSCN et les dates de mise à jour d'une table - ORA_ROWSCN and the update dates of a table

Introduction La pseudo-colonne ORA_ROWSCN permet d'associer un SCN (System Change Number) à la dernière modification d'un bloc de données ou d'une ligne d'une table. Cette colonne permet notamment de répondre à la question : quand cet enregistrement a-t-il été mis à jour la dernière fois?    Points d'attentionPar défaut, c'est au niveau bloc que cette pseudo-colonne est associée, pas au niveau ligne.   Base de testsUne base Oracle 12. ... [Lire la suite]
Posté par David DBA à 19:11 - - Permalien [#]
Tags : , ,
23 juillet 2019

Utiliser des tables externes pour accéder à des fichiers Oracle sous Linux - Use external tables to access Oracle files on Linux

IntroductionParfois vous ne pouvez pas vous connecter au serveur Linux qui héberge votre base Oracle : pas de compte, serveur dans un Cloud hors de votre société etc etc. C'est très gênant pour accéder au contenu de fichiers Oracle de configuration comme le listener.ora, tnsname.ora etc etc car ces fichiers ne sont pas interfacés avec la base Oracle, comme l'est par exemple le fichier alert.log (voir ici : "Utiliser SQL pour lire le fichier ALERT.log"). La solution que nous allons explorer ici est l'utilisation d'une table externe. ... [Lire la suite]
Posté par David DBA à 16:13 - - Permalien [#]
Tags : ,
02 juin 2019

Plus de MCD, plus de MPD... : comment trouver la colonne et la table où est stocké un libellé? - Find the column of this label

  IntroductionIl arrive que dans un SI les développeurs ne sachent plus associer un écran d'une application à une table de la base : application d'un éditeur tiers ayant fait faillite donc accès au code source impossible, crash du disque dur contenant la documentation, départ des développeurs experts sans passage de témoin, etc etc...On va voir alors comment, pour un écran et un champ précis, retrouver la fameuse table en nous aidant du dictionnaire de données d'Oracle.  Points d'attentionAucun. Base de testsUne base... [Lire la suite]
Posté par David DBA à 14:38 - - Permalien [#]
Tags : , ,
03 mai 2019

Changer le propriétaire d'une table en hackant le dictionnaire de donnés - Change the owner of a table by hacking Oracle

IntroductionOracle ne permet pas de changer le propriétaire d'un objet dans sa base de données : point! Pour quelles raisons? Peut-être que c'est trop complexe, qu'à cause des dépendances avec d'autres objets cela devient ingérable...     Mais si on est obligé de le faire, il existe des solutions de contournement.1) Datapump : export/import dans un nouveau schéma avec le paramètre REMAP_SCHEMA. Par exemple, on exporte le schéma hr et on le réimporte sur la même base dans le schéma scott.    ... [Lire la suite]
Posté par David DBA à 16:31 - - Permalien [#]
Tags : ,

22 avril 2019

Historique du nb de lignes d'une table : table AWR SYS.WRI$_OPTSTAT_TAB_HISTORY - History of the row number of a table

IntroductionPar défaut, il n'est pas possible sous Oracle de voir l'historique du nombre de lignes d'une table. Cela peut-être assez gênant si on veut expliquer pourquoi un SELECT prends dix fois plus de temps que le mois précédent; surtout si les développeurs et chefs de projet jurent, la main sur le coeur, que non, la taille de la table n'a pas changé et que donc le problème est forcément sur la base :-)Pour leur prouver que cette table a grossi, fortement même, il faut utiliser des moyens détournés, par exemple requêter une des... [Lire la suite]
Posté par David DBA à 12:33 - - Permalien [#]
Tags : , ,
14 avril 2019

Commit : Oracle l'exécute le plus rapidement possible - Commit: Oracle executes it as quickly as possible

IntroductionLire des données sur disque dur est infiniment plus lent que des lire en mémoire (à l'échelle informatique, j'entends). Par exemple, pour des disques durs à plateaux (non SSD donc) avec une vitesse de rotation de 15 000 tours minutes, une lecture de bloc demande au mieux 2 milli secondes. Pour une mémoire de type RAM, la même lecture se fera entre quelques dizaines ou centaines de nanosecondes, soit entre dix mille et cent mille fois moins que pour un disque dur. Oracle a donc tout intérêt à tenir en mémoire un maximum de... [Lire la suite]
Posté par David DBA à 18:05 - - Permalien [#]
Tags : ,
30 mars 2019

DBMS_STATS : toutes les fonctions classées par famille - DBMS_STATS: all features sorted by family

IntroductionLe package DBMS_STATS est l'un des plus importants sous Oracle. Il permet de générer les statistiques de la base, indispensables pour que l'optimiseur calcule de bons plans d'exécutions. Mais ce package est bien plus riche que la simple collecte des stats et c'est ce que nous allons voir dans cet article.Attention, l'objectif est de montrer les familles de fonctions de ce package, et non pas de tester chacune de ces fonctions avec chacun des paramètres. Les exemples seront donc basiques.La liste des fonctions du package... [Lire la suite]
Posté par David DBA à 11:37 - - Permalien [#]
Tags : ,
03 mars 2019

Utiliser SQL pour lire le fichier ALERT.log - Use SQL to read the ALERT.log file

IntroductionLe fichier dit ALERT.log est celui où un DBA doit aller en premier lorsqu'un problème sérieux survient sur une base. C'est ici que sont enregistrés les arrêts/relances de la base, la valeur des paramètres de l'instance qui ne sont pas ceux par défaut, toutes les opérations sur la base comme l'ajout d'un tablespace, la suppression d'un fichier de données, les erreurs internes Oracle de type ora-00600, les deadlocks et autres erreurs du SGBD; bref c'est le passage obligé en cas de coup dur!     Ce fichier... [Lire la suite]
Posté par David DBA à 19:07 - - Permalien [#]
Tags : ,