Skip to main content.

Ordonnancement < Aspects généraux < Référentiel

Oracle

Oracle est un système de gestion de base de données relationnel (SGBDR) fourni par Oracle Corporation. Il a été développé par Larry Ellison, accompagné d’autres personnes telles que Bob Miner et Ed Oates.

Software Development Laboratories a été créé en 1977. En 1979, SDL change de nom en devenant Relational Software, Inc. (RSI) et introduit son produit Oracle V2 comme base de données relationnelle. La version 2 ne supportait pas les transactions mais implémentait les fonctionnalités SQL basiques de requête et jointure. Il n’y a jamais eu de version 1, pour des raisons de marketing, la première version a été la version 2. Celle-ci fonctionnait uniquement sur les systèmes Digital VAX/VMS.

- En 1983, RSI devient Oracle Corporation pour être plus représentative de son produit phare. La version 3 d’Oracle, entièrement ré-écrite en langage de programmation C, est publiée. Celle-ci supportait les transactions grâce aux fonctionnalités de commit et rollback. C’est aussi à partir de cette version que la plate-forme Unix est supportée.

- En 1984, la version 4 d’Oracle apparaît, supportant la cohérence en lecture (read consistency).

- Début 1985, Oracle commence à intégrer le modèle client-serveur, avec l’arrivée des réseaux au milieu des années 1980. La version 5 d’Oracle supporte donc les requêtes distribuées.

- En 1988, Oracle met sur le marché son ERP - Oracle Financials basé sur la base de données relationnelle Oracle. Oracle version 6 supporte le PL/SQL, le verrouillage de lignes (row-level locking) et les sauvegardes à chaud (hot backups, lorsque la base de données est ouverte).

- En 1992, la version 7 d’Oracle supporte les contraintes d’intégrité, les procédures stockées et les déclencheurs (triggers).

- En 1995, acquisition d’un puissant moteur multidimensionnel, commercialisé sous le nom d’Oracle Express.

- En 1997, la version 8 introduit le développement orienté objet et les applications multimédia.

- En 1999, la version 8i est publiée dans le but d’affiner ses applications avec Internet. La base de données comporte nativement une machine virtuelle Java.

- En 2001, Oracle 9i ajoute 400 nouvelles fonctionnalités et permet de lire et d’écrire des documents XML.

À partir de la version 9i, intégration du moteur OLAP au sein de Oracle : le moteur Oracle express est dorénavant référencé au sein de l’option Oracle OLAP. Les données multidimensionnelles sont accessibles à partir du langage SQL.

- En 2003, la version 10g est publiée. Le g signifie « grid » ; un des atouts marketing de la 10g est en effet qu’elle supporte le « grid computing ».

- En 2005, vers la fin novembre, une version complètement gratuite est publiée, la « Oracle Database 10g Express Edition ».

- Septembre 2009, sortie de Oracle 11g Release 2

Installation de la partie cliente sur Windows

La procédure la plus simple : L’installation des "Data Access Components".

Installation ODBC Oracle

Certains produits se connecte à la bae de données via l’interface ODBC.

Rubriques

FAQ

Trucs et astuces.

Modifier un mot de passe oracle

Comment supprimer un mot de passe en passant par le compte oracle. Ce cas est typique des bases oracle mis à disposition pour les tests, on dispose généralement du compte root et donc d’un accès en tant qu’oracle.

Oracle Database Personal Edition

Version complète de la base de données pour un usage personnel qui est totalement compatible avec l’ensemble des produits de la gamme.


Base de données
Oracle
Voir aussi...
DB2, MS SQL, MSDE, PostGreSQL, Sybase, XBase

Dernières infos

Utilisation et limites d'Oracle 11g DBMS_XA

DBMS_XA permet plusieurs choses parmi lesquelles coordonner plusieurs branches d'une transaction globale dans des sessions différentes. Les exemples n'étant pas foison, ni sur le web, ni sur les sites d'Oracle pour décrire l'utilisation d'une transaction multi-sessions, cet article présente un cas simple qui utilise une seule et même instance...

Oracle permet alors d'accédez aux modifications non encore validées des autres sessions ; c'est parce que le branches de la transaction globale sont "tightly coupled".

Malheureusement, au moins en 11.2, ce fonctionnement se fait au prix d'une sérialisation des opérations des différentes sessions. Mauvais trip si vous pensiez vous en servir de cette fonctionnalité pour paralléliser vos traitements PL/SQL. Il faudra sans doute vous retourner vers des transactions globales déclenchées via les OCI ou une datasource native XA JDBC. Ce point est illustré à l'aide de 2 exemples ci-dessous. Mais assez parlez : à vos sessions SQL*Plus !
Plus d'infos »

ArKZoYd
Fonctions de table et Parallèlisme

Il y a quelques semaines, yooo13 qui se reconnaîtra ;-), rebondissant sur un problème de performance d'un des batchs sur lesquels je travaillais, pointait le fait que les fonctions de table ou fonctions "pipelined" peuvent être parallélisées et que j'y trouverais une solution à mon problème...

L'idée simple, et par ailleurs expliquée dans cet article, consiste à prendre le jeu de données d'origine et de le segmenter en jeux plus petits, à la "mapreduce"... Au final et dans mon cas, le résultat est excellent et permet, après 1/2 journée de travail, de diviser les temps de réponse par un facteur d'échelle, passant d'une heure à quelques minutes, par une manipulation purement technique.

Evidemment, ce n'est pas sans de quelques sacrifices. En particulier, l'introduction de code PL/SQL supplémentaire rend la solution, déjà mal écrite/décrite, encore plus difficile à comprendre et ce, malgré tous mes efforts. Mais le sujet de cet article est ailleurs, il s'agit d'illustrer, une des difficultés que j'ai rencontrée, travaillant sur un tout petit jeux de données de 1000 lignes pour équilibrer les "partitions" de mes exécutions en parallèle
Plus d'infos »

Un exemple d'utilisation du hint "CARDINALITY"

Le hint CARDINALITY permet d'aider l'optimiseur Oracle en lui "soufflant" le nombre de lignes retournées pour une étape d'un plan. Vous pensez qu'avec les différents mécanismes de dynamic sampling, cardinality feedback, statistiques multi-colonnes, statistiques sur les colonnes virtuelles et SQL Profile, ce hint est inutile ?

Voici une requête où typiquement, la seule solution, sauf de fixer le plan ou de réécrire le SQL, consiste à utiliser ce hint :
Plus d'infos »

Flashback et Snapshot Standby en Action

Qui utilise une base de données Oracle et n'a jamais besoin ?

  • d'investiguer les causes d'un problème constaté en production quelques minutes/heures auparavant
  • de tester une correction ou une évolutions et comparer le résultat à celui de la production
  • de ré-exécuter un batch après correction de données et réintégrer le résultat en production
  • de simuler des modifications pour des raisons techniques ou métier
Pour tous ces scénarios, une base de données standby est très utile et peut être ouverte en lecture-écriture... sans "Active Data Guard" mais simplement avec Flashback Logs et Snapshot Standby.

Cet article illustre comment combiner ces 2 fonctionnalités, faire reculer la base de données de standby et l'ouvrir en lecture écriture. Une fois vos tests réalisés, vous pourrez resynchroniser base de données primaire et standby...
Plus d'infos »

Le premier jour de la première semaine de 2012... à New-York !

Discussion lunaire fin 2011 à propos de la première semaine de 2012 : Google Calendar et Microsoft Outlook ne sont pas d'accord ! Il y a ceux qui pensent que la première semaine commence au premier lundi de l'année ; Et Outlook qui met le premier jour de l'année la première semaine... Si on s'en réfère à la description ISO des semaines, la première semaine de l'année est celle qui contient le premier jeudi de l'année.

Cette année, la première semaine commence donc le 2 comme le confirme le SQL ci-dessous qui utilise les formats de date d'Oracle :

select to_char(to_date('01/01/2012','DD/MM/YYYY'), 'IW/IYYY') SEM
  from dual;
SEM
-------
52/2011

select to_char(to_date('02/01/2012','DD/MM/YYYY'), 'IW/IYYY') SEM
  from dual;

SEM
-------
01/2012
Le 31 décembre 2012 est quant à lui la première semaine de 2013 :
select to_char(to_date('31/12/2012','DD/MM/YYYY'), 'IW/IYYY') SEM
  from dual;

SEM
-------
01/2013
Tout s'éclaire donc... Mais à vrai dire, ma préoccupation était moins le numéro de la semaine que la date du premier jour de la première semaine de l'année mais pas à Paris ! En France, le premier jour de la semaine est le lundi alors qu'aux Etats-Unis, c'est le dimanche :
alter session set nls_territory=FRANCE;

select to_char(to_date('01/01/2012','DD/MM/YYYY'), 'D') DAY
  from dual

D
-
7

alter session set nls_territory=AMERICA;

D
-
1
Question : "Quel est donc le premier jour de la première semaine de l'année au Etats-Unis ?". Demandons à Oracle...
alter session set nls_territory=AMERICA;
alter session set nls_date_format='DD/MM/YYYY';

select trunc(to_date('02/01/2012','DD/MM/YYYY'), 'IW') DAY
  from dual;

DAY
----------
02/01/2012
La réponse est donc un lundi... Même aux Etats-Unis ! Pourquoi ? Parce que dans la définition ISO des semaines, le premier jour de la semaine est le lundi. Seulement, voilà, j'ai beau chercher dans les formats de date d'Oracle, il n'y a pas de format qui permette de trouver le jour de la semaine ISO d'une date. 'D' dépend toujours du territoire. L'intérêt d'être en France est que 'D' signifie donc aussi le jour de la semaine ISO... Mais ce n'est pas vrai partout !

Et voilà, l'histoire de mon premier bug de 2012 qui est aussi le dernier de la dernière semaine de 2011... Bref, bonne année à tous !

A voir sur le net

Livres sur Oracle

Recherche de "oracle" de la Librairie Eyrolles.com

Oracle Database - Wikipédia

Article Wikipedia.