Stockage de base
Nous venons d'apprendre sur la nature non persistante de l'instance Oracle. Toutes
les informations chargées dans l'instance Oracle sont effacées chaque fois que nous
redémarrons notre base de données. Cela ne mettrait-il pas vos données en danger,
vous pouvez demander? Oui, mais heureusement pour nous, rendre nos données
cohérentes et sûres est exactement là où la deuxième partie de l'architecture de la
base de données Oracle entre en jeu, le stockage de la base de données Oracle. Le
nom donne à peu près son but: le stockage des données de base de données sur le
disque.
Le stockage de base de données Oracle est essentiellement une collection spéciale
de fichiers Oracle utilisés pour conserver nos données de l'instance Oracle qui est
uniquement en mémoire sur un disque physique. Afin qu'Oracle puisse s'assurer que
tous nos précieux contenus dans notre base de données sont sûrs et
sécurisés, Oracle doit stocker ces données sur un disque quelque part sous la forme
d'un ensemble de fichiers. Ces fichiers de disque constituent notre base de données
physique Oracle.
L'instance Oracle dont nous avons parlé précédemment est seulement une copie du
programme Oracle chargé en mémoire, pas nos données réelles. Une bonne
analogie est les documents Microsoft Word et Microsoft Word. De la même façon
que Microsoft Word est un programme que vous exécutez sur votre ordinateur mais
vos données réelles sont stockées dans des documents Word sur disque, l'instance
Oracle est un programme et le stockage de la base de données est nos
données. Cependant, contrairement à notre analogie avec Microsoft Word, le
stockage de la base de données Oracle est généralement placé sur un système de
stockage super résilient de type entreprise, de type SAN ou NAS .
Si vous ne savez pas ce que signifie NAS ou SAN, ne vous inquiétez pas. Il ne
revient généralement pas à l'administrateur de base de données ou à l'administrateur
de base de données de gérer la configuration réelle du système de stockage utilisé
pour la base de données Oracle. C'est pourquoi vous avez des experts en stockage
dans votre organisation. Vous les avez, non? Mais il appartient au DBA de
demander, ou plus exactement, de demander aux experts en stockage
d'allouer un stockage suffisamment puissant et hautement disponible pour notre
base de données.
Remarque rapide, SAN est synonyme de réseau de stockage qui est le type de
stockage accessible par l'infrastructure Fibre Channel tandis que NAS signifie
stockage en réseau qui est le type de stockage accessible via un
réseau, généralement Ethernet. Les deux types de stockage sont supportés
nativement par Oracle. Le stockage de base de données Oracle peut également être
placé sur un disque local tel que le disque individuel à l' intérieur de votre
ordinateur. Au lieu de connecter votre serveur Oracle à un système de stockage de
niveau entreprise, vous pouvez demander à Oracle de stocker la
base de données sur un lecteur local qui se trouve physiquement dans le serveur
Oracle.
Cependant, ce n'est pas quelque chose que vous voudriez généralement faire dans
un environnement Oracle de production , à moins que vous ne préfériez vous
réveiller à 2h00 du matin et restaurer votre base de données à partir de sauvegardes
en utilisant le disque unique pour le stockage et ce disque a juste échoué. Rappelez-
vous qu'un disque local n'a pas de tolérance de panne intégrée. C'est pourquoi nous
souhaitons placer toutes nos données Oracle sur un système de stockage centralisé,
résilient, hautement disponible, de qualité professionnelle, à ajouter à votre propre
superlatif .
Je l'ai? Protégez vos données Donc, notre point à retenir est, si votre base de
données est perdue, vos données sont perdues, votre base de données est
perdue. Ceci est, bien sûr, contrairement à l'instance Oracle qui, comme nous
l' avons mentionné, mais se répète encore une fois parce que vous savez ce qu'ils
disent, « La répétition fait pour un DBA parfait » , l'instance Oracle est utilisé pour
la mise en cache et le traitement transactionnel est recréée chaque temps que vous
redémarrez votre base de données. Donc, perdre le stockage de la base de données
en raison d'un crash de disque?C’est Très Mal! Vous devez restaurer à partir d'une
sauvegarde.
Bonne chance pour ça. Perdre l'instance Oracle parce que votre serveur de base de
données a planté? Pas de problème. Redémarrez-le et Oracle le rechargera en
mémoire.
Processus Serveur
Êtes-vous avec moi jusqu'à présent? Génial. Maintenant, détournons notre attention
vers la dernière pièce du puzzle Oracle. Le dernier des trois principaux
composants constituant l'architecture de la base de données Oracle. Ce sont les SP
Oracle, ou, dans leur nom complet, les processus serveur. Leur but, simple. Oracle
démarre les processus serveur pour gérer les demandes des processus
clients connectés à la base de données Oracle.
Un processus client, qui est essentiellement un nom sophistiqué pour appeler une
session utilisateur connectée à la base de données, communique toujours via un
processus serveur. Les processus serveur sont créés au nom d'une session qui a
initié la connexion à la base de données Oracle. Ces processus serveur effectuent
une ou plusieurs des tâches suivantes. Le premier rôle des processus serveur est de
transmettre et d'exécuter des instructions SQL émises par la session de connexion.
Ainsi, lorsqu'un utilisateur émet une instruction select, le processus serveur est
responsable de s'assurer que l'instruction select est syntactiquement correcte et de
trouver le meilleur moyen de l'exécuter. Le deuxième rôle du processus serveur
consiste à agir au nom d'une session client qui doit lire des données à partir du
disque. Le processus serveur est responsable de la lecture des données de la base
de données à partir du stockage de la base de données et du chargement de ces
données dans le cache du tampon d'instance Oracle.
Nous parlerons plus en détail du cache tampon dans notre chapitre de plongée
d'instance Oracle plus tard. Pour l'instant, tout ce que vous devez savoir est que le
cache tampon est originaire de la mémoire à l'intérieur de l'instance Oracle utilisée
pour la mise en cache des données récemment accédées. Rappelez-vous qu'Oracle
vise à être une base de données rapide, et l'un des meilleurs moyens d'y
parvenir consiste à mettre en mémoire cache les données fréquemment utilisées afin
de minimiser les débits de disque. En avançant, la troisième règle pour le processus
serveur est de renvoyer les résultats d'une instruction SQL exécutée au client.
Donc, pour résumer, les principales règles et responsabilités des processus serveur
incluent un, ils agissent au nom des sessions client pour transmettre des instructions
SQL, deux, ils lisent les données du disque et le mettent en mémoire cache, trois, ils
retournent les résultats au utilisateur. Simple, non? C'est en fait une approche très
évolutive, avec un processus de serveur dédié qui gère le traitement pour un
utilisateur spécifique.
Plus d'utilisateurs équivaut à plus de processus serveur dédiés. En plus des rôles
des processus serveur que nous venons d'examiner, notez également que chaque
processus serveur possède son propre cache dédié à chaque client connecté. Ce
cache est également connu sous le nom de PGA et représente la zone globale du
programme. Le PGA utilisé par chaque processus serveur est une région de
mémoire non partagée réservée uniquement à la session d’utilisateur
spécifique connectée à ce processus serveur spécifique.
À quoi sert le PGA? Bonne question De manière générale, il contient des données et
des informations de contrôle utilisées par les processus du serveur lors du tri des
données, la réunion de grandes tables dans le cadre d'une instruction SQL,
etc. Essentiellement, les données qui ne devraient pas persister après une session
d'utilisateur ont fini de faire ce qu'il fallait faire. Données temporaires Ceci est en
contraste direct avec les différents autres caches utilisés par l'instance Oracle elle-
même, qui sont partagés entre toutes les sessions de connexion.
Dans la plupart des déploiements Oracle, vous trouverez généralement une relation
un-à-un entre la connexion des sessions utilisateur et les processus serveur. Ainsi,
pour chaque utilisateur connecté à la base de données, vous trouverez également un
processus serveur unique. Ceci est également connu sous le nom de modèle de
processus de serveur dédié Oracle. Pouvez-vous penser à un problème avec cette
approche? Eh bien cette approche pourrait fonctionner si vous avez deux, 10 ou
peut-être 100 utilisateurs connectés à une base de données oracle.
Mais que se passe-t-il si vous avez 100 000 utilisateurs, un million d'utilisateurs qui
ont besoin d'un accès à la base de données? Avoir la base de données Oracle
démarrer un million de processus serveur pour un million de sessions utilisateur n'est
pas très efficace et peut être très exigeant en ressources du serveur Oracle. La
solution? Ce que la plupart des professionnels de la base de données choisissent de
faire est d'introduire un middleware de mise en commun des connexions quelque
part entre les utilisateurs actuels et la base de données elle-même.
Un exemple pour un tel middleware est d' avoir un serveur d'application entre les
sessions utilisateur réel et le serveur de base de données afin que nos millions
d' utilisateurs se connectent à un ou plusieurs serveurs d'applications et ces serveurs
d'applications ouvrira un ensemble fixe de connexions de base de
données, traduisant ainsi en ensemble fixe de processus de serveur de base de
données. Ainsi, dans notre exemple, nous avons beaucoup d'utilisateurs finaux qui
se connectent à un serveur d'applications, mais ce serveur d'applications n'ouvre
que deux connexions à la base de données. La base de données Oracle n'a donc
besoin que de démarrer deux processus serveur.
Très très efficace. Le serveur d'application agit ici comme un pool de connexion pour
les utilisateurs. Il n'est pas très important pour vous de bien comprendre
le fonctionnement de la mise en commun des connexions à ce stade, mais vous
saurez qu'en raison de la relation utilisateur un à un avec la relation de processus
serveur d'Oracle, la mise en commun des connexions est incontournable. en cas de
besoin.
Piscine Commun
Maintenant, il est temps de jeter un coup d'œil à l'intérieur du SGA et d'obtenir le
prénom avec toutes ces caches individuelles. Commençant avec la piscine
partagée, et non, je ne veux pas dire le même genre de piscine que vous partagez
avec vos collègues vacanciers tout en restant à votre station balnéaire
préférée. Dans un contexte Oracle, le pool partagé est le domaine le plus important à
l'intérieur de la SGA qui est utilisé pour mettre en cache les données non-
utilisateur. Autrement dit, d'autres choses que les lignes de base de données
réelles de nos tables réelles.
Alors, qu'est-ce qu'il y a à cache autre que des lignes, vous pouvez demander? Eh
bien, il existe diverses autres constructions de bases de données qui, si elles sont
partagées entre les utilisateurs, accéléreraient les performances de diverses activités
de base de données. Pour ce faire, le pool partagé, en lui-même, est divisé en un
autre sous-ensemble de caches. S'il vous plaît, supportez avec moi. Je ne veux pas
que tu aies peur. Rappelez-vous la hiérarchie. Nous avons l'instance Oracle. À
l'intérieur, nous avons un composant logique appelé SGA.
Lors de la configuration de la base de données, nous définissons la taille de la
SGA. Comme, je veux que mon SGA, dans son ensemble, occupe 64 gigaoctets de
RAM. À l'intérieur du SGA, nous avons une zone de mémoire appelée Pool partagé
utilisée pour mettre en cache la construction de base de données qui ne sont pas
des lignes réelles de nos tables. Et à l'intérieur du pool partagé, nous avons plusieurs
autres sous-domaines, chacun avec son propre but. Les principaux sont le cache de
dictionnaire de données Oracle et le cache de bibliothèque.
Le cache de dictionnaire de données est une collection de tables et de vues de base
de données gérées par Oracle contenant des informations de référence sur la
structure de la base de données et ses utilisateurs. Fondamentalement, les
métadonnées sur la base de données. Considérez-le comme le lieu de mise en
cache des informations de contrôle essentielles au fonctionnement de la base de
données Oracle. La base de données Oracle accède fréquemment au dictionnaire de
données. Plus précisément, chaque fois qu'un utilisateur exécute une requête de
suite, de nombreuses métadonnées sont nécessaires pour qu'une suite de requête
s'exécute correctement.
Les métadonnées, telles que les informations d'intégrité référentielle, les définitions
et la structure des tables, les informations d'annexe, etc. Maintenant, alors que ces
données sont également stockées sur ce dernier dans le cadre de l'espace de table
système Oracle, plus sur cela plus tard, Oracle met également ces données en
mémoire cache pour améliorer les performances. C'est là que le cache de
dictionnaire de données entre en jeu. Se déplaçant le long! Le cache de la
bibliothèque est une autre zone à l'intérieur d'un pool partagé.
Oracle utilise le cache de bibliothèque pour stocker les informations mises en
cache sur chaque instruction de suite exécutée. Pourquoi voudriez-vous faire
ça? Simple. Lorsque vous exécutez une instruction de suite, la base de données
Oracle a beaucoup de travail à faire. Avant même de commencer
à exécuter l'instruction elle - même, il doit analyser l'instruction, créer ce qu'on
appelle un plan d'exécution, ce qui est fondamentalement la façon dont la base
de données Oracle détermine la meilleure façon de récupérer les données requises
par la déclaration de suite, par exemple comme quels index utiliser.
Ce processus d'analyse peut prendre un peu de temps. Combien de temps? Eh bien,
généralement quelques secondes par déclaration de suite, mais quand beaucoup
d'utilisateurs exécutent beaucoup d'instructions de suite en parallèle, cela peut
représenter beaucoup de travail de CPU pour une base de données. Oracle, étant
une base de données efficace et tous, va essayer de mettre en cache l'état analysé
de l'instruction suite en mémoire de sorte que ces deux utilisateurs exécutent la
même instruction de suite.
L'analyse complète de la suite ne doit avoir lieu qu'une seule fois. Seulement quand
le premier utilisateur a exécuté une déclaration de suite. La première exécution d'une
instruction suite à une suite est connue sous le nom d'analyse syntaxique, et elle est
considérée comme l'analyse la plus exigeante en ressources qui puisse se produire
pour n'importe quelle instruction de suite donnée. Les exécutions ultérieures de la
même suite, en supposant qu'elle soit identique, même lorsqu'elles proviennent
d'utilisateurs différents, peuvent utiliser la présentation déjà analysée de l'instruction
suite conservée en mémoire.
Où? Tu l'as deviné. À l'intérieur du cache de la bibliothèque. Ceci est connu comme
une analyse douce, et il est considéré comme un événement beaucoup plus léger et
beaucoup moins exigeant en termes de ressources . Le deuxième utilisateur pourra
utiliser la version déjà analysée de l'instruction suite conservée en mémoire. Vous
serez surpris de constater à quel point les performances de la base de
données peuvent être améliorées lorsqu'une déclaration de suite passe à une
analyse par défaut, comparée à une analyse syntaxique stricte.
Surtout quand vous considérez une base de données de production avec des
centaines ou des milliers d'exécutions de suites chaque seconde. Cela prend
beaucoup de temps. Tu sais ce que je dis. Chaque centime va un long chemin. Cela
complète les principaux composants du pool partagé Oracle contenu dans le
SGA. Ceux-ci étaient le cache de dictionnaire de données et le cache de
bibliothèque. Il y a quelques caches supplémentaires dans le pool partagé, mais ils
ne sont pas aussi importants du point de vue du cours d'introduction, et nous n'en
discuterons pas aujourd'hui.
Le Tampon de journalisation
Nous amusons-nous à explorer l'instance Oracle? Rappelez-vous, nous avons une
instance Oracle; à l'intérieur, nous avons un composant SGA qui regroupe différents
types de caches en mémoire qu'utilise Oracle; chacun de ces caches en mémoire est
utilisé pour stocker différentes informations pour une meilleure
performance. Maintenant, il est temps de passer au tampon RedoLog; un autre
élément essentiel de la SGA. Le tampon RedoLog est un tampon circulaire qui
stocke les informations relatives aux modifications apportées à la base de données.
N'ai-je pas simplement dit que le cache tampon et le pool partagé sont ceux utilisés
pour mettre en cache les données de base de données et les métadonnées
respectivement? Pourquoi avons-nous besoin d'un autre cache en mémoire pour les
modifications de la base de données? Eh bien, la réponse est que le tampon
RedoLog est spécifiquement conçu pour stocker quelque chose connu comme des
entrées de rétablissement. Les entrées de rétablissement sont de petits
enregistrements qui reflètent toutes les modifications apportées à la base de
données dans le cadre de transactions ou de changements de structure de base de
données, également connus sous le nom de DML; commandes de langage de
modification de données et DDL; commande de langage de définition de données.
Pensez à refaire les entrées en tant que vecteurs de changement de base de
données. Les entrées de rétablissement sont utilisées pour la récupération de
la base de données quand et si nécessaire. Ces entrées de rétablissement
contiennent les informations nécessaires pour reconstruire ou refaire, d'où le nom,
les changements qui ont eu lieu dans la base de données au cas où la base de
données échouerait à mi-chemin pendant une transaction. Les entrées de
rétablissement sont considérablement plus petites comparées aux blocs de base de
données réels qui sont stockés dans le cache de tampon.
Une dernière chose importante avant de passer à autre chose; les entrées du journal
Redo dans le tampon RedoLog sont également écrites sur une base périodique à un
ensemble de fichiers dans notre base de données Oracle appelée Redo logs, mais
plus sur cela plus tard. Essayons donc de décrire ce qui se passe
lorsqu'un utilisateur modifie des données dans une transaction. Les modifications
apportées aux lignes de la base de données sont appliquées à la fois aux lignes
elles-mêmes qui sont mises en cache dans le cache du tampon, mais également aux
entrées de restauration spéciales qui sont générées et stockées dans le tampon
RedoLog.
Rappelez-vous, ce sont des vecteurs de changement de base de données. Pour
chaque ligne qui est modifiée et votre entrée de rétablissement est créée dans le
tampon RedoLog, parce que les entrées de rétablissement contiennent juste les
changements; ils sont beaucoup plus petits et peuvent être écrits sur le disque à un
rythme beaucoup plus rapide comparé à l'écriture du contenu de blocs de base de
données entiers à partir du cache tampon. Ainsi, lorsqu'un utilisateur s'engage à
s'assurer que la transaction est sécurisée sur notre base de données, il ne suffit pas
de contenir de la mémoire que vous connaissez déjà ; les entrées de rétablissement
pour cette transaction spécifique seront écrites sur le disque de manière
synchrone et immédiatement lorsque l'utilisateur émet la commande Commit.
Immédiatement après, l'utilisateur recevra une notification que la transaction a été
stockée; c'est maintenant sûr sur notre base de données de stockage. Il suffit
qu'Oracle ait les entrées de rétablissement pour une transaction stockée sur le
disque pour qu'il soit cohérent. Pas besoin d'attendre que tous les blocs de la base
de données du cache contenant les lignes réelles modifiées par la transaction à
écrire sur le disque, ainsi. Cela peut être écrit de manière asynchrone en arrière-
plan. Ainsi, notre message à emporter est le suivant: Lorsque les utilisateurs
modifient les données, les blocs de la base de données réels sont modifiés dans le
cache tampon, mais les entrées de refaire sont également générées dans RedoLog
Buffer (en tandem).
Lorsqu'un utilisateur décide de valider une transaction et de la stocker de manière
permanente sur un disque, tout ce qu'Oracle doit faire est de s'assurer que les
entrées de restauration du journal de redo sont écrites sur le disque. Ce sont de
petits ensembles de données car ils représentent uniquement le vecteur des
modifications apportées aux lignes et non les lignes entières elles-mêmes. Les blocs
de base de données modifiés réels dans le cache du tampon seront également écrits
sur le disque, mais de manière asynchrone car ils sont beaucoup plus gros et plus
lents. Si la base de données échoue immédiatement après la fin d'une transaction ,
de sorte que seules les entrées de restauration de la transaction ont été stockées sur
le disque, la base de données Oracle peut utiliser ces entrées pour rétablir la
transaction. et assurez-vous qu'aucune donnée ne sera perdue.
Solution très intelligente pour équilibrer les performances et la résilience. Ne dirais-tu
pas?
Autre POOL SGA Et PGA
Woof. C'était une longue explication pour un si petit composant de l'instance Oracle,
littéralement. Le plus grand composant du SGA est généralement le cache
tampon. Comme il met en cache les données réelles lues à partir du disque. Dans
les lignes, beaucoup de lignes de, vous le savez, des tables, beaucoup, et beaucoup
de tables. Le deuxième cache le plus grand dans le SGA est généralement le pool
partagé. Il stocke la présentation passée des instructions simples ainsi que des
métadonnées. Cela nous laisse avec le tampon RedoLog.
Habituellement, ce qui en fait le plus petit des composants majeurs de la SGA. Mais
hélas, nous n'avons pas encore fini. Bare avec moi pendant quelques minutes alors
que nous passons brièvement en revue plusieurs autres composants SGA. Certains
d'entre eux ne sont pas aussi importants pour notre administration quotidienne de la
base de données Oracle que le pool partagé, le cache tampon et le tampon
redolog. Mais nous avons encore besoin de connaître leurs fonctions dans le
SGA. Suivant sur notre liste de composants SGA à gogo est la grande piscine.
Nous n'entrerons pas dans beaucoup de détails car le grand pool n'est pas aussi
important que le cache tampon, le pool partagé ou le buffer redolog que nous avons
décrit plus haut. Signalons brièvement que le grand pool contient de la
mémoire utilisée par des fonctionnalités spéciales d'Oracle. Tels que les transactions
distribuées, les processus de serveur partagé, c'est en fait la mise en commun de
connexions quand c'est fait du côté de la base de données, si vous choisissez de le
faire. Et les opérations de sauvegarde et de restauration Oracle. es-tu encore avec
moi? Êtes-vous sûr? Bien.
Les deux derniers composants composant un SGA complet sont le pool java, qui est
utilisé pour stocker tout le code java spécifique à la session et les données dans une
JVM spéciale et un pool de flux. Ce qui fournit de la mémoire pour les processus de
flux Oracle. Mais encore une fois les deux sont bien en dehors du cadre de notre
cours. Bon zoom arrière de tous ces composants individuels SGA, nous négligerions
si nous ne mentionnons pas le PGA à nouveau. Rappelez-vous les processus de
serveur dont nous avons parlé au cours de notre premier chapitre? Ces processus
serveur ou SP sont créés pour chaque session utilisateur connectée à la base de
données.
Ils effectuent le passage de suite, ils lisent les données du disque et ils renvoient les
résultats à l'utilisateur. Donc, sans connexion, tirer deux sessions
utilisateur connectées à notre base de données signifiera deux processus
serveur oracle . Un pour chaque session d'utilisateur. Chaque fois qu'une session
utilisateur a besoin d'une tranche de mémoire privée, elle obtient son propre PGA,
également appelé zone globale privée. Le PGA est utilisé par les clients se
connectant à la base de données comme une sorte de staging ou temporaire dans la
zone de mémoire contenant diverses informations d'exécution sur les curseurs de
suite ainsi que la mémoire utilisée pour des opérations de suite plus lourdes telles
que classées par, jointures , etc.
Ainsi, chaque session d'utilisateur obtient son propre PGA dédié et le contenu de
cette PGA existe uniquement pour la durée de cette session. Lorsqu'un client se
déconnecte, un PGA spécifique est effacé. Comment contrôlons-nous la quantité de
PGA que chaque utilisateur obtient? Est-ce que l'oracle décide? Fait-il partie de notre
taille SGA? Et bien non. Nous utilisons un seul paramètre pour contrôler la quantité
de mémoire PGA disponible sur toutes les sessions connectées. Chaque session
recevra une tranche de mémoire dédiée à partir de la taille globale de PGA que nous
avons configurée.
Basé sur la demande, et la disponibilité. Nous utilisons le paramètre PGA global
target pour contrôler la quantité totale de mémoire PGA disponible sur toutes les
sessions.
LOG WRITER
Passons au processus d'arrière-plan suivant dans notre liste. Celui-ci est appelé
LGWR, qui est l'abréviation de log writer. Comme son nom l'indique, il s'agit du
processus d'arrière-plan d'Oracle chargé d'écrire des enregistrements de
rétablissement à partir de la mémoire tampon de journalisation de restauration et sur
un disque physique. Regardons de plus près. Le processus d'écriture de journal est
responsable de la gestion du tampon de journalisation. Il le fait en écrivant les
enregistrements du tampon du journal de rétablissement dans un fichier journal de
rétablissement sur le disque.
La façon dont l'enregistreur de journalisation fonctionne fonctionne en écrivant toutes
les entrées de rétablissement qui ont été accumulées dans la mémoire tampon du
journal depuis la dernière écriture sur le disque. Le rédacteur du journal de reprise
peut démarrer et coordonner plusieurs processus d'assistant d'écriture de
journalisation qui peuvent effectuer une partie du travail en même temps pour le
rédacteur du journal de reprise. Ceci est fait dans des occasions où le rédacteur de
journal de rétablissement peut tirer bénéfice de plusieurs opérations
concurrentes. Ces scénarios exacts sortent du cadre de notre cours, mais ne vous
inquiétez pas.
Ils ne sont pas cruciaux pour votre compréhension de l'architecture de la base de
données Oracle. Étant donné que le tampon de journalisation est circulaire, chaque
fois que le consignateur écrit à partir du tampon de journalisation et sur les fichiers
journaux de restauration, les processus du serveur Oracle peuvent écrire de
nouvelles entrées sur les entrées précédentes dans le tampon de journalisation. Mais
encore une fois, seulement après que ces enregistrements de journalisation aient été
écrits avec succès sur le disque. Le processus d'écriture de journal écrit assez
rapidement pour s'assurer que l'espace est toujours disponible dans la mémoire
tampon pour les nouvelles entrées.
Parlons maintenant de ce qui déclenche l'écriture du journal sur le disque. Tout
d'abord, bien, chaque fois qu'une session d'utilisateur valide, ce qui signifie que
l'utilisateur demande à la base de données d'enregistrer la transaction et de
s'assurer que les modifications effectuées par cette dernière transaction sont
stockées de manière sûre et sécurisée. Cela déclenchera l'enregistreur de journal
pour écrire le contenu de la mémoire tampon du journal redo de la mémoire dans les
fichiers journaux redo sur le disque. Comme je l'ai mentionné précédemment, les
changements correspondants aux lignes contenues dans les blocs de données dans
le cache tampon sont différés jusqu'à ce qu'il soit plus efficace de les écrire.
Rappelez-vous, c'est ce que le processus d'écriture de base de données est
pour. Ce mécanisme consistant uniquement à écrire de manière synchrone
des entrées de restauration sur le disque s'appelle le mécanisme Oracle Fast
Commit. Le deuxième déclencheur qui provoque l'écriture des enregistreurs de
journal, et il est très important, est quand un changement de journal se produit. Nous
n'avons pas beaucoup parlé des journaux de redo Oracle après ce point, donc c'est
une excellente occasion de faire la lumière sur ce que sont les journaux de redo et
comment le processus d'arrière-plan de l'enregistreur de journal les écrit.
Le journal de rétablissement d'une base de données consiste en deux ou plusieurs
fichiers journaux de rétablissement. C'est une exigence difficile. La base de données
nécessite un minimum de deux fichiers pour garantir que l'un est toujours disponible
pour l'écriture pendant que l'autre est en cours d'archivage. Qu'est-ce que l'archivage
d'un journal de rétablissement, vous pouvez demander. Eh bien, c'est
essentiellement le processus de copie périodique des fichiers de journalisation à
un emplacement sûr et sécurisé à des fins de sauvegarde. Parce que les journaux de
rétablissement contiennent des informations sur toutes les transactions qui ont été
effectuées dans la base de données, ils sont instrumentaux si jamais il est
nécessaire de récupérer la base de données à partir d'une sauvegarde.
La copie des journaux de rétablissement dans un emplacement sécurisé est
effectuée automatiquement par l'instance Oracle. Il y a en fait un autre processus
d'arrière-plan dédié responsable de cela. C'est ce qu'on appelle le processus
d'archivage, et nous en reparlerons plus loin dans notre chapitre. Quoi qu'il en soit,
alors revenons à l'écrivain de journalisation. Donc, comme je l'ai mentionné, nous
avons besoin d'un minimum de deux fichiers de journalisation. Nous avons
généralement trois ou plus dans une base de données Oracle de production
réelle. L'enregistreur de journal écrit dans les fichiers de journalisation de manière
circulaire.
Lorsque le fichier journal en cours est rempli avec des données, l'enregistreur de
journaux commence à écrire dans le fichier journal de reprise disponible suivant. Une
fois que le fichier journal redo est également plein, l'enregistreur de journalisation
redo passe au fichier journal suivant. Lorsque le dernier fichier de journalisation
disponible est rempli, le processus de journalisation revient au premier fichier
journal et y écrit à nouveau, en commençant le cycle depuis le début. Un autre
déclencheur pour l'enregistreur de journal de réécriture pour écrire dans les fichiers
de journalisation sur le disque est que le tampon de journalisation lui-même est
rempli au 1/3 ou contient au moins un mégaoctet de données.
Mais nous n'avons pas encore fini. Un autre déclencheur pour le processus de
journalisation redo à écrire est juste avant que le processus d'arrière-plan de l' auteur
de la base de données n'écrive également sur le disque. Tu te souviens de ce
mec? Le processus DBW de notre vidéo précédente. Notez que l'enregistreur de
journal écrit dans les fichiers journaux de rétablissement sur le disque pendant que
l'auteur de la base de données écrit dans les fichiers de données sur le disque. Nous
parlerons du stockage de la base de données Oracle et de tous les différents types
de fichiers utilisés par la base de données Oracle dans notre prochain chapitre.
Alors, pourquoi l'enregistreur de journal doit-il écrire des entrées de restauration sur
le disque avant que l'auteur de la base de données puisse écrire un bloc modifié de
la mémoire sur le disque? En effet, tous les enregistrements de restauration associés
à des modifications apportées à une ligne de base de données spécifique contenue
dans un bloc en mémoire doivent d'abord être écrits sur le disque avant que le bloc
lui-même puisse être écrit. Et notre déclencheur final provoquant l' écriture du
processus d'arrière-plan de l'enregistreur de journal à partir du tampon de
journalisation en mémoire sur le disque est probablement le plus simple.
Toutes les trois secondes Oui, l'enregistreur de journal écrira tout le contenu du
tampon de journalisation de la mémoire dans les fichiers de journalisation du disque
toutes les trois secondes
CHECKPOINT.
Le processus d'arrière-plan suivant dans notre liste est le processus de point de
contrôle, ou CKPT en bref. Ce processus gère les points de contrôle de la base de
données. Nous avons discuté brièvement des points de contrôle de la base de
données lorsque nous avons parlé du processus de base de l'auteur de base de
données, mais faisons un récapitulatif rapide. Un point de contrôle Oracle est un
événement de base de données qui synchronise les blocs de données modifiés en
mémoire à partir du cache tampon avec les fichiers de données sur le disque. C'est
un événement qui se produit régulièrement lorsque la base de données Oracle
déclare un état de cohérence interne, une cohérence interne entre les modifications
qui ont été effectuées en mémoire et les données qui ont été écrites sur le disque.
Un point de contrôle a deux objectifs. L'une consiste à établir la cohérence des
données entre la mémoire et le disque, et l'autre est d'activer un processus de
récupération de base de données plus rapide. Les points de contrôle sont un
élément crucial dans la récupération de base de données. Plus nous avons de blocs
de bases de données qui ont été modifiés en mémoire mais qui ont également été
écrits sur le disque, moins nous devons compter sur les journaux de rétablissement
pour la récupération. Lorsqu'un point de contrôle se produit, la base de données
Oracle doit mettre à jour les en-têtes de tous les fichiers de données pour enregistrer
que le nouveau point de contrôle s'est effectivement produit.
Ceci est fait par le processus d'arrière-plan appelé CKPT. Chaque point de contrôle
de base de données génère un identificateur séquentiel unique
appelé numéro SCN ou numéro de modification du système. Ce numéro séquentiel
est enregistré par le processus CKPT dans les en-têtes du fichier de base de
données. Notez que le processus CKPT n'écrit pas les blocs de données réels de la
mémoire sur le disque. C'est ce à quoi sert l'auteur de la base de données. Le SCN
est enregistré dans les deux fichiers de données Oracle qui, bien, contiennent les
données réelles de notre base de données, ainsi que dans un ensemble spécial de
fichiers connus sous le nom de fichiers de contrôle Oracle.
Chaque base de données Oracle possède un fichier de contrôle, qui est un petit
fichier binaire qui enregistre la structure physique de la base de données. Par
structure physique, je veux dire que le fichier de contrôle conserve une trace de
l'emplacement, c'est-à-dire, le nom ou le chemin de certains fichiers dans le stockage
Oracle, pas les noms des tables ou des colonnes. C'est une structure logique. Nous
parlerons plus de fichiers de contrôle dans notre prochain chapitre.
PROCESSUS SMON
Le processus suivant dans notre liste de processus d'arrière-plan Oracle est le
processus System Monitor. Ce processus en arrière-plan effectue une récupération
au cours de la séquence de démarrage de l'instance Oracle si nécessaire. Donc là
vous l'avez. Il n'y a pas grand-chose à dire sur le processus du System Monitor. Il fait
un travail avec diligence. Oh, encore une chose avant d'aller de l'avant. Le processus
System Monitor est également responsable du nettoyage des segments temporaires
inutilisés.
Par exemple, si la base de données Oracle alloue un espace temporaire pour faciliter
la création d'un nouvel index et que cette opération échoue, le processus Moniteur
système nettoie et récupère cet espace temporaire
Processus PMON
Le processus suivant dans notre liste de processus d'arrière-plan Oracle est le
processus System Monitor. Ce processus en arrière-plan effectue une récupération
au cours de la séquence de démarrage de l'instance Oracle si nécessaire. Donc là
vous l'avez. Il n'y a pas grand-chose à dire sur le processus du System Monitor. Il fait
un travail avec diligence. Oh, encore une chose avant d'aller de l'avant. Le processus
System Monitor est également responsable du nettoyage des segments temporaires
inutilisés.
Par exemple, si la base de données Oracle alloue un espace temporaire pour faciliter
la création d'un nouvel index et que cette opération échoue, le processus Moniteur
système nettoie et récupère cet espace temporaire
Processus RECO
nous faisons vraiment de grands progrès. Nous avons passé en revue la plupart des
processus d'arrière-plan d'Oracle avec seulement trois autres à faire. Continuons à
bouger. Notre processus d'arrière-plan suivant est le processus RECO, qui
représente le processus de récupération. Le processus de récupération est un
processus d'arrière-plan utilisé dans le cadre de transactions de base de données
distribuées. Les transactions distribuées sont des transactions qui impliquent
plusieurs bases de données et doivent valider une restauration sur les deux bases
de données à la fois.
Une transaction distribuée ne doit pas être autorisée à réussir uniquement sur une
base de données unique. Par exemple, supposons que nous ayons deux bases de
données. Base dedonnées A et base de données B. Une transaction distribuée est
exécutée, demandant de modifier les données sur les deux bases de données,
en commençant par la base dedonnées A. Comme la transaction est en cours
d' exécution sur la base de données A, il commence des lignes de mise à jour de
la base de données locale A. La transaction est également exécutée sur la base de
données distante, base de données B, mise à jour des lignes locales à la base de
données B.
Si, lors de la mise à jour de la base de données B, la transaction a échoué, elle sera
marquée comme une transaction en attente ou échouée et doit être nettoyée sur les
deux bases de données. Le processus RECO gère cette tâche et résout
automatiquement toutes les défaillances de ces transactions distribuées. Il se
connectera automatiquement aux autres bases de données impliquées dans de
telles transactions douteuses ou échouées et supprimera toutes les lignes affectées
par la transaction.
Processus LREG
Le processus LREG, ou processus d'enregistrement des auditeurs, est suivi
de notre visite du processus d'arrière-plan Oracle . Le processus LREG joue un rôle
très direct dans l'architecture de la base de données Oracle. Il est responsable de
l'enregistrement de l'instance Oracle auprès du programme d'écoute du réseau
Oracle. Attends quoi? L'écouteur Oracle? Eh bien, c'est nouveau. Oui, ça
l'est. L'écouteur du réseau Oracle, souvent réduit à un simple écouteur Oracle ou
même simplement à un auditeur, est le processus responsable de l' acceptation des
connexions entrantes distantes et du démarrage des processus serveur Oracle
requis pour desservir ces connexions.
Oui, c'est vrai, nous avons déjà parlé de la manière dont les sessions individuelles
des utilisateurs se connectant à une base de données Oracle recevront un
processus de serveur dédié pour effectuer les diverses tâches en leur
nom. Cependant, nous n'avons pas encore parlé de la manière dont les
utilisateurs ouvrent réellement une connexion à une base de données Oracle. C'est
là que l'auditeur entre en jeu. Nous avons un chapitre complet dédié à l'écoute du
réseau Oracle, ainsi que la gestion des connexions client, mais pour l'instant, il suffit
de dire que les utilisateurs distants qui veulent se connecter à la base de données
Oracle doivent d'abord se connecter au programme d'écoute Oracle.
Immédiatement après cette connexion, l'écouteur Oracle est chargé de générer un
nouveau processus de serveur pour cet utilisateur et de passer la connexion entre
l'utilisateur et le processus de service. Le processus LREG est responsable de
l'enregistrement des informations sur l'instance de base de données en cours
d'exécution avec le programme d'écoute du réseau Oracle, de sorte que le
programme d'écoute Oracle sache qu'une instance Oracle est opérationnelle sur ce
serveur. Lorsque l'instance Oracle démarre, le processus LREG tente de se
connecter à l'écouteur.
Si le programme d'écoute est en cours d'exécution, le processus LREG enregistre
l'instance avec le programme d'écoute Oracle. Notez que nous avons utilisé ORCL
comme nom de l'instance Oracle dans notre exemple. Chaque instance Oracle a
besoin d'un nom. Nous le configurons lorsque nous créons l'instance. ORCL est un
nom par défaut commun utilisé pour les instances Oracle génériques. Nous verrons
exactement comment nommer une instance lorsque nous créerons notre propre base
de données Oracle plus tard dans le cours
Processus ARCn
Nous l'avons fait. Le processus d'arrière-plan Oracle final pour nous
d'examiner. Vous devriez vraiment vous féliciter d'être allé aussi loin. Je sais que ce
n'était pas facile, mais je suis sûr que ça valait le coup. Comme la compréhension de
ce qui se passe à l'intérieur de l'instance Oracle, derrière le rideau, est très
importante pour un expert en base de données Oracle. Heureusement, votre
provision de café frais n'est pas encore épuisée, car le processus de fond Oracle que
nous devons couvrir est également l'un des plus importants. C'est le processus
d'archivage ou ARCn pour faire court.
Similaire au processus de déplacement de la base de données, le processus
d'archivage a également la lettre n dans son nom. C'est parce que nous pouvons
démarrer plus d'unprocessus d'archivage si nécessaire. Nous verrons pourquoi dans
un instant. Le but du processus d'archivage est très simple. Il est responsable de
copier les fichiers journaux de redo Oracle sur un périphérique de stockage
distant après qu'un commutateur de journalisation a été effectué. Le processus
d'archivage copiera le fichier de journalisation et le placera sur tout stockage externe
de votre choix.
Là-bas, le journal de rétablissement sera sûr au cas où la base de données et le
système de stockage principal auquel il est connecté ont échoué. La copie de la
base de données reloge sur un autre système de stockage est très importante du
point de vue de la sauvegarde et de la récupération. Rappelez-vous, les fichiers
relog contiennent un enregistrement de toutes les transactions exécutées dans notre
base de données. Si nous plaçons une copie de chacun de nos fichiers relog de
base de données immédiatement après leur écriture, et souvenez-vous que les
fichiers relog sont écrits de manière cyclique, dans un endroit sûr.
Nous pouvons ensuite utiliser ces copies de journalisation pour réappliquer les
transactions après avoir restauré notre base de données à partir d'une sauvegarde
statique. Nous utilisons essentiellement ces fichiers relog archivés pour faire
avancer la base de données jusqu'à un moment donné. Et oui, comme je l'ai
mentionné au début, si vous prévoyez une lourde charge de travail en écriture, vous
pouvez ajouter des processus d'archivage supplémentaires à votre base de
données. Il peut également y avoir plusieurs destinations de journaux d'archivage à
des fins de redondance. De cette façon, chaque copie archivée du journal de
rétablissement est stockée dans plusieurs emplacements.
Félicitations pour l'avoir fait aussi loin dans le cours. Vous commencez probablement
à vous sentir comme un véritable expert Oracle maintenant. Nous avons en fait
terminé une partie importante de notre cours, qui consiste à examiner l'instance
Oracle et tous ses composants. N'oubliez pas que l'instance Oracle est la moitié en
mémoire de la base de données Oracle, s'exécutant dans la RAM du serveur,
mettant en cache les données et traitant les demandes des utilisateurs. L'autre
moitié, dont nous parlerons maintenant plus en détail, est le stockage de données
Oracle ou les fichiers de base de données Oracle.
Le stockage de base de données Oracle est la représentation persistante sur disque
de la base de données Oracle. Rappelez-vous, c'est là que vos données résident en
tant que fichiers sur le disque. C'est à partir de là que le serveur Oracle traite les
données lues, et c'est ici que le rédacteur de la base de données Oracle ainsi que
l'auteur du journal écrivent des lignes modifiées. Tu veux que je te dise un secret très
connu? Le stockage de la base de données Oracle n'est pas constitué d'un fichier ou
même d'un type de fichier.
Comme vous l'avez déjà deviné, Oracle gère différents types de fichiers sur disque à
des fins différentes. Rappelez-vous que lorsque nous avons parlé de l'instance
Oracle, nous avons mentionné que différents caches en mémoire sont utilisés pour
différents types de données. De même, Oracle conserve différents fichiers sur disque
à des fins différentes. Ce que vous voyez sur votre écran en ce moment, ce sont tous
les types de fichiers qu'Oracle utilise. Lorsque vous regardez dans le répertoire sur
votre système de stockage où vous avez configuré votre base de données Oracle
pour résider, vous verrez réellement ces fichiers.
Pourquoi Oracle a-t-il besoin de tant de types de fichiers uniques? Eh bien, c'est une
excellente question. Pour vous donner un exemple, certains de ces fichiers, tels que
les fichiers de données, stockent nos données de base de données réelles. D'autres
fichiers, tels que les fichiers journaux redo, contiennent un enregistrement de toutes
les transactions qui ont été validées afin que l'instance Oracle puisse se rétablir
correctement en cas de panne ou de redémarrage. En revanche, le journal des
alertes est le journal des erreurs de la base de données. C'est ici que vous trouverez
des informations sur diverses conditions ou erreurs survenues pendant l'exécution de
votre base de données.
C'est le fichier que vous allez surveiller pour vous assurer que votre base de
données fonctionne bien, mais ce n'est que la pointe de l'iceberg. Commençons à
examiner les fichiers de stockage de base de données Oracle un par un.
Oracle a des tablespaces très spéciales qu'il créera automatiquement dès la sortie
de la boîte lors de l'installation. Oracle utilise ces tablespaces pour
diverses raisons. Passons en revue eux. Les deux premiers espaces de
table créés par Oracle sont les espaces table SYSTEM et SYSAUX. Le take-away
ici? Ce ne sont pas pour nous, ne créez pas vos propres tables à l' intérieur de ces
tablespaces spéciaux. L'espace de table SYSTEM, par exemple, contient l'intégralité
du dictionnaire de données Oracle.
Toutes les métadonnées de notre base de données sont stockées dans l'espace
table SYSTEM. Si vous perdez l'espace de table SYSTEM, vous perdez la totalité de
votre base de données. C'est important comme ça. Nous avons également un
espace de table spécialconnu sous le nom de tablespace UNDO. Il est également
géré par la base de données Oracle et ne nous est pas destiné à créer des
tables. Que fait l'espace de table UNDO? Eh bien, chaque base de données Oracle a
une méthode de conservation des informations qui est utilisée pour annuler ou
annuler des modifications dans la base de données.
Par exemple, que se passe-t-il si un utilisateur a modifié une ligne, que les données
dans la base de données ont changé, puis que l'utilisateur a décidé d'annuler la
transaction? C'est supporté bien sûr. Toutes les transactions dans une base de
données relationnelle telle qu'Oracle peuvent être annulées jusqu'à ce qu'un
utilisateur effectue une validation. Ce qui se passe réellement est que pendant la
transaction, Oracle stocke automatiquement les versions précédentes des blocs qui
ont été modifiés dans le cadre des transactions dans le tablespace UNDO.
Ainsi, lors d'une restauration, Oracle peut restaurer les versions précédentes de ces
lignes à partir de l'espace table UNDO et dans le tablespace d'origine. Le tablespace
UNDO est également utile lorsqu'un utilisateur met à jour des données et, comme
mentionné, lors de la mise à jour, les versions précédentes des lignes
affectées seront copiées dans l'espace table UNDO. Le premier utilisateur n'a pas
encore validé les données, peut-être que la transaction est toujours en
cours, peut - être en mettant à jour beaucoup de lignes.
Mais maintenant un autre utilisateur se connecte à la base de données et essaie de
lire les mêmes lignes qui sont en cours de mise à jour par cet autre utilisateur. Ce qui
se passera réellement, c'est que le deuxième utilisateur aura directement ces blocs
à partir du tablespace UNDO. C'est vrai, le deuxième utilisateur verra les lignes dans
leur version précédente, au moins jusqu'à ce que le premier utilisateur a commis une
transaction. Enfin, la base de données Oracle dispose également d'un
espace table TEMP utilisé pour stocker les tables temporaires dans lesquelles les
données ne doivent pas être conservées après le redémarrage d'une instance et
utilisées lorsque les instructions SQL utilisent lourdement le tri des données ou
JOINs et manquent d'espace. mémoire à l'intérieur d'un PGA.
Fichiers de contrôle
Il est maintenant temps de discuter du but du fichier de contrôle du stockage de
base de données Oracle. Chaque base de données Oracle possède un fichier de
contrôle unique qui contient des données sur la base de données elle-même. Cela
semble drôle, mais je ne plaisante pas. Le fichier de contrôle contient des
informations sur les propriétés physiques de la base de données, les propriétés telles
que les noms de bases de données, les noms et emplacements des fichiers de
données et les fichiers redolog appartenant à cette base de données,
les informations de point de contrôle, etc.
En passant, par les noms et les emplacements des fichiers de données et
des fichiers de redolog, je veux dire que le fichier de contrôle stocke en fait le chemin
complet d'où les fichiers de données et les fichiers redolog existent sur le
disque. Lorsqu'une instance Oracle démarre, elle doit connaître l'emplacement du
fichier de contrôle afin de savoir où se trouvent les fichiers de données et les fichiers
de redolog . Ce n'est qu'après que l'instance de base de données a lu le fichier de
contrôle qu'il sera capable de lire les fichiers de données et les fichiers redolog et de
poursuivre sa séquence de démarrage normale.
Oracle a intégré le support pour le multiplexage de fichiers de contrôle. Des copies
identiques multiples du fichier de contrôle peuvent être maintenues pour se protéger
contre la perte de la base de données. Rappelez-vous, sans le fichier de
contrôle, l'instance de base de données ne saura pas où chercher les fichiers
redolog et les fichiers de base de données, donc les fichiers de contrôle sont
essentiels pour le démarrage de la base de données. Et la meilleure chose à propos
du multiplexage de fichiers de contrôle? Nous n'avons pas à le faire nous-
mêmes. Oracle s'en occupera pour nous. Nous pouvons simplement demander à la
base de données Oracle de conserver plusieurs copies de nos fichiers de contrôle,
de préférence dans plusieurs emplacements, et Oracle s'occupera du reste.
En raison de la nature critique des fichiers de contrôle, ils sont également très
importants du point de vue de la sauvegarde. À chaque fois que vous sauvegardez
votre base de données, veillez à sauvegarder vos fichiers de base de données, vos
fichiers de redolog, ainsi que vos fichiers de contrôle. Ils sont tous requis pour que
l'instance Oracle puisse démarrer correctement.
Fichiers de sauvegarde
Pour la dernière partie de notre discussion Oracle Database Storage, parlons de
quelques autres types de fichiers de base de données que vous devriez
connaître. En commençant par les fichiers liés aux sauvegardes de base de
données. Les fichiers de sauvegarde de base de données incluent toutes les
sauvegardes de votre base de données que vous avez prises et placées dans un
endroit sûr, ainsi que les copies des fichiers journaux de rétablissement créés par le
processus d'archivage de base de données. Il existe de nombreuses technologies
que vous pouvez utiliser pour sauvegarder votre base de données Oracle. Ils sont en
dehors du cadre de notre cours, mais du point de vue du stockage de base de
données, il est toujours très important de mentionner les fichiers de sauvegarde de
base de données quand on parle de stockage de base de données.
Nous pouvons supposer qu'au moins une fois dans votre carrière, vous serez chargé
de restaurer une base de données Oracle de l'échec. Espérons juste que ce n'est
qu'une seule fois. Lorsque vous effectuez une sauvegarde de votre base de données
Oracle, l'état cohérent de la base de données utilisée pour la récupération s'appelle
les fichiers de sauvegarde de la base de données. Ce sont généralement des copies
des fichiers de données de votre base de données, des journaux de rétablissement
et du fichier de contrôle.Ce sont les fichiers de stockage de base de
données actuellement utilisés par votre base de données. Sans ces fichiers inclus
dans votre sauvegarde, vous ne pourrez pas restaurer votre base de données dans
un état cohérent.
Les fichiers journaux redo archivés sont également très importants du point de vue
de la sauvegarde de la base de données. Ce sont les fichiers créés par le processus
d'arrière-plan Oracle Archiver . Parce que les fichiers de journalisation contiennent
des informations sur toutes les transactions qui ont été effectuées dans notre base
de données, elles sont essentielles si vous avez besoin de restaurer votre
base de données à partir d'une sauvegarde à un moment précis. C'est pourquoi il est
essentiel de copier les journaux de restauration et de les stocker dans un
emplacement de sauvegarde sûr et sécurisé , car ces copies archivées des journaux
de rétablissement peuvent être utilisées lors de la récupération de la base de
données.
Examinons de plus près comment vous pouvez utiliser les fichiers de sauvegarde de
base de données Oracle pour restaurer votre base de données. Supposons que
votre base de données fonctionnait normalement à 14h00. Vous avez pris une
sauvegarde complète de la base de données à 14h00. Cette sauvegarde a pris deux
heures à compléter. La sauvegarde s'est terminée à 16h00 mais contient une
sauvegarde cohérente de votre base de données à partir de 14h00. En effet, une
sauvegarde Oracle sera toujours cohérente jusqu'au moment où elle a été prise.
Vous avez pris une autre sauvegarde de base de données parce que vous êtes un
DBA Oracle très diligent, mais cette fois à 16h00. Cette sauvegarde a également pris
deux heures complètes à compléter. La deuxième sauvegarde était donc prête à
18h00, mais contenait une image cohérente de la base de données à partir de
16h00. C'est à ce moment que la sauvegarde a été démarrée. Prenez tout. Assurez-
vous que vous êtes avec moi jusqu'à ce point. En supposant qu'il est maintenant
22h00, et votre base de données vient de planté, vous voulez le récupérer.
Vous devez le récupérer. Alors bonne nouvelle, en tant qu'ADN Oracle diligent, vous
avez pris une sauvegarde de votre base de données à partir de 16h00. Utilisons
cette sauvegarde pour restaurer notre base de données. Cette sauvegarde pourrait
juste sauver la journée. Attendez. Attendez. Un problème majeur. Votre base de
données a été restaurée, mais dans l'état où la sauvegarde complète a été
effectuée, soit 16h00. La base de données s'est bloquée à 22h00. Qu'est-il advenu
de toutes les données générées par les utilisateurs et stockées dans votre base de
données entre 16h00 et 22h00? Devrions-nous, je ne sais pas, paniquer? Non, pas
besoin de paniquer.
Si vous avez vos copies archivées de refaire, qui se souviennent, contiennent une
copie de vos transactions de base de données dans un endroit sûr et
accessible, nous devrions avoir la plupart des changements qui ont été appliqués à
la base de données entre 16h00, l'heure de notre dernière sauvegarde a été prise, et
22h00, l'heure actuelle, le moment où la base de données s'est écrasé. Nous
pouvons donc utiliser les vecteurs de modification de la base de données ou les
entrées de restauration stockées dans ces fichiers de journalisation redo
archivés pour faire avancer notre base de données vers l'heure actuelle.
La base de données restaurée à partir de la sauvegarde peut utiliser ces fichiers
journaux redo archivés pour effectuer une opération dite de récupération aval et
refaire les transactions perdues. Refaire. C'est pourquoi on les appelle des journaux
de rétablissement. La base de données utilisera ces journaux de restauration
archivés pour appliquer toutes les transactions qui se sont produites après la
sauvegarde complète et juste avant l'arrêt brutal de notre base de données.
Arret
Nous avons une histoire similaire pour arrêter l'instance Oracle. Aller d'un état de
base de données en cours à un ... Eh bien, pas en cours d'exécution. Nous avons
plusieurs méthodes ou modes d'arrêt de la base de données que vous pouvez
utiliser. Ces différents modes déterminent la propreté de la procédure d'arrêt de la
base de données par rapport à la durée nécessaire. Commencer avec la commande
SHUTDOWN ABORT. Si nous exécutons la commande SHUTDOWN ABORT, la
base de données Oracle passe immédiatement d'un état ouvert ou en état à un état
désactivé.
Toutefois, en raison de sa nature brute, la base de données ne sera pas cohérente
lors de l'arrêt. Et lorsque vous redémarrerez la base de données, Oracle devra
utiliser les fichiers journaux de rétablissement pour effectuer une récupération
automatique après un accident. C'est similaire à tirer la fiche de la base de données
Oracle. Cela peut sembler effrayant, mais tant que vous n'avez pas de corruptions
dans les fichiers de données de votre base de données ou dans les journaux de redo
manquants, cela devrait vous convenir. Le mode SHUTDOWN ABORT est
généralement utilisé lorsqu'il n'y a pas d'autre méthode pour arrêter l'instance qui
fonctionne.
Le mode d'arrêt suivant est le mode SHUTDOWN IMMEDIATE. Si vous exécutez
cette commande dans votre invite Oracle SQL, Oracle interrompt toutes les sessions
utilisateur ouvertes. Attendez que toute transaction non validée ait été annulée, puis
arrêtez la base de données pendant qu'elle conserve un état cohérent. C'est une
méthode d'arrêt plus lente que SHUTDOWN ABORT, mais beaucoup plus sûre. La
base de données effectuera un point de contrôle avant de fermer
l'instance. Cependant, du point de vue de l'utilisateur, leurs sessions seront
brusquement interrompues et toutes les données ou transactions non sauvegardées
seront perdues.
Le prochain mode d'arrêt de la base de données s'appelle SHUTDOWN
TRANSACTIONAL. Lorsque vous tapez cette commande dans l'invite Oracle
SQL, Oracle attend que toutes les transactions existantes terminent le traitement et
que les utilisateurs s'engagent ou annulent la transaction avant d'arrêter la base de
données. Cependant, les nouveaux utilisateurs ou les nouvelles sessions ne
pourront pas se connecter. Ce type d'arrêt peut prendre un certain temps car la base
de données ne sera pas déconnectée tant que tous les utilisateurs n'auront pas
terminé leur travail.
Il est également très non-perturbateur pour les utilisateurs déjà connectés. Et le
dernier mode d'arrêt de la base de données s'appelle SHUTDOWN NORMAL, ce qui
signifie qu'Oracle attendra que tous les utilisateurs ou sessions connectés se
déconnectent de la base de données avant de l'éteindre. C'est l'option d'arrêt la plus
lente, mais elle sera totalement non intrusive pour vos utilisateurs et vos
applications. Donc, là vous l'avez: les quatre façons différentes d'obtenir votre base
de données Oracle d'un état en ligne à un état hors ligne.
La plupart des administrateurs de base de données utilisent l'option SHUTDOWN
IMMEDIATE plus souvent. La principale raison est que lorsque vous fermez la base
de données en utilisant SHUTDOWN IMMEDIATE, SHUTDOWN TRANSACTIONAL
ou SHUTDOWN NORMAL, la base de données sera cohérente sur le disque après
l'arrêt. Donc, au démarrage, aucune récupération n'aura lieu. Tout bloc modifié de la
mémoire sera écrit sur le disque avant que la base de données ne tombe en
panne. C'est pourquoi ces modes d'arrêt prennent également plus de temps.
Vous pouvez appeler ces méthodes d'arrêt en tant que méthodes d'arrêt
propres. Comparez cela à l'option SHUTDOWN ABORT, qui est une méthode d'arrêt
incorrecte car l'instance de la base de données s'arrête juste brusquement. Certains
blocs Oracle modifiés en mémoirene pourront pas être gravés sur des disques. Ainsi,
au démarrage, Oracle devra utiliser les journaux de rétablissement pour effectuer
une récupération automatique après un accident.
L'instance de base de données Oracle est configurée via une longue liste de
paramètres d'initialisation stockés dans le fichier SPFILE de la base de données ou
dans le fichier de paramètres du serveur. Rappelez-vous que c'est un fichier binaire
qui contient la configuration de l'instance. La modification des paramètres peut être
effectuée à l'aide de l'interface Oracle SQL * Plus. Allons de l'avant et modifions une
partie du paramètre d' instance Oracle en commençant toujours par se connecter à
la base de données en tant qu'utilisateur DBA sys.
SQL * Plus comme DBA sys. Nous pouvons afficher la valeur actuellement
configurée pour un paramètre Oracle spécifique en exécutant la commande
show space parameter, puis le nom du paramètre. Tels que SGA soulignent la
cible. Nous voyons que dans ma base de données, j'ai le paramètre de cible de
soulignement SGA configuré avec une valeur d'environ 1400 mégaoctets.
Nous pouvons aussi taper show, parameter, SGA underscore, appuyer sur enter, et
voir les valeurs de tous les paramètres commençant par SGA. Tels que les deux
soulignent la cible SGA, ainsi que le paramètre de taille de soulignement max de
soulignement SGA. La valeur d'un paramètre est définie via la commande alter
system set.
Par exemple, définissons la valeur de la cible de soulignement SGA en tapant alter,
system, set, SGA, underscore target, équivaut à 1000 mégaoctets ou un
gigaoctet. Donc, je diminue la taille disponible pour le SGA, espace, je vais devoir
suivre cette commande avec un argument de portée égale .
Où nous pouvons spécifier soit la mémoire, qui modifiera temporairement le
paramètre dans l'instance, et il sera réinitialisé à la valeur précédente après un
redémarrage. Je peux également spécifier SPFILE, ce qui signifie que le paramètre
ne sera stocké dans le fichier SPFILE et ne prendra effet qu'après un redémarrage
de l'instance. Ou, je peux spécifier les deux, ce qui signifie que le paramètre sera à la
fois dynamiquement modifié en mémoire et stocké dans le fichier SPFILE, de sorte
qu'au redémarrage, la nouvelle valeur prendra effet.
Jetons un coup d'œil à la valeur de la cible SGA après avoir effectué une
modification. Afficher le paramètre SGA soulignant la cible. Et vous pouvez voir que
nous avons une nouvelle valeur en vigueur. N'oubliez pas qu'Oracle arrondit parfois
les valeurs pour les paramètres de mémoire. Alors que le fichier SPFILE est un
fichier binaire, vous ne pouvez donc pas le modifier manuellement, mais uniquement
modifier les paramètres à l'aide de l'interface SQL * Plus ou Oracle Enterprise
Manager par exemple. Vous pouvez exporter le fichier SPFILE dans un fichier texte .
Nous pouvons le faire en tapant create, PFILE, qui signifie fichier de
paramètres. Stockons-le dans le répertoire de base de l'utilisateur Oracle
Linux. Ainsi, les guillemets slash slash maison slash Oracle, et donnons-lui un nom
comme mon soulignement PFILE dot ora guillemets, à partir de SPFILE. Oh, mon
mal! Notez que j'ai spécifié l'emplacement du fichier de paramètres à l'aide de
guillemets doubles; Cependant, Oracle s'attend à des guillemets simples.
Modifions donc la commande pour utiliser des guillemets simples à la place. mon
PFILE dot ora de SPFILE. Ah, nous l'avons. Comme vous pouvez le voir, Oracle a
créé un fichier PFILE à partir de notre fichier SPFILE. Jetons un coup d'oeil à
l'intérieur de notre PFILE. Pour ce faire, nous devons quitter SQL * Plus, aller dans
notre répertoire de base Oracle, taper ls, et comme vous pouvez le voir, nous
avons créé un fichier monogramme PFILE dot ora .
Jetons un coup d'oeil à l'intérieur du fichier et voyons son contenu. Alors écrivez
l'espace de chat mon PFILE dot ora, appuyez sur Entrée, oh et c'est une longue liste
de paramètres que vous avez là. Le fichier PFILE contient une liste de tous
les paramètres d'instance Oracle actuellement configurés . Nous pouvons rechercher
un paramètre spécifique en tapant l'espace de chat mon soulignement PFILE dot
ora, et en passant la commande grep, comme la cible de soulignement SGA grep.
Rappelez-vous ce paramètre? Nous l'avons juste modifié. Donc là vous l'avez. Nous
pouvons facilement afficher et définir les paramètres d'instance Oracle à l'aide de
l'interface de ligne de commande SQL * Plus et exporter le fichier de configuration
Oracle binaire, ou SPFILE,dans un fichier texte, afin qu'il soit lisible par l'utilisateur.
Oracle est intégré avec un super utilisateur appelé Sys. La connexion à Sys à partir
de SQL Plus nécessite soit l' ajout de sysdba au suffixe, tel que sqlplus sys / le mot
de passe, qui est oracle dans mon cas, et sysdba. Cela ouvrira une connexion à
l'instance Oracle en tant qu'utilisateur sys ou sysdba le plus puissant.
Alternativement, nous pouvons simplement taper sqlplus, guillemets, comme
sysdba, et être connecté à l'instance avec l'utilisateur sys, sysdba. Nous n'avons pas
besoin de fournir un mot de passe spécifique à l'utilisateur sys, uniquement parce
que nous sommes physiquement connectés au même serveur que l'instance
Oracle. De plus, nous exécutons SQL Plus à partir de l'utilisateur Oracle Linux, qui
est l'utilisateur qui a démarré l'instance Oracle.
C'est la seule raison pour laquelle nous pouvons ignorer le mot de passe d'un
utilisateur aussi puissant lors de la connexion à la base de données. Une connexion
avec sys depuis n'importe quelle autre machine de notre réseau vers notre base de
données, nous aurait demandé de fournir le mot de passe. La création d'utilisateurs
supplémentaires dans Oracle est également extrêmement simple. Pour créer des
utilisateurs, nous devons d'abord nous connecter en tant qu'utilisateur sys, en tant
qu'utilisateur le plus puissant de notre base de données, car cet utilisateur a la
permission de créer d'autres utilisateurs.
Donc, assurez-vous que vous exécutez les commandes que je suis sur le point de
vous montrer avec l'utilisateur sys Oracle. Alors créons un nouvel utilisateur de base
de données. Par exemple, tapons create user et tapez un nom tel que
melissa. Identifié par, Identifié par, et tapez un mot de passe, comme, vous savez
quoi, mot de passe. Colon, entrez, utilisateur créé.
Cependant, avant que cet utilisateur puisse faire quoi que ce soit, même se
connecter à la base de données, nous devons lui donner des permissions. Chaque
opération dans Oracle requiert une autorisation spécifique pour y être associée. Par
exemple, si je veux me connecter à la base de données en utilisant l'utilisateur
melissa que je viens de créer, j'obtiendrai une erreur. Quittons SQL Plus et
tapez, sqlplus, melissa, mot de passe, et entrez.
Oh, cet utilisateur ne peut pas se connecter à la base de données. Comme vous
pouvez le voir, Oracle a renvoyé l'erreur utilisateur melissa n'a pas le privilège de
création de session, ouverture de session refusée, alors réparons cela. Ouvrons à
nouveau SQL Plus, en tant qu'utilisateur sysdba, et accordons l'autorisation
manquante à notre utilisateur melissa. Donnons donc grant, créez une session à
melissa.
Nous l'avons. Essayons de nous connecter à nouveau avec l'utilisateur
melissa. sqlplus, melissa, mot de passe, et maintenant nous sommes en mesure
d'établir une connexion à la base de données. Cependant, que pensez-vous qu'il se
passera si nous essayons de créer une table pendant que nous sommes connectés
en tant qu'utilisateur melissa? Des paris? Essayons. Créer une table, test_table1.
Donnons-lui une seule colonne. Colonne un, numéro un. Essayons de créer cette
table de test. Oh, nous avons une autre erreur. Privilèges insuffisants. C'est parce
que j'ai accordé à l'utilisateur melissa une permission de connecter la base de
données mais pas d'action. Alors réparons ça aussi. Je quitte SQL Plus et me
reconnecte en tant qu'utilisateur sysdba. Cette fois, fournir à l'utilisateur melissa deux
autorisations supplémentaires.
Accordez un espace de table illimité, ce qui permettra à l'utilisateur melissa d'utiliser
autant de stockage d'espace de table que nécessaire et également le privilège create
table de mélissa. Notez que je peux fournir plusieurs privilèges dans la même
déclaration de subvention. Appuyez sur entrer. Grant a réussi. Et connectons en
utilisant l'utilisateur melissa. Notez que je peux également ouvrir une nouvelle
connexion tout en étant directement connecté à SQL Plus.
Je n'ai pas besoin de quitter SQL Plus et de l'ouvrir à nouveau chaque fois que je
veux changer d'utilisateur. D'accord, je suis connecté avec l'utilisateur
melissa. Essayons d'exécuter la même commande qui a échoué précédemment. Es-
tu prêt? Essayons. Eh bien, nous y voilà. Table créée avec succès. Dans Oracle,
chaque utilisateur est également appelé schéma, nous pouvons donc référencer les
tables créées par cet utilisateur en préfixant le nom d'utilisateur au nom de la table.
Reconnectez-vous en tant qu'utilisateur sysdba et tapez select * depuis
le point melissa . Notez que c'est l'utilisateur que je viens de créer et le nom de la
table, test_table1. Maintenant, la table n'a pas encore de ligne, donc je ne m'attends
pas à recevoir des résultats, mais je m'attends aussi à ne pas recevoir un message
d'erreur m'indiquant que la table n'existe pas.
Alors essayons. Oh, on y va. La sélection a été exécutée avec succès, mais m'a
donné un message me disant qu'aucune ligne n'est retournée. C'est parce que la
table existe, mais elle est fondamentalement vide. Vraiment, vraiment
simple. Souvenez-vous que c'est ainsi que vous pouvez référencer les tables qui ont
été créées par un utilisateur d'un autre utilisateur. Si j'omets le préfixe melissa et que
je tape simplement * from test_table1, j'obtiens une erreur car je suis maintenant
connecté avec l'utilisateur sys et l'utilisateur sys ne possède pas de table appelée
test_table1.
La suppression d'un utilisateur est également super simple. Nous pouvons
simplement taper la commande drop melissa de l' utilisateur . Cependant, comme cet
utilisateur possède également une table, je dois également spécifier un mot-clé
cascade dans ma commande. Donc j'ai besoin de taper drop user
melissa cascade. Cela supprimera l'utilisateur, mais supprimera également toutes les
tables, index, toutes les données avec des objets créés par cet utilisateur.
Et avant de terminer cette vidéo, laissez-moi vous montrer une autre chose
intéressante à propos des utilisateurs et de la sécurité dans Oracle. Ouvrons à
nouveau SQL Plus en tant qu'utilisateur sys et parlons des rôles de base de
données. Nous pouvons regrouper plusieurs privilèges à l' intérieur de ce qui est
connu dans Oracle en tant que rôle et les accorder à un utilisateur. Par exemple,
créons le rôle de connexion et de création, donc nous allons taper, créer un
rôle connect_and_create et accorder des privilèges à ce rôle, comme grant create
table to connect_and_create, qui est mon nom de rôle.
Notez qu'Oracle n'est pas sensible à la casse lorsqu'il s'agit de commandes
système. Accordons un autre privilège au rôle connect_and_create, tel que
grant create session, qui est le privilège Oracle qui permet aux utilisateurs de se
connecter à la base de données connect_and_create. Maintenant, je peux accorder
ce rôle, connect_and_create, à un utilisateur, et en faisant cela, l'utilisateur aura
essentiellement les permissions contenues dans ce rôle.
À titre d'exemple, accordons connect_and_create à notre utilisateur hr. Là nous
allons, très, très simple. N'oubliez pas d'utiliser souvent des rôles pour simplifier
l' octroi d'autorisations généralement accordées aux utilisateurs, c'est tout, c'est le
concept des utilisateurs et des rôles dans une base de données Oracle.
Dictionnaire de données
Le fichier journal des erreurs de la base de données Oracle s'appelle le journal des
alertes. Il contient une liste chronologique des événements, erreurs, avertissements,
tout ce qui s'est passé dans la base de données depuis sa création. C'est l'aller au
fichier quand un DBA doit résoudre les problèmes d'infrastructure de la base de
données Oracle. Le fichier journal des alertes est un fichier texte que nous pouvons
facilement ouvrir avec n'importe quel éditeur de texte. Commençons par
rechercher l'emplacement du journal d'alerte.
Il est placé dans un sous-répertoire de notre répertoire de base Oracle. Nous
pouvons voir la valeur de notre répertoire de base de soulignement Oracle en tapant
echo $ Oracle_BASE dans l'invite Linux. Rappelez-vous que les variables
d'environnement telles que la base Oracle ainsi que d'autres doivent être configurées
par le DBA. Alors allons-y et ouvrez le répertoire de base Oracle.
Cd / u01 / app / oracle. Dans le répertoire de base Oracle, nous avons un sous-
répertoire appelé diag court pour les diagnostics. Allons dans ce répertoire. Sous le
répertoire diag, nous devrons aller dans le sous - répertoire SGBDR car nous
recherchons le journal des erreurs ou le fichier journal des alertes de la base de
données.
RDBMS est synonyme de système de gestion de base de données
relationnelle. Dans le répertoire RDBMS, nous avons un autre sous-répertoire appelé
ORCL ou le nom de notre base de données, alors allons-y. Et à l'intérieur d'ORCL
nous avons aussi un autre sous-répertoire appelé ORCL, car c'est le nom de notre
instance Oracle. Alors allons dans celui-là aussi. Maintenant, dans le deuxième
répertoire ORCL, nous avons un sous-répertoire appelé Trace.
Ce répertoire contient à la fois le fichier journal des alertes ainsi que de nombreux
fichiers de trace qui sont des fichiers incidents créés lors d'erreurs spécifiques dans
la base de données Oracle. Nous sommes spécifiquement intéressés par le fichier
journal d'alerte. Alors ouvrons ce fichier en utilisant la commande Linux less. Tapons
moins alert_orcl., Qui est le nom de notre instance, .log et appuyez sur Entrée.
Nous y avons, le contenu du fichier journal d'alerte de base de données ou le fichier
journal des erreurs. Toute erreur, message ou message d'information ou message
d' avertissement, tout événement survenu dans notre base de données depuis sa
création est documenté dans ce fichier. Nous pouvons faire défiler vers le bas en
utilisant soit la touche espace et voir une longue liste d'événements. Tout ce qui est
arrivé dans notre base de données.
Tels que la création de la base de données elle-même. Ou nous pouvons également
utiliser les flèches du clavier pour faire défiler vers le haut et vers le bas. Lorsqu'une
erreur Oracle est survenue, une erreur qui exige habituellement que nous fassions
attention, elle inclura également un code d'erreur Oracle. Chaque erreur Oracle a un
code d'erreur spécifique. Les codes d'erreur Oracle commencent par un préfixe
ORA. Cherchons donc les erreurs dans notre fichier journal d'alerte.
Pour ce faire, tapons / ORA-enter. Comme nous pouvons le voir, nous avons
plusieurs erreurs Oracle. Chaque type d'erreur avec son propre code d'erreur
unique tous préfixés par ORA - dans notre fichier journal d'alerte. Nous pouvons
appuyer sur la touche de fin de clavier pour avancer entre ces erreurs. Ne vous
inquiétez pas de ces erreurs, car il s'agit simplement d'un environnement
d'entraînement local.
Nous pouvons quitter le dernier éditeur de texte en appuyant sur Q sur le
clavier. Rappelez-vous, il incombe à l'administrateur de base de données de
surveiller le fichier journal des alertes pour déceler toute erreur qui aurait pu
survenir lors du fonctionnement de la base de données. Il y a beaucoup d'outils qui
peuvent être utilisés pour accomplir cela et vous savez ce qu'ils disent, "A chacun
son". Notez également qu'il est de la responsabilité de DBA de nettoyer
régulièrement le répertoire des journaux et les fichiers de trace contenu dans, car
ceux - ci peuvent consommer un peu d'espace au fil du temps et que vous ne voulez
pas que vos serveurs de base de données ne parce que vos disques ont couru hors
de l' espace en raison de fichiers journaux.
Veillez donc à surveiller la taille de vos répertoires de journaux Oracle et prenez
l'habitude de surveiller fréquemment le contenu du fichier journal des alertes de la
base de données.