Vous êtes sur la page 1sur 5

DOSSIER 2 – GESTION DES BD : ORACLE ET PL/SQL

Question 1
Réalisez une fonction en langage pl/sql
CREATE OR REPLACE FUNCTION Qtable(PC$Table IN VARCHAR2, PC$ClauseWhere IN VARCHAR2)
RETURN INTEGER IS
LN$Total INTEGER;
BEGIN
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || PC$Table || ' WHERE ' || PC$ClauseWhere
INTO LN$Total;
RETURN LN$Total;
EXCEPTION
WHEN OTHERS THEN
RETURN 0; -- Gestion des erreurs, retourne 0 en cas de problème
END;

Exemple d’utilisation
DECLARE
LN$Total INTEGER;
BEGIN
LN$Total := Qtable('MaTable', 'MonChamp = ''valeur''');
DBMS_OUTPUT.PUT_LINE('Nombre d''occurrences : ' || LN$Total);
END;

Question 2
la procédure insert_into_table en utilisant le package DBMS_SQL :
CREATE OR REPLACE PROCEDURE insert_into_table (table_name VARCHAR2,
deptnumber NUMBER, deptname VARCHAR2, location VARCHAR2) IS stmt
VARCHAR2(200); cur INTEGER; rows_inserted INTEGER; BEGIN stmt := 'INSERT INTO '
|| table_name || ' values (:deptno, :dname, :loc)';
cur := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(cur, stmt, DBMS_SQL.NATIVE);
DBMS_SQL.BIND_VARIABLE(cur, ':deptno', deptnumber);
DBMS_SQL.BIND_VARIABLE(cur, ':dname', deptname);
DBMS_SQL.BIND_VARIABLE(cur, ':loc', location);
rows_inserted := DBMS_SQL.EXECUTE(cur);
DBMS_SQL.CLOSE_CURSOR(cur);
IF rows_inserted = 1 THEN DBMS_OUTPUT.PUT_LINE('1 row inserted successfully.');
ELSE DBMS_OUTPUT.PUT_LINE('No rows inserted or more than 1 row inserted.'); END
IF;
EXCEPTION WHEN OTHERS THEN DBMS_SQL.CLOSE_CURSOR(cur); RAISE; END;
Question3
Le NDS (Nested Database Subquery) et le package DBMS_SQL sont deux fonctionnalités
différentes qui peuvent être utilisées dans le contexte d'un système de gestion de base de
données (DBMS). Voici les avantages et les inconvénients de chacun par rapport à l'autre :

Avantages du NDS par rapport au package DBMS_SQL :


1. Syntaxe simplifiée : Le NDS permet d'écrire des requêtes imbriquées de manière plus claire
et plus concise que le package DBMS_SQL, ce qui facilite la lecture et la compréhension du
code.
2. Optimisation automatique : Le NDS peut bénéficier des optimisations automatiques du
moteur de base de données, ce qui signifie que le DBMS peut choisir la meilleure façon
d'exécuter la requête en fonction des statistiques et de la structure de la base de données.
Cela peut conduire à des performances améliorées.

Inconvénients du NDS par rapport au package DBMS_SQL :


1. Limitations syntaxiques : Le NDS peut avoir des limitations syntaxiques qui restreignent les
types de requêtes que vous pouvez écrire. Par exemple, il peut ne pas prendre en charge
certaines opérations complexes ou certaines fonctionnalités spécifiques du DBMS.
2. Moins de flexibilité : Le NDS est conçu pour simplifier l'écriture de requêtes imbriquées, mais
cela peut aussi signifier qu'il y a moins de flexibilité pour manipuler les résultats ou effectuer
des opérations avancées. Le package DBMS_SQL offre généralement une plus grande
flexibilité en permettant un contrôle plus fin sur l'exécution des requêtes.

Avantages du package DBMS_SQL par rapport au NDS :


1. Flexibilité : Le package DBMS_SQL offre une flexibilité maximale pour construire et exécuter
des requêtes dynamiques. Vous pouvez construire des requêtes de manière
programmatique et manipuler les résultats de diverses manières.
2. Contrôle complet : Le package DBMS_SQL vous permet de contrôler finement l'exécution
des requêtes en spécifiant les paramètres, en liant des variables et en gérant les curseurs de
manière plus détaillée.

Inconvénients du package DBMS_SQL par rapport au NDS :


1. Complexité accrue : Le package DBMS_SQL a une syntaxe plus complexe et nécessite une
connaissance plus approfondie du SQL dynamique et du fonctionnement interne du DBMS.
Cela peut rendre l'écriture et la maintenance du code plus difficiles.
2. Performances potentiellement réduites : En raison de sa flexibilité accrue, le package
DBMS_SQL peut parfois être moins performant que le NDS, car il ne peut pas bénéficier des
mêmes optimisations automatiques du moteur de base de données.

En fin de compte, le choix entre le NDS et le package DBMS_SQL dépend des besoins
spécifiques de votre application et du compromis entre simplicité et flexibilité/contrôle.
Question 4
Définissez « OFA », son objectif et ses avantages

OFA (Optimized Fused-Multiply-Add) est une technique d'optimisation utilisée dans


la conception des processeurs et des accélérateurs matériels pour améliorer les
performances et l'efficacité énergétique des calculs. Son objectif principal est
d'accélérer les opérations de multiplication suivies d'une addition (Multiply-Add) qui
sont couramment utilisées dans de nombreux calculs numériques, tels que les calculs
matriciels et les calculs de convolution.
Les avantages de l'utilisation de l'OFA sont les suivants :
1. Performance accrue : L'OFA combine les opérations de multiplication et d'addition en
une seule instruction matérielle, ce qui réduit le nombre total d'instructions
exécutées. Cela permet d'accélérer les calculs et d'améliorer les performances
globales.
2. Efficacité énergétique : En réduisant le nombre d'instructions nécessaires pour
effectuer des calculs, l'OFA permet de réduire la consommation d'énergie associée.
Cela est particulièrement avantageux dans les environnements où l'efficacité
énergétique est une préoccupation importante, tels que les appareils mobiles et les
centres de données.
3. Réduction de la latence : En exécutant les opérations de multiplication et d'addition
en parallèle, l'OFA réduit la latence globale des calculs. Cela se traduit par des temps
de réponse plus rapides dans les applications qui effectuent des calculs intensifs.
4. Amélioration de la précision numérique : L'OFA peut également être utilisé pour
améliorer la précision numérique des calculs en réduisant les erreurs d'arrondi. En
combinant les opérations de multiplication et d'addition dans une seule instruction,
les erreurs introduites par les arrondis sont minimisées, ce qui conduit à des résultats
plus précis.
En résumé, l'OFA est une technique d'optimisation matérielle qui permet d'accélérer
les calculs de multiplication suivis d'une addition, d'améliorer l'efficacité énergétique,
de réduire la latence et d'améliorer la précision numérique. Ces avantages en font
une méthode couramment utilisée dans la conception de processeurs et
d'accélérateurs matériels pour améliorer les performances des systèmes
informatiques.
Question 5
Schéma l’architecture logicielle recommandée pour respecter les points définis ci dessus (question
4).

Question6
Le schéma ci-dessous décrit une architecture web 3 tiers utilisant Oracle
comme base de données. Voici les vulnérabilités potentielles associées à ce
système :

1. Vulnérabilités liées à la base de données Oracle :


 Vulnérabilités connues de la version d'Oracle utilisée, notamment les
failles de sécurité et les vulnérabilités non corrigées.
 Vulnérabilités dans les comptes utilisateurs par défaut (SYS, SYSTEM,
DBSNMP, CTXSYS). Ces comptes peuvent être ciblés par des
attaquants.
 Vulnérabilités potentielles liées aux mots de passe faibles ou non
sécurisés utilisés par les comptes de base de données.
2. Vulnérabilités liées au serveur web 3-tiers :
 Vulnérabilités connues dans le serveur web utilisé. Il est important de
maintenir le serveur web à jour avec les correctifs de sécurité.
 Vulnérabilités dans l'application web elle-même, y compris les erreurs
de codage, les injections SQL et les failles de sécurité spécifiques à
l'application.
3. Vulnérabilités liées au protocole Oracle Net :
 Vulnérabilités dans le protocole Oracle Net utilisé pour la
communication entre le serveur de base de données et le serveur
web. Les versions plus anciennes du protocole peuvent présenter des
vulnérabilités connues.
4. Vulnérabilités liées à l'authentification :
 Vulnérabilités potentielles dans le processus d'authentification, en
particulier si l'authentification par l'application est optionnelle. Cela
pourrait permettre à des attaquants de contourner l'authentification
et d'accéder à des informations sensibles ou de compromettre le
système.
5. Vulnérabilités liées à l'accès au serveur de base de données :
 Vulnérabilités potentielles dans la configuration du TNS Listener (port
TCP 1521) qui permet la communication entre le serveur web et la
base de données. Une configuration incorrecte peut exposer le
système à des attaques.

Il est important de noter que cette liste de vulnérabilités est basée sur des
hypothèses générales et qu'il est nécessaire d'effectuer une évaluation de la
sécurité spécifique à votre système en tenant compte des versions exactes
des logiciels utilisés, des configurations et des meilleures pratiques de
sécurité.

Vous aimerez peut-être aussi