TP d'Informatique niveau Master sur la Base de données réparties. Celui-ci contient l'ensemble des requêtes exécutables sous Oracle pour mettre en oeuvre une base de données réparties.
[...] Analyser le plan d'exécution de chacune des requêtes suivantes. On crée la table destinée à recevoir les détails du plan d'exécution. Cette requête de création peut-être trouvée dans l'aide en ligne d'oracle atteignable à partir de www.oracle.com. create table PLAN_TABLE ( statement_id varchar2(30), timestamp date, remarks varchar2(80), operation varchar2(30), options varchar2(30), object_node varchar2(128), object_owner varchar2(30), object_name varchar2(30), object_instance numeric, object_type varchar2(30), optimizer varchar2(255), search_columns number, id numeric, parent_id numeric, position numeric, cost numeric, cardinality numeric, bytes numeric, other_tag varchar2(255), partition_start varchar2(255), partition_stop varchar2(255), partition_id numeric, other long, distribution varchar2(30) On demande à Oracle le plan d'exécution retenu pour une requête, qu'il stocke dans la table PLAN_TABLE: EXPLAIN PLAN Set statement_id='identifiant_requete' For une_requete; On interroge la table PLAN_TABLE de façon à obtenir un plan d'exécution lisible, par exemple : FROM plan_table START WITH id = 0 AND statement_id = 'identifiant_requete' CONNECT BY PRIOR id = parent_id AND statement_id ='identifiant_requete'; Voici les plans d'exécution que l'on obtient avec les requêtes suivantes. [...]
[...] Réaliser une jointure de votre table dans ora10g avec une table que vous créez dans votre compte de stra. Cette jointure peut inclure agrégats et sous-requêtes. On créer une table cours dans le compte stra : CREATE TABLE COURS ( NOM VARCHAR(10), NUM_ETUDIANT NUMBER INSERT INTO COURS VALUES On réalise la jointure : SELECT * FROM ETUDIANT@ORA10G, COURS WHERE ETUDIANT.NUMERO = COURS.NUM_ETUDIANT; Mettre à jour votre table dans la base de données ora10g à partir de votre compte dans stra. Comparer la validation avec la validation des parties précédentes. Autre conclusion. [...]
[...] L'autre binôme (m2mgj02) nous donne les droits sur sa table ETU en effectuant un : GRANT SELECT ON ETU TO m2mgj01; En tapant SELECT * FROM ALL_TABLES; on obtient : A partir de notre base en tapant SELECT * FROM USER_TAB_PRIVS; nous constatons que nous avons le droit d'effectuer des select sur leur table ETUDIANT. Quand l'autre groupe fait une mise à jour sur sa table, que voyez-vous? En tapant SELECT * FROM M2MGJ02.ETU; on obtient : Quand l'autre groupe effectue une mise à jour sur sa table, nous ne pouvons voir les mises à jour. Par contre si l'autre groupe insert un tuple et fait un COMMIT, on constate cette mise à jour. Essayer d'insérer une ligne dans la table de l'autre groupe. [...]
[...] R2- Afficher les clients de Paris et Lyon qui ont le même nom de famille SELECT V1.ID_CLIENT, V1.NOM, V1.PRENOM, V1.VILLE FROM VUECLIENTS V1, VUECLIENTS V2 WHERE V1.NOM=V2.NOM AND V1.ID_CLIENTV2.ID_CLIENT; Oracle consulte la vue vueClients par deux fois, pour cela il consulte les clients de Paris sur la base locale et les clients de Lyon sur la base distante (remote) et en fait l'union (Union-all). Il réalise la jointure de ces deux vues (hash join). R3- Afficher les commandes de clients parisiens non encore livrées SELECT ID_CDE, DATEC, LIVRAISON, ID_CLIENT, NOM, PRENOM, VILLE FROM COMMANDEPARIS,CLIENTPARIS WHERE COMMANDEPARIS.NUMCLT= CLIENTPARIS.ID_CLIENT AND COMMANDEPARIS.LIVRAISON = Nested Loops correspond au type de jointure effectuée. Pour faire cette jointure Oracle va interroger la table commandeParis ainsi que la table clientParis à partir de sa clé primaire (id_client). [...]
[...] Choisissez de rafraichir toute les 5 minutes. CREATE MATERIALIZED VIEW NB_CDES_CLIENT_BY_CLI_MV REFRESH NEXT SYSDATE + 1/288 AS SELECT COUNT(*) AS NB_CDES, ID_CLIENT, NOM, PRENOM FROM CLIENTPARIS@STRA, COMMANDEPARIS@STRA WHERE COMMANDEPARIS.NUMCLT = CLIENTPARIS.ID_CLIENT GROUP BY ID_CLIENT, NOM, PRENOM; Select * from NB_CDES_CLIENT_BY_CLI_MV; On vérifie que le rafraîchissement fonctionne (vue USER_JOBS): SELECT log_user, last_sec,next_sec, interval, what FROM user_jobs R2 Les clients parisiens (dont le CA>2000) et leurs commandes non livrées. Choisissez de rafraichir toute les 5 minutes. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture