Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
Blog d'un DBA sur le SGBD Oracle et SQL
30 septembre 2019

Cartographie hiérarchie architecture d'une base Oracle - Hierarchy architecture mapping of an Oracle database


Introduction
Est-ce que vous vous êtes déjà demandé à quel point une base de données Oracle pouvait être complexe? A quel point il existait de niveaux entre le plus haut (le serveur Oracle) et le plus petit (la colonne)? On va voir justement comment est organisée hiérarchiquement une base Oracle; on ne traitera pas l'instance, ce sera l'objet d'un autre article.


 
Points d'attention
Aucun.



Base de tests
N/A.



Exemples

Le serveur Oracle
En premier, sur un serveur Linux, Unix ou Windows, se trouve un serveur Oracle, c'est à dire l'ensemble Instance/Base de données. Je ne représente pas le logiciel Oracle (le SGBDR/RDBMS) proprement dit.
Canalblog DBA Oracle Organisation000


L'architecture multi-tenants, container, CDB, pluggable database, PDB (ouf, pourquoi autant de dénominations Mr Oracle?)
Depuis la version 12 d'Oracle, une nouvelle architecture a été créée, celle dite Multi-tenants. A la base, il y a un container (CDB), celui-ci renferme une base socle appelée CDB$ROOT, sur laquelle vont venir se plugger (comme des clés USB) des bases de données dites PDB (Plugabbles Databases). Parmi ces PDBs, il y a la PDB$SEED, utilisée par Oracle pour créer par copie une nouvelle PDB, puis les bases de données applicatives.
Canalblog DBA Oracle Organisation10


Tablespaces, datafiles, segments, extents et data blocks
Si on détaille plus, on voit apparaître les notions de tablespaces, datafiles, segments, extents et data blocks. On ne parlera pas ici des blocs du système d'exploitation Linux/Unix/Windows, c'est hors périmètre de cet article mais sachez qu'un bloc Oracle de 8Ko est composé de plusieurs blocs de l'OS, de 512 octets par exemple.

Canalblog DBA Oracle Organisation00

Une autre vision des rapports, avec la cardinalité 1/N, entre les structures de la base.
Canalblog DBA Oracle Organisation01



Les tablespaces peuvent être composés de un ou plusieurs datafiles.
Canalblog DBA Oracle Organisation02


Les tablespaces contiennent les objets Oracle occupant de l'espace disque comme les tables, index, vues matérialisées (sauf SYSTEM qui lui renferme en plus le dictionnaire de données avec des objets ayant juste une définition, comme les DBLinks, les séquences...).
Canalblog DBA Oracle Organisation03


Segment, extents, data blocks
Un segment (table/index...) est composé de N extents qui eux-même sont composés de N data blocks consécutifs.
Canalblog DBA Oracle Organisation04


Data block
Si on descend maintenant au niveau du data block, on voit qu'il est composé de N structures : les données sont tout en bas, au dessus il y a de l'espace vide, et au dessus se trouvent plusieurs structures qu'on pourrait croire former le block header mais il n'en est rien.Canalblog DBA Oracle Organisation06


En effet, voici un schéma récupéré sur le net mais pas sur le site officiel d'Oracle. On va partir du principe que ce schéma est OK sinon pourquoi l'avoir dessiné? Néanmoins soyons prudent :-) Que voit-on, que en haut du data block, il y a le "Data Block Header", le "Cache Layer" et le "Transaction Layer". Ces ensembles sont eux-même composés de N champs; je vous laisse analyser cela; bonne chance!Canalblog DBA Oracle Organisation07

La ligne de données (row)
Nous descendons maintenant au dernier niveau, celui de la ligne de données Oracle, le fameux Row. Là encore, nous trouvons de multiples informations, chaque ligne comporte un "Row Header" avec notamment le nombre de colonnes stockées puis les données proprement dites pour chaque colonne avec en plus la longueur de la colonne.
Canalblog DBA Oracle Organisation08



Synthèse
Un schéma synthétique, trouvé sur Google Images.

Canalblog DBA Oracle Organisation05

Publicité
Publicité
Commentaires
Blog d'un DBA sur le SGBD Oracle et SQL
Publicité
Archives
Blog d'un DBA sur le SGBD Oracle et SQL
  • Blog d'un administrateur de bases de données Oracle sur le SGBD Oracle et sur les langages SQL et PL/SQL. Mon objectif est de vous faire découvrir des subtilités de ce logiciel, des astuces, voir même des surprises :-)
  • Accueil du blog
  • Créer un blog avec CanalBlog
Visiteurs
Depuis la création 341 112
Publicité