Fonctionnement d’Oracle 10g sous Windows
Oracle 10g : une seule version
Lorsqu’il fonctionne sous Windows, Oracle 10g possède des caractéristiques identiques à celles d’Oracle sous d’autres systèmes d’exploitation comme Unix ou Linux. Cependant, Oracle adapte son logiciel pour exploiter au mieux les possibilités offertes par chaque système d’exploitation. L’interface entre Oracle et Windows a été modifiée pour s’adapter et tirer des avantages de l’architecture et des évolutions de Windows, y compris sur les environnements 64 bits. Entre les versions d’Oracle sous Windows et sous Unix, les différences d’architecture ne concernent essentiellement que des aspects très proches des « couches basses » des systèmes d’exploitation. Les ingénieurs d’Oracle ont adapté la base de données sous Windows pour permettre une intégration parfaite autorisant un fonctionnement performant et stable. Des outils d’administration complémentaires propres à Windows sont venus enrichir la palette des outils Oracle que l’on retrouve sur tous les systèmes d’exploitation. Ainsi, un administrateur Windows ne sera pas dépaysé : il contrôlera tous les aspects liés à Windows en utilisant des outils familiers. De même, un administrateur Unix retrouvera sous Windows des outils connus. Les composants d’Oracle 10g sous Windows Avant de les détailler dans les chapitres suivants, nous vous présentons succinctement les différents composants d’une base Oracle 10g, à savoir : • les composants « fichiers » ; • les composants « programmes » ; • les composants « mémoire ». Les composants « fichiers » Toute base de données se réduit en définitive à des fichiers qui contiennent les données et à d’autres qui interviennent dans le fonctionnement. Chaque base de données possède des fichiers spécifiques, qu’il faut pouvoir identifier et dont il s’agit de connaître les objectifs. Les quatre types de fichiers indispensables au fonctionnement d’une base Oracle sont : Nous ne présentons que les fichiers qui composent votre ou vos bases de données. Les autres fichiers, mis en place lors de l’installation Oracle, sont décrits au chapitre 13, L’installation d’Oracle 10g sous Windows. =Briard.Livre • les fichiers de données ; • les fichiers redo-log ; • les fichiers de contrôle ; • les fichiers d’administration. Les fichiers de données contiennent les tables, index, procédures, fonctions, etc., ainsi que le dictionnaire de données (conçu lors de la création d’une base de données). Le dictionnaire, géré à 100 % par Oracle, est le cœur de la gestion interne de la base. Les fichiers de données constituent plus de 90 % du volume global d’une base Oracle. Comme se sont les fichiers les plus volumineux, leur taille, leur emplacement et leur paramétrage sont de la responsabilité de l’administrateur de la base de données. Les fichiers redo-log mémorisent l’historique de tous les ordres modifiant des données ou la structure de la base de données. Ils sont au minimum trois, chaînés circulairement ; ce qui signifie que le premier se remplit, puis le deuxième, le troisième, puis le premier, etc. Ils assurent une mission de sécurité. Ils garantissent que dès que vous validez la modification d’une donnée, elle sera réalisée quoi qu’il arrive (arrêt brutal, panne électrique, etc.). Leur taille est fixée lors de la création de la base de données (modifiable ultérieurement). Leur fonctionnement est géré à 100 % par Oracle. Les fichiers de contrôle renseignent la base de données sur son état précédent lors du démarrage, de l’arrêt et lors de certaines phases de fonctionnement. Par exemple, lors de son démarrage, leur consultation permet de savoir quel type d’arrêt a eu lieu précédemment : normal, brutal, etc. Ils contiennent par ailleurs les chemins d’accès et les noms de tous les fichiers (base de données et redo-log) qui composent la base de données. Pour démarrer une base de données, il suffit que le logiciel Oracle sache où se trouvent les fichiers de contrôle. Il y puise un ensemble de renseignements qui lui serviront à réaliser l’opération. Leur taille, quelques centaines de kilo-octets maximum et leur fonctionnement sont gérés à 100 % par Oracle. Les fichiers d’administration servent à l’administration courante d’Oracle. Ce sont par exemple les fichiers d’initialisation utilisés lors du démarrage de la base, les fichiers servant à paramétrer certains outils et enfin les différents fichiers de trace et d’alerte générés par Oracle. Tous ces fichiers sont utilisés par les composants « programmes ».
Base de données et instance
Une base de données Oracle se compose donc de : • fichiers : base de données, redo-log, contrôle, administration ; • exécutables : pour faire fonctionner la base ; • mémoire. On parlera de base de données pour qualifier l’ensemble des fichiers qui la composent. Une instance regroupe la base de données (les fichiers), la zone mémoire allouée (SGA) et les exécutables assurant le fonctionnement de la base. On peut simplifier en disant qu’une instance est une base de données « en action ». Figure 5-3 Base de données et instance Processus unique Mémoire partagée accédée par tous les threads : SGA (System Global Aera) Mémoire privée du Thread 1 Code exécutable : ORACLE.EXE Thread PMON Thread utilisateur 1 Thread LGWR Thread SMON Autres Thread Mémoire privée du Thread 2 Thread utilisateur 2 … … Mémoire privée du Thread N Thread utilisateur N Fichiers Base de Données Fichiers redo-logs Fichiers de contrôle Fichiers d’administration Les fichiers d’une base une base de données une INSTANCE =Briard.Livre Page 61 Mardi, 21. février 2006 1:46 13 Principes de fonctionnement d’Oracle 10g PARTIE II 62 Nous aborderons les avantages et inconvénients d’avoir une ou plusieurs bases de données sur un seul serveur Windows au chapitre 14, Création d’une base Oracle 10g. Architecture interne d’Oracle 10g sous Windows Le serveur Oracle 10g fonctionne sous Windows comme un exécutable unique ayant de multiples threads. Chaque thread a ses propres tâches à réaliser. Certains threads sont dus aux connexions des utilisateurs, d’autres réalisent le fonctionnement de la base de données en tâche de fond. Les threads internes au fonctionnement d’Oracle 10g sont les équivalents des processus sous Unix. On retrouve des threads équivalents à PMON, DBWR, ARCH, etc., c’est-à-dire Figure 5-4 Fonctionnement simultané de deux instances sous Windows INSTANCE « A » Mémoire partagée accédée par tous les threads : SGA (System Global Aera) Mémoire Code exécutable : ORACLE.EXE Thread Thread Thread Thread Autres Threads Mémoire Thread … … Mémoire Thread Les fichiers d’une base INSTANCE « B » Mémoire partagée accédée par tous les threads : SGA (System Global Aera) Mémoire Code exécutable : ORACLE.EXE Thread Thread Thread Thread Autres Threads Mémoire Thread … … Mémoire Thread Les fichiers d’une base =Briard.Livre Page 62 Mardi, 21. février 2006 1:46 13 Fonctionnement d’Oracle 10g sous Windows CHAPITRE 5 63 à toutes les grandes fonctions internes du moteur Oracle 10g. Le nombre de threads lancés dépend à la fois des fonctions internes du moteur Oracle 10g (certaines, comme la réplication, sont optionnelles) et du nombre d’utilisateurs connectés. Cet exécutable Oracle 10g fonctionne sous la forme d’un service, car c’est le mode de fonctionnement sur les systèmes d’exploitation Microsoft. Les services associés à une base de données sont abordés ultérieurement dans ce chapitre. L’exécutable oracle.exe Chaque instance d’Oracle 10g consiste donc en un programme exécutable unique ayant de multiples threads. Pour que chaque nouvelle instance soit identifiée par Windows, son nom figure dans la base de registre sous la forme d’un service. Le nom du service sera toujours OracleServiceSID, où SID représente l’identifiant de l’instance Oracle. Ce service est associé à un exécutable oracle.exe. Le service OracleServiceSID se compose initialement de quelques threads, qui ont pour tâche de gérer l’ensemble des threads ultérieurs. C’est sous le contrôle de ce service initial que s’effectuent des opérations telles que le démarrage ou l’arrêt de la base de données. S’il y a plusieurs instances Oracle sur un serveur, il y aura autant de services OracleServiceSID et d’exécutables oracle.exe lancés que d’instances. Fonctionnement de l’exécutable oracle.exe sous Windows Le démarrage d’oracle.exe sous la forme d’un service permet d’être indépendant d’une session utilisateur Windows. Le service et son instance associée peuvent être lancés automatiquement lors du démarrage de Windows. Il est indispensable que le service soit lancé avant de pouvoir démarrer l’instance Oracle. Ces deux opérations peuvent être synchronisées. Par défaut, les services sont lancés sous le compte Windows Système. Système n’est pas un utilisateur capable de créer une session Windows, il sert à assurer la gestion des services. La création d’un service associé à une instance est assurée par l’utilitaire ORADIM, présenté ultérieurement dans ce chapitre. Les différents threads d’oracle.exe Les administrateurs d’Oracle sur d’autres systèmes d’exploitation connaissent bien les différents processus d’Oracle (PMON, SMON, etc.). Sous Windows, ce sont des threads du processus oracle.exe. Les premiers threads sont utilisés pour la gestion des threads suivants et ne sont pas documentés par Oracle. Les autres threads sont PMON, DBWR, Réservée exclusivement aux environnements Microsoft, l’utilisation des services est l’une des caractéristiques principales d’Oracle sous Windows. La notion de service n’existe pas sous les systèmes Unix et Linux. =Briard.Livre Page 63 Mardi, 21. février 2006 1:46 13 Principes de fonctionnement d’Oracle 10g PARTIE II 64 LGWR, SMON, RECO. Après ceux-ci, il en existe d’autres qui sont optionnels (ARCH, CKPT, etc.). Suivent ensuite les threads créés par les connexions des utilisateurs. Nous commentons plus largement les différents threads au chapitre 7, Le processus Oracle 10g.