0% ont trouvé ce document utile (0 vote)
90 vues6 pages

Oracle Exam Questions

Le document traite des concepts fondamentaux d'Oracle, notamment le système de gestion de base de données, les index, et le Cost-Based Optimizer (CBO). Il aborde également des commandes spécifiques pour optimiser les requêtes, gérer les statistiques, et utiliser des techniques de tuning. Enfin, il fournit des exemples pratiques pour améliorer les performances des requêtes SQL dans Oracle.

Transféré par

ahamrounimarwa2
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
90 vues6 pages

Oracle Exam Questions

Le document traite des concepts fondamentaux d'Oracle, notamment le système de gestion de base de données, les index, et le Cost-Based Optimizer (CBO). Il aborde également des commandes spécifiques pour optimiser les requêtes, gérer les statistiques, et utiliser des techniques de tuning. Enfin, il fournit des exemples pratiques pour améliorer les performances des requêtes SQL dans Oracle.

Transféré par

ahamrounimarwa2
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

ORACLE EXAM

DEFINITION
 ORACLE
Système de gestion de base de données relationnelle (SGBDR) développé par Oracle Corporation
 HINT
Directive donnée au CBO pour influencer le choix du plan d'exécution d'une requête SQL
doivent être utilisés avec précaution pour éviter de nuire à la performance
 INDEX
Structure de données utilisée pour améliorer la vitesse des opérations de recherche sur une table
en réduisant le nombre de lignes à parcourir

1. plan d'execution dans oracle ? comment le generer?


C'est le chemin que le moteur de BD choisit pour exécuter une requête SQL.
Il peut être généré avec la commande EXPLAIN PLAN.

2. role de la commande EXPALIN PLAN dans oracle, et ou sont stockees les


informations generees?
Elle permet de générer et d’afficher le plan d’exécution d’une requête
Les informations sont stockées dans la table PLAN_TABLE.

3. comment oracle utilise-t-il les index pour optimiser les requetes? dans quels cas un
index peut-il ne pas etre utilise?
Oracle utilise des index pour accélérer les recherches
Un index peut ne pas être utilisé si le coût d'une recherche avec index est plus élevé qu'un scan
complet de la table

4. que fait la commande suivante? est elle importante pour le CBO?


EXEC DBMS_STATS.GATHER_SYSTEM_STATS('NOWORKLOAD');
Elle collecte des statistiques système sans charge de travail
Oui elle est importante pour améliorer les performances du CBO (Cost-Based Optimizer).

5. ou sont stockees les statistiques collectees dans oracle et comment les consulter?
Elles sont stockées dans les vues DBA_TAB_STATS et DBA_IND_STATS
On peut les consulter avec DBMS_STATS

6. dans quel contexte le CBO choisirait-il un Range Scan Index plutôt qu'un Unique
Index?
Lorsqu'il y a une plage de valeurs à rechercher et pas une valeur unique.

7. comment activer un fichier de trace pour analyser une session, utilité?


ALTER SESSION SET TRACEFILE
pour analyser les requêtes et identifier les problèmes de performance
8. Cost-Based Optimizer (CBO) dans oracle?
optimise les requêtes en choisissant le plan d’exécution le moins coûteux en fonction des
statistiques collectées.

9. difference entre une jointure Nested Loop et une jointure Hash Join
Nested Loop : est utilisé pour des petites tables avec une recherche sur chaque ligne,
Hash Join : est plus efficace pour des grandes tables.

10. types d'index disponibles dans oracle?


1. Index unique
2. Bitmap
3. fonctionnel
4. cluster
5. composite

11. comment verifier si des statistiques sont obsoletes dans oracle?


Avec la vue DBA_TAB_STATISTICS ou DBMS_STATS.

12. qu'est-ce qu'un plan partage, importance ?


utilisé pour optimiser l’utilisation de mémoire et de ressources
essentiel pour la gestion des requêtes.

13. comment oracle traite-t-il les requetes paralleles?


En divisant les requêtes en segments parallèles pour améliorer les performances.

14. quels sont les histograms dans oracle?


Ce sont des représentations de la distribution des données dans une colonne pour aider le CBO à
choisir un plan d’exécution optimal

15. difference entre une table partitionnee et une table non partitionnee?
table partitionnée : est divisée en sous-ensembles pour améliorer la gestion et la performance.

16. comment optimiser une requete avec des sous-requetes correlees?


Utiliser des jointures au lieu de sous-requêtes corrélées pour améliorer la performance

17. qu'est ce qu'une vue materialisee, et quand l'utiliser?


c'est une copie physique d’une vue qui peut être rafraîchie périodiquement
pour améliorer la performance des requêtes complexes

18. comment surveiller les sessions actives en temps reel?


Avec la vue V$SESSION
19. comment purger un espace temporaire utilise par une session?
ALTER SESSION DEALLOCATE UNUSED
TRUNCATE TABLE

20. Automatic Workload Repository(AWR)?


Un dépôt de statistiques de performance collectées automatiquement pour aider à l'analyse des
performances

21. comment utiliser un plan baselining pour stabiliser les performances?


en capturant un plan d’exécution optimal et en le réutilisant

22. le role du tablespace TEMP?


utilisé pour les opérations de tri et de jointures temporaires pendant l'exécution des requêtes

23. l'importance de la gestion des curseurs partages?


permet de réutiliser les plans d'exécution existants,
réduisant ainsi la surcharge de la BD

24. qu'est-ce qu'un Latch dans oracle?


un mécanisme de synchronisation pour contrôler l'accès à des ressources partagées

25. pourquoi et comment utiliser les hints dans oracle?


sont utilisés pour guider le CBO dans le choix du plan d'exécution d'une requête SQL
Ils sont ajoutés dans la requête avec la syntaxe /*+ hint */
Ex : SELECT /*+ FULL(emp) */ * FROM employees emp;

26. pour cette requete, est-ce que l'index sera utilisé?


Un index est utilisé si la requête correspond à un critère de recherche / tri optimisé par un index

27. comment activer l'option AUTOTRACE?


SET AUTOTRACE ON

28. comment interpreter les resultats d'un plan d'execution


Analyser
 le coût
 le type de jointure
 les accès aux tables
 et index pour optimiser la requête

29. différence entre un Full Table Scan et un Index Scan?


Le Full Table Scan : parcourt toute la table
Index Scan : utilise un index pour trouver rapidement des données spécifiques
30. comment identifier les requetes lente dans une base oracle?
Avec la vue V$SQL

31. bind variable ? importance?


Ce sont des variables utilisées
pour améliorer la réutilisation des plans d'exécution, réduisant ainsi les coûts

32. comment interpreter le parametre "COST" dans un plan d'execution oracle?


Le coût représente l'estimation de la charge de travail associée à un plan d'exécution

33. quels parametres systeme influencent le comportement du CBO dans oracle?


 Les statistiques de la BD
 les initialisation des paramètres système (comme OPTIMIZER_MODE)
 les index disponibles

CODE
1. optimiser cette requete par deux facons:
SELECT p.prod_id,p.prod_name,s.amount_sold,s.quantity_sold
FROM sale s,products p,customers c
WHERE s.prod_id = p.prod_id
AND s.cust_id = c.cust_id
AND s.cust_id IN (2,3,4,5);

1. Utiliser une jointure explicite

2. Utiliser une table temporaire


(pour filtrer les clients avant la jointure)
2. proposez un reglage pour cette requete:
SELECT employee_id,comission_pct
FROM employee_temp
where comission_pct IS NULL;
 Créer un index sur comission_pct pour accélérer les recherches des valeurs NULL
CREATE INDEX idx_comission_pct ON employee_temp(comission_pct);

3. changer l'ordre de jointure pour ameliorer les performances:


SELECT c.cust_id,cust_first_name,cust_last_name,prod_id,COUNT(*)num_sold
FROM sales s,customers c
WHERE s.cust_id =c.cust_id
GROUP BY c.cust_id,cust_first_name,cust_last_name,prod_id
ORDER BY num_sold ASC;
 Commencer par la table customers qui a un nombre de lignes réduit pour limiter le travail
effectué par la jointure avec sales

4. proposez deux reglages pour cette requete:


SELECT employee_id,first_name.lat_name
FROM employees
WHERE TRUNC(hire_date,'YEAR')='01-JAN-2002';
1. Ajouter un index sur hire_date
CREATE INDEX idx_hire_date ON employees(hire_date);
2. Utiliser une fonction date optimisée (pour éviter la conversion à chaque ligne)

5. expliquer le fonctionnement de cette instruction:


OPEN c4;
LOOP
FETCH c4 BULK COLLECT INTO r1 LIMIT 100;
EXIT WHEN c4%NOTFOUND;
END LOOP;
 L'instruction ouvre un curseur c4, puis récupère les données par lots de 100 avec BULK
COLLECT ,
Lorsque les données sont épuisées (%NOTFOUND),
la boucle s'arrête
6. reecrire cette requete poureviter une sous-requete couteuse:
SELECT *
FROM sales s
JOIN customers c ON s.cust_id = c.cust_id

7. appliquer une technique de tuning pour ameliorer cette requete:


SELECT employee_id,comissiom_pct
FROM employees_temp
WHERE comission_pct IS NULL;
 Créer un index sur comission_pct pour améliorer la recherche des valeurs NULL
CREATE INDEX idx_comission_pct ON employees_temp(comission_pct);

Vous aimerez peut-être aussi