• Qu’est-ce qu’un plan d’exécution ans Oracle, comment pouvez-vous le générer ?
• Quel est le rôle le la commande EXPLAIN PLAN dans Oracle et ou sont stockés les
informations générées ?
• Comment Oracle utilise t il les index pour optimiser les requetes ? Dans quels cas un index
peut il ne peut être utilisé ?
• Que fait la commande suivante ? Est-elle importante pour le CBO ? Justifiez votre réponse :
EXEC DBMS_STATS.GATHER_SYSTEM_STATS(‘NOWORDKLOAD’) ;
• Où sont stockés les statistiques collectées dans Oracle et comment pouvez-vous les
consulter ?
• Dans quel contexte le CBO choisirait il un Range Scan Index plutôt qu’un Unique Index ?
• Comment activer un fichier de trace pour analyser une session et pourquoi est-ce utile ?
• Qu’est-ce que le Cost Based Optimizer CBO Dans Oracle ?
• Quelle différence existe-t-il entre une jointure Nested Loop et une jointure Hash Join ?
• Quels sont les types d’index disponible dans Oracle ?
• Comment vérifier si des statistiques sont obsolètes dans Oracle ?
• Qu’est-ce qu’un plan partagé et pourquoi est-il important ?
• Comment Oracle traite t-il le requetes parallèles ?
• Que ont les histogrammes dans Oracle
• Quelle différence entre une table partitionnée et une table non partitionnée
• Comment optimiser une requête avec des sous requetes corrélées
• Qu’est-ce qu’une vue matérialisée et quand l’utiliser ?
• Comment surveiller les sessions actives en temsp réel ?
• Comment purger un espace temporaire utilisé par une session ?
• Qu’est-ce que l’Automatic Workload Repository (Awr) ?
• Comment uiliser un plan base lining pour stabiliser les performances ?
• Quel est le rôle du tablespace TEMP ?
• Quelle est l’importance de la gestion des curseurs partagés ?
• Qu’est-ce qu’un Latch dans Oracle ?
• Pourquoi et comment utiliser les hints dans Oracle ?
• Pour cette requete est-ce que l’index sera utilisé ?
• Optimiser cette requete par deux façons :
SELECT p.prof_id, p.prod_name, s.amount_sold, s.quantity_sold
FROM sales 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}
• Proposer un réglage pour cette requete :
SELECT employee_i, commission_pct FROM employee_temp WHERE commission_pct is NULL;
• Changer l’ordre de jointure pour améliorer les performances :
SELECT c.cust_i, 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_i, cust_firstname, cust_last_name, prod_id
ORDER BY num_sold ASC;
• Proposer deux régalges pour cette requete:
SELECT employee_id, first_name, last_name
FROM employees
WHERE TRUNC(hire_date, ‘YEAR’) = ’01-JAN-2002’;
• Expliquer le fonctionnement de cette instruction :
OPEN c4 ;
LOOP
FETCH C4 BULK COLLECT INTO r1 LIMIT 100;
EXIT WHEN c4%NOTFOUND;
END LOOP;
• Comment active l’option AUTOTRACE?
• Réécrire cette requete pour éviter uen sous requete couteuse :
SELECT * FROM SALES S JOIN CUSTOMERS C ON S.CUST_ID = c.CUST_id;
• Appliquer une technique de tuning pour améliorer cette reuete :
SELECT employee_id, comission_pct FROM employee_temp WHERE commission_pct is NULL
• Expliquer comment interpreter les resultats d’un plan d’execution.
• Quelle est la difference entre un Full Table Scan et un Index Scan ?
• Comment identifier les reuetes lentes dans une base Oracle ?
• Qu’est-ce qu’un bind variable et pourquoi est-ce important pour les performances ?
• Comment interpreter le parametre « COST » dans un plan d’execution Oracle ?
• Quels parametres système influencent le comportement du CBO ans Oracle ?