Effectivement, cette requête renvoie une ligne :
Ce qui est proprement scandaleux
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT 1 FROM DUAL WHERE '' IS NULL
Je ne connaissais pas ce gag-là, merci de me l'avoir fait découvrir(avant que je ne tombe dessus en prod et passe deux heures à
)
Attendez tout le monde
Oracle a ses extensions comme tous les sgbd.... Maintenant il est possible d'utiliser oracle en mode "ANSI compliant".
Il suffit de demander à Oracle de rejeter toute requête non confirme au standard par l'instruction :
Et dans ce cas, la même requete citée par Scheu et par Antoun génèrera un erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER session SET flagger=full;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 ConnectÚ Ó : Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the OLAP and Data Mining options SQL> SELECT 1 FROM DUAL WHERE '' IS NULL; 1 ---------- 1 SQL> ALTER session SET flagger=full; Session modifiÚe. SQL> SELECT 1 FROM DUAL WHERE '' IS NULL; SELECT 1 FROM DUAL WHERE '' IS NULL * ERREUR Ó la ligne 1 : ORA-00097: utilisation d'une fonction Oracle SQL non prÚvue dans le niveau SQL92 Full ORA-06550: Ligne 2, colonne 28 : PLS-01466: Cha¯nes non renseignÚes interdites ORA-06550: Ligne 2, colonne 26 : PLS-01455: PrÚdicats IS NULL et IS NOT NULL dÚfinis pour spÚcifications de col. seulement SQL>
Vincent Rogier.
Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog
Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !
OCILIB (C Driver for Oracle)
Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Merci Vincent ! Je vais essayer de me souvenir de flagger=full.
Néanmoins, même comme cela, le comportement n'est pas normatif. En effet, la requête ne devrait pas renvoyer d'erreur (elle est syntaxiquement correcte), mais simplement ne pas renvoyer de résultat parce que le prédicat du WHERE est UNKNOWN.
Vincent =>
Merci pour cette info je ne connaissais pas, je la note dans un coin celle-là
Néanmoins je suis d'accord avec Antoun, c'est juste un peu dommage que ce ne soit pas l'option par défaut, car les développeurs peuvent ne pas respecter les normes SQL sans forcément le savoir ni s'en rendre compte... Et on se rend compte des mauvaises blagues du style '' <=> NULL quand on veut migrer de SGBD
La théorie, c'est quand on sait tout mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !
Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/
Restons objectifs !!
Tous les SGBD, en particuliers ceux qui existaient avant le SQL92 (DB2, sysbase, Oracle, etc...) ont tous des particularités propriétaire !
Par exemple, SQLServer à des fonctions et des syntaxes qui lui sont propre...
Alors faire ce type de procès à Oracle, c'est un peu n'importe quoi !
Vincent Rogier.
Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog
Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !
OCILIB (C Driver for Oracle)
Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
Je suis d'accord avec toi. Néanmoins, avec fonctions ou syntaxes propres, il n'y a pas de surprise, on est censé savoir qu'on utilise du spécifique. Là, il s'agit d'un comportement spécifique sur une syntaxe standard, ce qui est beaucoup plus casse-gueule.
Je ne crois pas que SQL Server fasse des surprises comme celle-la ? La seule que je connais, c'est la division d'entiers (5 / 2 = 2), et il me semble que c'est normatif.
Bonjour,
"SQL Server est bien meilleur... je dirais que c'est plutôt un inconvénient pour Oracle en fait (sur la high availability)"
=> Je pense qu'il y a un problème de définition de HA (High Availability)
Quelle est la solution SQLServer pour de la HA ? une standby database ? oui donc une StandBy n'est pas une solution de HA mais du DRP (Desaster Recovery)
Un "cluster" actif-passif avec MSCS ? alors ce n'est pas de la HA non plus (de plus Oracle fait strictement la même chose que SQL avec Oracle Fail Safe)
Personne aujourd'hui ne propose de *vraie* solution de HA à part Oracle et son RAC (ex Oracle Paralell Server qui existe depuis plus de 10 ans); SQLServer, DB2, MYSQL & co n'ont pas d'offre de HA (MYSQL Cluster 5.1 n'est pas releasé - et le sera-t-il un jour ?)
Avantages d'Oracle :
- RMAN ! personne ne parle de ça mais c'est pour moi le plus important pour une DB : les données ! combien coute au client une perte de données par rapport au prix de la licence Oracle ? et RMAN est un outil extrèmenent puissant
- le support
- la communauté
- multiplateforme
- Oracle RAC - seule solution du marché pour de la vraie HA (disponible en Standard Edition depuis la 10)
- la lecture consistente...
- la gestion des locks
pour éclairer un peu le débat, tu nous dirais ce qu'est Rman ?
Salut
Recovery Manager (RMAN) Oracle est un utilitaire qui peut sauvegarder, restaurer et récupérer les fichiers de base de données. Le produit est une caractéristique de la base de données Oracle serveur et ne nécessite pas d'installation séparée.
(RMAN) est une application client / serveur utilisant serveur de base de données pour effectuer des sessions de sauvegarde et de récupération. Il stocke les métadonnées relatives à ses opérations dans le fichier de contrôle de la base de données cible et, éventuellement, dans un schéma de récupération catalogue dans une base de données Oracle.
On peut invoquer RMAN comme une ligne de commande exécutable du système d'exploitation rapide ou utiliser certaines fonctionnalités RMAN par l'intermédiaire du GUI Entreprise Manager.
Avantage RMAN
La plupart des systèmes de base de données de production imposent des exigences sur la sauvegarde et la récupération. En tant que DBA en charge de la sauvegarde et la récupération, On doit:
* Gérer la complexité de la sauvegarde et la récupération des opérations
* Réduire au minimum la possibilité d'une erreur humaine
* Faire des sauvegardes évolutives et fiables
* Utiliser tous les médias & matériels disponibles.
* Faire des sauvegardes proportionnelle à la taille de changements transactionnels, et non pas à la taille de la base de données
* Temps de récupération proportionnel à la quantité de données récupérées
Cependant on tjrs deux méthodes de base pour l'exécution de ces sauvegarde et de récupération de tâches sur une libération Oracle 8.0 ou supérieur :
* En utilisant le système d'exploitation pour exécuter les commandes de sauvegarde et de restauration, ou SQL et SQLPlus pour effectuer la récupération
* Utiliser Recovery Manager pour la sauvegarde, la restauration et la récupération
Note:
RMAN a été introduit dans Oracle Release 8.0 et n'est pas compatible avec les bases de données inférieur.
Merci pour les précisions !
J'ajouterai que RMAN est capable de :
- Faire des Backups à chaud (base ouverte sans impacter les utilisateurs) - à froid aussi pour ceux qui croient encore que "c'est mieux"
- Compresser les backups à la volée (depuis Oracle 10)
- Faire des backups FULL, Incrémentaux et différentiels
- Ne sauvegarder que les blocs modifiés
- Paralléliser les backups (sur plusieurs lecteurs de bande par exemple)
- Gérer les rétentions des backups très simplement
- Génère facilement des rapports sur ce qui est backupé, ce qui est en dehors de la période de rétention, ce qui a besoin d'ere backupé, ...
- Backup aussi bien les bases Oracle que les SPFILE(fichier qui contient les paramètres d'initialisation d'une instance Oracle), les archivelogs, les controlfiles, ...
- Vérifie les blocs corrompus lors d'un backup
- Simuler une restauration (RESTORE DATABASE VALIDATE)
- Permet de restaurer un seul bloc (BLOCKRECOVER)
- Permet de créer une base dentique à une base source depuis un backup (RMAN DUPLICATE) ainsi qu'une StandBy Database (DUPLICATE FOR STANDBY)
- Permet de stocker des scripts RMAN
- ... et j'en oublie sans doute plein
Bref, un outil extrèmement robuste et puissant qui assure au client de ne pas perdre de données (ce qui est tout de même important pour un Système de Gestion de Base de Données)
Oracle aussi.
FAUX : tu écris en ce que tu veux avec les "procédures externes" d'Oracle qui existent depuis... toujours à ma connaissance
Oracle Database et Oracle Application Server sont deux choses différentes.
Tiens ? tu peux installer uniquement ce que tu veux sous Oracle, n'importe quel "module", tu peux tout recompiler, les makefiles sont dans l'ORACLE_HOME
Oui mais comment fais-tu pour installer plusieures versions de postgresql sur la même machine ? (chaque version faisant tourner 1 ou X instance)
De plus, c'est pas compliqué d'installer Oracle, regarde mon post ici : http://www.developpez.net/forums/d55...us-rhel-5-1-a/
Et donc... ?
Oracle a un fichier d'initialisation (init.ora ou SPFILE - la plupart des paramètres sont dynamiques), il exiiste un fichier pour ce que j'imagine tu appelles les "interfaces réseaux" aussi; Oracle sait gérer les index donc pas besoin de les reconstruire et il est extrèmement simple de mettre en place la mise à jour (ANALYZE) des statistiques pour l'optimiseur (c'est même par défaut en 10). Je vois pas bien ou est la différence là
Oui et sans support
Plait-il ? de quels bugs parles-tu ? ca fait plus de 10 ans que je suis DBA Oracle et j'ai du tomber sur 3 "bugs"...
Mais que dis-tu ... Oracle tourne parfaitement avec 150 Mo de RAM (sur un KIMSUFIT d'OVH par exemple) tout comme il peut tourner avec 50 Go de RAM
Tu nous donnes un exemple concret ? car jusque là tes points théoriques sont faux donc bon...
Désolé Vincent de ne pas laisser passer cela: si certains points te semblent pas cités, omis, non documentés, subjectifs ou arbitraires, merci de m'en faire part ici. Bien qu'ayant une casquette responsable SQL Server, je pratique plus du Oracle et pense pouvoir défendre mes points de vues... ou les modifier au besoin pour que le comparatif reste un article le plus objectif possible.
Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2
N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD
Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
Le mirroring !
En asynchrone, on pourrait le comparer à une standby mais en synchrone ce serait plutôt Stream utilisable uniquement depuis la 10g et BEAUCOUP plus compliqué à mettre en oeuvre.
Pour la vraie haute dispo, Oracle propose le RAC mais c'est plus du tout le même budget
Et pour RMAN, ça ne me parait pas être un avantage prépondérant par rapport à la concurrence qui propose la même chose (au moins SQL Server) voir même bien plus simplement![]()
Vincent Rogier.
Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog
Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !
OCILIB (C Driver for Oracle)
Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle
C'est bizarre, j'ai souvenir d'un démarrage impossible avec une alerte concernant la SGA mini... ça a peut-être changé depuis mon essai alors. Tant mieux![]()
Partager