Une BD Oracle est constituée de la base proprement dite ainsi que d'une ou plusieurs instances. La base désigne le stockage de la donnée tandis que l'instance représente l'ensemble des processus et de la mémoire requis pour faire tourner le serveur de BD.
Les fichiers clés mis en place pour le stockage des données sont:
- Les fichiers de controle: Contiennent des meta-données(metadata) qui permettent de décrire l'architecture physique de la base de données(son nom ou encore l'emplacement des data files i.e).
- Les fichiers de données (data files): Contient les données conservées i.e les tables, les index, etc...
- Les fichiers de journalisation en ligne( online redo log files): Track les changements d'informations dans la base et tient une entrée pour chaque modification effectuée.
En dehors de ces fichiers indispensables, on retrouve d'autres fichiers comme:
- Les fichiers de mots de passe
- Les fichiers de sauvegarde(backup files)
- Les fichiers de paramètres
- Les fichiers de journalisation archivés
- Les fichiers de journalisation en ligne
- And a lot more... # Mais c'est l'essentiel déja, je crois.
Retenez juste ceci: (TABLESPACES (SEGMENTS (EXTENTS (BLOCKS)))) En somme, les tablespaces renferment les segments qui renferment les extents qui renferment les blocks.
On distingue la SGA(Shared Global Area) et la PGA(Program Global Area) en termes de mémoires. La première est partagée et contient des informations relatives a l'instance en cours d'exécution. La seconde est une mémoire spéfique allouée à chaque session initiée et détruite à la fin de la session.
Des processus qui tournent dans une instance Oracle, ceux qui sont essentiels sont:
- Database Writer (DBWn): Il reporte en asynchrone, les données modifiées dans le cache de la base de données, au niveau du systéme de fichiers (data files).
- Log Writer (LGWR): Il écrit le tampon de journalisation(logs) dans un fichier de journalisation en ligne, dans l'un des cas suivants:
- Quand une transaction est validée
- Quand 1/3 du tampon est plein
- Toutes les 3s
- Avant l'action du DBWn
- Checkpoint (CKPT): Enregistre dans les entetes des fichiers de controle et de données, les infos sur les points de reprises. Il crée des identifiants uniques(SCN System Check Number) pour chaque buffer modifié (le SCN doit avoir d'autres fonctions aussi)
- System Monitor (SMON): Effectue les opérations nécéssaires à la reprise de l'instance(e.g recovery d'une instance qui a échouée) ainsi qu'a l'extinction de l'instance(e.g supprimer les fichiers temporaires)
- Process Monitor (PMON): Régule les autres processus de l'instance. Il s'assure que le processus d'écoute est relié à l'instance et shutdown les processus de connexion anormaux.
PS: Les process vitaux sont au nombre de 06, soit l'un m'a échappé; soit il est mis ci-dessous.
On distingue d'autres process comme:
- Archiver (ARCn): Il se charge d'archiver les fichiers de journlisation vers un emplacment donné. Il réécrase ledit emplacement s'il est plein, à moins qu'on ne le change.
- Recoverer (RECO): Intervient lorsque la base est configurée pour fonctionner en mode distribué.
-- Arreter la base a la deconnexion du dernier user connecté
SHUTDOWN NORMAL
-- ou gracefully (la methode souvent utilisée)
SHUTDOWN IMMEDIATE
-- ou dès que toutes transactions en cours sont COMMITées ou ROLLBACKed
SHUTDOWN TRANSACTIONAL
-- ou un peu comme si vous débranchiez carrément le serveur. Arrete la base automatiquement, a l'instant.
SHUTDOWN ABORT
-- Monter la base en mm temps
STARTUP
-- Etapes par etapes
STARTUP NOMOUNT -- demarre sans monter la base
ALTER DATABASE MOUNT -- monte la base
ALTER DATABASE OPEN -- autorise les connexions a la base
-- Dans la version la plus simple
CREATE TABLESPACE nom_tablespace
DATAFILE 'chemin/vers/le/fichier/de/donnee/' SIZE 20M;
-- Avec configuration de la gestion des extents
CREATE TABLESPACE nom_tablespace
DATAFILE 'chemin/vers/le/fichier/de/donnee/' SIZE 20M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
PS: Je n'ai pas encore testé les commandes mais elles devraient etre justes et aussi, vous devriez tester. Y a pas mieux que la pratique pour retenir. Pour une spéc complete sur la syntaxe de creation de tablespaces, voir la doc.
-- Nom de la base
SELECT name FROM v$database;
-- Nom de la machine hote
SELECT host_name FROM v$instance;
-- Version d'ORACLE
SHOW RELEASE;
-- Emplacement des fichiers de controle
SELECT * FROM v$controlfile; -- Faites un DESC pour voir le champ précis
-- Emplacement des fichiers de journalisation
SELECT * FROM v$logfile; -- DESC
-- Emplacment fichiers de donnees
SELECT file_name FROM dba_data_files;
-- ou
SELECT * FROM v$datafile; -- DESC
-- Création d'une séquence
CREATE SEQUENCE seq_123
START WITH 0
INCREMENT BY 1; -- Forme simple [0, +infini] par bond de 1
-- Options possibles --
-- increment by interval between the numbers
-- start with first number needed
-- maxvalue Maximum value for the sequence
-- nomaxvalue Maximum value is defaulted
-- minvalue minimum value for the sequence
-- nominvalue minimum value is defaulted
-- cycle Reset to the start after reaching this value
-- nocycle Default
-- cache Preallocation limit
-- nocache Default
-- order Guarantee the order of numbers
-- noorder default
-- Privilèges
-- On distingue les privilèges systèmes et ceux utilisateurs
-- La liste des privilèges sys se retrouve dans la table SYSTEM_PRIVILEGE_MAP
-- La chaine d'heritage n'est pas brisée lorsque vous retirez l'option `WITH ADMIN OPTION` pour un privilege sys.
-- Donc si C transmet a B un privilège systeme, parce que A le lui a donné avec l'option `WITH ADMIN`, retirer le droit à C ne le retire pas à B.
-- Par contre, si c'est un privilège user, la chaine est rompue et tout le monde perd le privilège.
GRANT CREATE SESSION TO user;
GRANT CREATE SESSION TO user WITH ADMIN OPTION;
REVOKE CREATE SESSION FROM user;
-- On distingue aussi les privilèges objets qui accordent un droit sur un objet comme e.g créer une procédure dans un schéma
GRANT INSERT ON fake_table TO user; -- Exemple accordant le droit d'écriture sur une table
# Processus d'écoute
lsnrtcl start # Demarrage
lsnrtcl stop
lsnrtcl status # Donne l'état actuel du processus d'écoute
# DB COnsole
emctl start dbconsole
emctl stop
- 127.0.0.1
- https://www.oracletutorial.com/
- https://techgoeasy.com/create-user-system-privileges-object-privileges/#Oracle_System_Privileges
- https://goalkicker.com/OracleDatabaseBook/ (Si vous tenez vraiment a devenir DBA, document complet mais avec une structure particuliere)
- Son fameux QCM :), c'est probable que ce soit ça notre devoir. Non, c'est mm ça. Ou pas (-_-).