{"id":783,"date":"2023-10-05T12:29:12","date_gmt":"2023-10-05T16:29:12","guid":{"rendered":"https:\/\/ve2cuy.com\/?page_id=783"},"modified":"2024-09-18T10:08:23","modified_gmt":"2024-09-18T14:08:23","slug":"420-5d5-oracle-labo-example","status":"publish","type":"page","link":"https:\/\/ve2cuy.com\/index.php\/420-5d5-oracle-labo-example\/","title":{"rendered":"420-5D5 : Oracle &#8211; Labo.example"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Contexte<\/h2>\n\n\n\n<p>Oracle.Tutorial fournit une base de donn\u00e9es &lsquo;Exemple&rsquo; pour l&rsquo;exp\u00e9rimentation avec le SGBD Oracle.  <\/p>\n\n\n\n<p>Nous utiliserons cette DB pour les apprentissages sur les fonctions, proc\u00e9dures, d\u00e9clencheurs, &#8230;<\/p>\n\n\n\n<p>Les directives pour l&rsquo;installation de la BD sont disponibles <a href=\"https:\/\/www.oracletutorial.com\/getting-started\/oracle-sample-database\/\">ici<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Voici le sch\u00e9ma de la base de donn\u00e9es<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"677\" height=\"740\" src=\"https:\/\/ve2cuy.com\/wp-content\/uploads\/2023\/10\/Oracle-Sample-Database.png\" alt=\"\" class=\"wp-image-784\" srcset=\"https:\/\/ve2cuy.com\/wp-content\/uploads\/2023\/10\/Oracle-Sample-Database.png 677w, https:\/\/ve2cuy.com\/wp-content\/uploads\/2023\/10\/Oracle-Sample-Database-274x300.png 274w\" sizes=\"auto, (max-width: 677px) 100vw, 677px\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Laboratoire partie A<\/h2>\n\n\n\n<p>Il faut cr\u00e9er, sur le SGBD \u00e0 192.168.138.58 (user:sys, pws: 4205D3) une PDB nomm\u00e9 &lsquo;M&rsquo;+ votre matricule, avec un utilisateur nomm\u00e9 &lsquo;ot&rsquo;.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-- Par exemple,\nshow con_name;\n-- Si pas au contexte racine alors:\nALTER SESSION SET CONTAINER = CDB$ROOT\n\nCREATE PLUGGABLE DATABASE M12345678 ADMIN ot IDENTIFIED BY password create_file_dest='\/home\/oracle' ;\nshow pdbs;\nALTER SESSION SET CONTAINER = M12345678 ;\nALTER DATABASE OPEN;\nGRANT CONNECT, RESOURCE, DBA TO ot;\n\n-- Puis, ouvrir une nouvelle connexion avec l'utilisateur 'ot' \n<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Cr\u00e9er le sch\u00e9ma de la base de donn\u00e9es<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-- regions\nCREATE TABLE regions\n  (\n    region_id NUMBER GENERATED BY DEFAULT AS IDENTITY\n    START WITH 5 PRIMARY KEY,\n    region_name VARCHAR2( 50 ) NOT NULL\n  );\n-- countries table\nCREATE TABLE countries\n  (\n    country_id   CHAR( 2 ) PRIMARY KEY  ,\n    country_name VARCHAR2( 40 ) NOT NULL,\n    region_id    NUMBER                 , -- fk\n    CONSTRAINT fk_countries_regions FOREIGN KEY( region_id )\n      REFERENCES regions( region_id ) \n      ON DELETE CASCADE\n  );\n\n-- location\nCREATE TABLE locations\n  (\n    location_id NUMBER GENERATED BY DEFAULT AS IDENTITY START WITH 24 \n                PRIMARY KEY       ,\n    address     VARCHAR2( 255 ) NOT NULL,\n    postal_code VARCHAR2( 20 )          ,\n    city        VARCHAR2( 50 )          ,\n    state       VARCHAR2( 50 )          ,\n    country_id  CHAR( 2 )               , -- fk\n    CONSTRAINT fk_locations_countries \n      FOREIGN KEY( country_id )\n      REFERENCES countries( country_id ) \n      ON DELETE CASCADE\n  );\n-- warehouses\nCREATE TABLE warehouses\n  (\n    warehouse_id NUMBER \n                 GENERATED BY DEFAULT AS IDENTITY START WITH 10 \n                 PRIMARY KEY,\n    warehouse_name VARCHAR( 255 ) ,\n    location_id    NUMBER( 12, 0 ), -- fk\n    CONSTRAINT fk_warehouses_locations \n      FOREIGN KEY( location_id )\n      REFERENCES locations( location_id ) \n      ON DELETE CASCADE\n  );\n-- employees\nCREATE TABLE employees\n  (\n    employee_id NUMBER \n                GENERATED BY DEFAULT AS IDENTITY START WITH 108 \n                PRIMARY KEY,\n    first_name VARCHAR( 255 ) NOT NULL,\n    last_name  VARCHAR( 255 ) NOT NULL,\n    email      VARCHAR( 255 ) NOT NULL,\n    phone      VARCHAR( 50 ) NOT NULL ,\n    hire_date  DATE NOT NULL          ,\n    manager_id NUMBER( 12, 0 )        , -- fk\n    job_title  VARCHAR( 255 ) NOT NULL,\n    CONSTRAINT fk_employees_manager \n        FOREIGN KEY( manager_id )\n        REFERENCES employees( employee_id )\n        ON DELETE CASCADE\n  );\n-- product category\nCREATE TABLE product_categories\n  (\n    category_id NUMBER \n                GENERATED BY DEFAULT AS IDENTITY START WITH 6 \n                PRIMARY KEY,\n    category_name VARCHAR2( 255 ) NOT NULL\n  );\n\n-- products table\nCREATE TABLE products\n  (\n    product_id NUMBER \n               GENERATED BY DEFAULT AS IDENTITY START WITH 289 \n               PRIMARY KEY,\n    product_name  VARCHAR2( 255 ) NOT NULL,\n    description   VARCHAR2( 2000 )        ,\n    standard_cost NUMBER( 9, 2 )          ,\n    list_price    NUMBER( 9, 2 )          ,\n    category_id   NUMBER NOT NULL         ,\n    CONSTRAINT fk_products_categories \n      FOREIGN KEY( category_id )\n      REFERENCES product_categories( category_id ) \n      ON DELETE CASCADE\n  );\n-- customers\nCREATE TABLE customers\n  (\n    customer_id NUMBER \n                GENERATED BY DEFAULT AS IDENTITY START WITH 320 \n                PRIMARY KEY,\n    name         VARCHAR2( 255 ) NOT NULL,\n    address      VARCHAR2( 255 )         ,\n    website      VARCHAR2( 255 )         ,\n    credit_limit NUMBER( 8, 2 )\n  );\n-- contacts\nCREATE TABLE contacts\n  (\n    contact_id NUMBER \n               GENERATED BY DEFAULT AS IDENTITY START WITH 320 \n               PRIMARY KEY,\n    first_name  VARCHAR2( 255 ) NOT NULL,\n    last_name   VARCHAR2( 255 ) NOT NULL,\n    email       VARCHAR2( 255 ) NOT NULL,\n    phone       VARCHAR2( 20 )          ,\n    customer_id NUMBER                  ,\n    CONSTRAINT fk_contacts_customers \n      FOREIGN KEY( customer_id )\n      REFERENCES customers( customer_id ) \n      ON DELETE CASCADE\n  );\n-- orders table\nCREATE TABLE orders\n  (\n    order_id NUMBER \n             GENERATED BY DEFAULT AS IDENTITY START WITH 106 \n             PRIMARY KEY,\n    customer_id NUMBER( 6, 0 ) NOT NULL, -- fk\n    status      VARCHAR( 20 ) NOT NULL ,\n    salesman_id NUMBER( 6, 0 )         , -- fk\n    order_date  DATE NOT NULL          ,\n    CONSTRAINT fk_orders_customers \n      FOREIGN KEY( customer_id )\n      REFERENCES customers( customer_id )\n      ON DELETE CASCADE,\n    CONSTRAINT fk_orders_employees \n      FOREIGN KEY( salesman_id )\n      REFERENCES employees( employee_id ) \n      ON DELETE SET NULL\n  );\n-- order items\nCREATE TABLE order_items\n  (\n    order_id   NUMBER( 12, 0 )                                , -- fk\n    item_id    NUMBER( 12, 0 )                                ,\n    product_id NUMBER( 12, 0 ) NOT NULL                       , -- fk\n    quantity   NUMBER( 8, 2 ) NOT NULL                        ,\n    unit_price NUMBER( 8, 2 ) NOT NULL                        ,\n    CONSTRAINT pk_order_items \n      PRIMARY KEY( order_id, item_id ),\n    CONSTRAINT fk_order_items_products \n      FOREIGN KEY( product_id )\n      REFERENCES products( product_id ) \n      ON DELETE CASCADE,\n    CONSTRAINT fk_order_items_orders \n      FOREIGN KEY( order_id )\n      REFERENCES orders( order_id ) \n      ON DELETE CASCADE\n  );\n-- inventories\nCREATE TABLE inventories\n  (\n    product_id   NUMBER( 12, 0 )        , -- fk\n    warehouse_id NUMBER( 12, 0 )        , -- fk\n    quantity     NUMBER( 8, 0 ) NOT NULL,\n    CONSTRAINT pk_inventories \n      PRIMARY KEY( product_id, warehouse_id ),\n    CONSTRAINT fk_inventories_products \n      FOREIGN KEY( product_id )\n      REFERENCES products( product_id ) \n      ON DELETE CASCADE,\n    CONSTRAINT fk_inventories_warehouses \n      FOREIGN KEY( warehouse_id )\n      REFERENCES warehouses( warehouse_id ) \n      ON DELETE CASCADE\n  );<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Ins\u00e9rer les enregistrements dans la BD<\/h2>\n\n\n\n<p>Il faut utiliser le contenu du fichier <strong>ot_data.sql<\/strong><\/p>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">NOTE<\/mark><\/strong>: Vous allez rencontrer des probl\u00e8mes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Format des dates<\/li>\n\n\n\n<li>R\u00e9f\u00e9rence \u00e0 la table &lsquo;EMPLOYEES&rsquo;<\/li>\n<\/ul>\n\n\n\n<p class=\"has-vivid-red-color has-text-color\"><strong>\u00c0 VOUS DE TROUVER DES SOLUTIONS<\/strong><\/p>\n\n\n\n<p>Tester les donn\u00e9es en affichant la liste des employ\u00e9s.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Au besoin, un DROP et on recommence<\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">DROP TABLE order_items;  \nDROP TABLE orders;\nDROP TABLE inventories;\nDROP TABLE products;\nDROP TABLE product_categories;\nDROP TABLE warehouses;\nDROP TABLE employees;\nDROP TABLE contacts;\nDROP TABLE customers;\nDROP TABLE locations;\nDROP TABLE countries;\nDROP TABLE regions;<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Laboratoire partie B<\/h2>\n\n\n\n<p>Mettre en place l&rsquo;infrastructure requise pour les parties \u00e9valu\u00e9es du cours<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cr\u00e9er une VM dans le cloud de google, sur un projet CSTJ \n<ul class=\"wp-block-list\">\n<li>2 CPU<\/li>\n\n\n\n<li>4 GO de RAM<\/li>\n\n\n\n<li>Disque de 40GO<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Installer un OS (Ubuntu?)<\/li>\n\n\n\n<li>Installer docker.io<\/li>\n\n\n\n<li>Lancer un conteneur Oracle 23c ou,\n<ul class=\"wp-block-list\">\n<li>pour les plus t\u00e9m\u00e9raires, installer Oracle 23c dans la VM<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>D\u00e9finir une r\u00e8gle &lsquo;Ingress&rsquo; dans le &lsquo;firewall&rsquo; du projet google cloud, de type &lsquo;TAG&rsquo;, pour le port utilis\u00e9 par Oracle et l&rsquo;associer \u00e0 votre VM.<\/li>\n\n\n\n<li>Mettre en place la base de donn\u00e9es D\u00e9mo<\/li>\n\n\n\n<li>Tester une connexion \u00e0 partir de Oracle SQL Developper sur votre poste de travail\n<ul class=\"wp-block-list\">\n<li>En cas de probl\u00e8me, il faut proposer une solution, firewall, docker, &#8230;?\n<ul class=\"wp-block-list\">\n<li>Faire un test \u00e0 partir d&rsquo;un terminal sur le serveur: $ sqlplus &#8230;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Voir le document &#8211; <a href=\"https:\/\/ve2cuy.com\/index.php\/420-5d3-connexion-php-avec-oracle\/\" data-type=\"page\" data-id=\"490\">connexion avec php<\/a> pour la suite &#8230;<\/li>\n<\/ul>\n\n\n\n<p><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">NOTE TELLEMENT IMPORTANTE: Il faut FERMER la VM lorsqu&rsquo;elle n&rsquo;est pas utilis\u00e9e!!!<\/mark><\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">FIN DU DOCUMENT<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">--- Scratch PAD\n\n--- Exemple d'un champ de type AUTO-INCREMENT\n--- GENERATED BY DEFAULT AS IDENTITY (facultaitf)\n--- GENERATED ALWAYS AS IDENTITY (s\u00e9quence automatique obligatoire)\n---  (START WITH 10 INCREMENT BY 5)\nCREATE TABLE Pays (\n    pays_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY ,\n    nom VARCHAR2(80)\n);\n\nINSERT INTO pays(nom) VALUES ('Qu\u00e9bec');\nINSERT INTO pays(pays_id, nom) VALUES (2, 'Canada');\nSELECT * FROM pays;\n\n----------------------------------------------------------------------------\n----------------------------------------------------------------------------\n--- Des bandes dessin\u00e9es\nCREATE TABLE Auteurs (\n    auteur_id NUMBER PRIMARY KEY,\n    nom VARCHAR2(60)\n);\n\nINSERT INTO Auteurs (auteur_id, nom) VALUES (1, 'Herge');\n\nCREATE TABLE Albums (\n    album_id NUMBER PRIMARY KEY,\n    titre VARCHAR2(255),\n    annee_publication NUMBER,\n    auteur_id NUMBER,\n    FOREIGN KEY (auteur_id) REFERENCES Auteurs(auteur_id),\n    nombre_pages NUMBER,\n    isbn VARCHAR2(20),\n    photo_couverture VARCHAR2(255)\n);\n\n----\n\nINSERT INTO Albums (titre, annee_publication, auteur_id, nombre_pages, isbn, photo_couverture)\n\nVALUES\n\n    ('Tintin au pays des Soviets', 1929, 1, 144, '978-2203001016', 'tintin_soviets.jpg'),\n    ('Tintin au Congo', 1931, 1, 62, '978-2203001023', 'tintin_congo.jpg'),\n    ('Tintin en Am\u00e9rique', 1932, 1, 120, '978-2203001030', 'tintin_amerique.jpg'),\n    ('Les Cigares du Pharaon', 1934, 1, 128, '978-2203001047', 'tintin_cigares_pharaon.jpg'),\n    ('Le Lotus bleu', 1936, 1, 80, '978-2203001054', 'tintin_lotus_bleu.jpg'),\n    ('L''Oreille cass\u00e9e', 1943, 1, 62, '978-2203001061', 'tintin_oreille_cassee.jpg'),\n    ('L''\u00cele noire', 1938, 1, 62, '978-2203001078', 'tintin_ile_noire.jpg'),\n    ('L''\u00c9toile myst\u00e9rieuse', 1942, 1, 62, '978-2203001108', 'tintin_etoile_mysterieuse.jpg'),\n    ('Le Secret de La Licorne', 1943, 1, 62, '978-2203001115', 'tintin_secret_licorne.jpg'),\n    ('Le Tr\u00e9sor de Rackham le Rouge', 1944, 1, 62, '978-2203001122', 'tintin_tresor_rackham_rouge.jpg');\n\n--- Modifier le champ album_id pour le rendre AUTO-INCREMENT\nALTER TABLE Albums\nALTER COLUMN album_id\nSET GENERATED BY DEFAULT;\n--- Pour enlever le compteur\nALTER TABLE Albums\nALTER COLUMN album_id\nDROP IDENTITY IF EXISTS;\n\n------------------------------------------------\n\nselect titre, auteurs.nom from albums inner JOIN auteurs ON albums.auteur_id = auteurs.auteur_id ;   \nselect al.titre, a.nom from albums al inner JOIN auteurs a ON al.auteur_id = a.auteur_id ;   \n\n\n\n<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><a href=\"https:\/\/ve2cuy.com\/index.php\/2023\/10\/05\/420-5d3-oracle-example-sql\/\" data-type=\"post\" data-id=\"802\">.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contexte Oracle.Tutorial fournit une base de donn\u00e9es &lsquo;Exemple&rsquo; pour l&rsquo;exp\u00e9rimentation avec le SGBD Oracle. Nous utiliserons cette DB pour les apprentissages sur les fonctions, proc\u00e9dures, d\u00e9clencheurs, &#8230; Les directives pour l&rsquo;installation de la BD sont disponibles ici Voici le sch\u00e9ma de la base de donn\u00e9es Laboratoire partie A Il faut cr\u00e9er, sur le SGBD \u00e0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-783","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ve2cuy.com\/index.php\/wp-json\/wp\/v2\/pages\/783","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ve2cuy.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ve2cuy.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ve2cuy.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ve2cuy.com\/index.php\/wp-json\/wp\/v2\/comments?post=783"}],"version-history":[{"count":18,"href":"https:\/\/ve2cuy.com\/index.php\/wp-json\/wp\/v2\/pages\/783\/revisions"}],"predecessor-version":[{"id":1033,"href":"https:\/\/ve2cuy.com\/index.php\/wp-json\/wp\/v2\/pages\/783\/revisions\/1033"}],"wp:attachment":[{"href":"https:\/\/ve2cuy.com\/index.php\/wp-json\/wp\/v2\/media?parent=783"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}