IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Docker Discussion :

Installation d'Oracle avec Docker


Sujet :

Docker

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut Installation d'Oracle avec Docker
    bonjour

    Voici la méthode d'installation que j'ai utilisée pour installer une version d' Oracle sur Docker (12c, 19c, 21c…) via docker:

    La difficulté d’installer la base de données Oracle sur Docker est que les images ne sont pas disponible sur le hub Docker même après vous être connecté. .
    Il va falloir ce connecter sur les serveurs Oracles.


    Prerequis :Créer un compte sur le registre Docker Oracle et accepter les règles. Accepter les termes et conditions d'Oracle. Sans cette étape, vous ne pourrez pas extraire les images. Sans cette étape, vous ne pourrez pas extraire les images.

    Posséder un compte Oracle: https://profile.oracle.com/myprofile...e-account.jspx

    Vous pouvez alors obtenir les images à partir du registre d'Oracle Docker à l'adresse
    https://container-registry.oracle.com

    Nom : Image1.png
Affichages : 328
Taille : 50,6 Ko


    Le choix Database https://container-registry.oracle.co...cr/ba/database
    Puis entreprise et je me déplace en bas de la page pour avoir tous les Tags possible:
    Nom : Image2.png
Affichages : 312
Taille : 23,6 Ko

    Je lance docker sous window et passe en mode commande sous powershell

    Phase N° 1 je me connecte a oracle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docker login  container-registry.oracle.com
    Vous verrez des invites pour saisir votre nom d’utilisateur et votre mot de passe Oracle. Si vous saisissez les informations correctement, vous devriez voir le message de connexion

    Nom : Image3.png
Affichages : 311
Taille : 62,0 Ko

    j'installe : enterprise:12.2.0.1 trouver sur Oracle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docker pull container-registry.oracle.com/database/enterprise:12.2.0.1
    Les éléments de l’images ce télécharge

    Si vous voyez un message d'erreur mentionnant que l'image n'existe pas ou que vous n'en avez pas le droit, c'est vous n'avez probablement pas accepté les termes et conditions d'Oracle.

    Pour créer un conteneur de base de données Oracle, exécutez la commande suivante :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docker run  -dit -p 1521:1521  --name  oracle_db container-registry.oracle.com/database/enterprise:12.2.0.1
    Je définie le nom de la base: oracle_db
    Le choix des ports visible à l’extérieur de façon judicieuse en conservant le port interne 1521 d’accès a notre base Oracle12..

    Le démarrage du conteneur peut prendre quelques minutes.je surveille le journal en utilisant cette commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      docker logs -f oracle_db
    Nom : Image4.png
Affichages : 316
Taille : 136,2 Ko

    j'ai téléchargé sqldeveloper avec le compte oracle https://www.oracle.com/database/sqld...gies/download/

    Je lance SQLPLUS pour créer des utilisateurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docker exec -it oracle_db bash -c "source /home/oracle/.bashrc; sqlplus /nolog"
    Nom : Image5.png
Affichages : 310
Taille : 34,9 Ko

    Command SQLPLUS
    Il y aura une invite vous demandant un mot de passe, entrez Oradoc_db1


    Nom : Image6.png
Affichages : 312
Taille : 17,4 Ko


    Exécutez maintenant les commandes suivantes (une par ligne) pour créer un utilisateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    alter session set "_ORACLE_SCRIPT"=true;
    create user db_user identified by db_user_pass;
    GRANT ALL PRIVILEGES TO db_user;
    Modifier le script ci-dessus selon vos choix.On va faire simple un utilisateur appelé db_user avec mot de passe db_user_pass


    Nom : Image7.png
Affichages : 317
Taille : 39,3 Ko


    je cherche a me connecter avec sqldev et la bug cela ne marche pas

    Nom : Capture d'écran 2023-10-29 141027.png
Affichages : 311
Taille : 68,1 Ko

    j'ai arrêté et relancer la base via docker .
    J'ai créer d'autre utilisateur

    j'ai toujours le message : ORA 01017 : invalide password logon denied


    Nomhote : Nom de la machine ( le problème de l'adresse IP est que celle-ci peut changer.....

    port 1521

    Même problème avec DBEAVER
    Nom de service :ORCLPDB1.localdomain

  2. #2
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut Utilsation d'une base opérationnel
    lorsque je cherche a me connecter sur une base existant Oracle avec sqlalchemy je n'y parvient pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    # coding: utf-8
    import cx_Oracle as cx
    import chardet
    from sqlalchemy import Boolean, Column, Date, Float, Text,  Integer, String, create_engine  ,Index, DateTime, BigInteger, SmallInteger
    
    from sqlalchemy import  select ,insert,delete,update ,distinct,cast
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy.orm import  declarative_base 
    from sqlalchemy.exc import SQLAlchemyError,IntegrityError
    from sqlalchemy.inspection import inspect
    from dataclasses import dataclass
    import os 
    from datetime import date, datetime
    import pandas as pd 
    
    from dataclasses import dataclass 
    from inflect import engine
    import tkinter as tk
    from tkinter import filedialog ,messagebox
    from tkinter.filedialog import askopenfilename
     
    from sqlalchemy import MetaData
    from sqlalchemy import Table
    from sqlalchemy.dialects import oracle
     
     
    from sqlalchemy import create_engine
    from sqlalchemy.exc import OperationalError
    solution N°1 Utilise la nouvelle version oracle+oracledb compatible avec SQLALCHEMY 2.0.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    def sqlachemy_Extranet_v2_rec1():
            os.environ['NLS_LANG']='FRENCH_FRANCE.UTF8'
            serviceName = "nomservice"
            hostname = "MonPetitHost"
            user = "toto"
            port = "1521"
            idpass = "azertyuiopq"
    
            idconnection = f"oracle+oracledb://{user}/{idpass}@{hostname}:{port}/{serviceName}"
     
            try:
                # Créer le moteur SQLAlchemy
                engine = create_engine(idconnection)
         
                # Tester la connexion
                with engine.connect() as connection:
                    # Si la connexion est réussie, imprimer un message
                    print("Connexion à la base de données Oracle réussie")
                return engine
         
            except OperationalError as e:
                print(f"Erreur de connexion : {e}")
                return None
    
            if __name__ == '__main__':        
            
           test2=  sqlachemy_Extranet_v2_rec1()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            erreur : 
                 raise exc_type(_Error(message)) from cause
                sqlalchemy.exc.DatabaseError: (oracledb.exceptions.DatabaseError) DPY-4001: no credentials specified
                (Background on this error at: https://sqlalche.me/e/20/4xp6)



    solution N°2 Utilise la version oracle+cx_oracle qui est aussi compatible avec SQLALCHEMY 2.0.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    def sqlachemy_Extranet_rec1():
            os.environ['NLS_LANG']='FRENCH_FRANCE.UTF8'
            serviceName = "nomservice"
            hostname = "MonPetitHost"
            user = "toto"
            port = "1521"
            idpass = "azertyuiopq"
    
            idconnection=f"oracle+cx_oracle://{user}:{idpass}@{hostname}:{port}?service_name=<{serviceName}>S&encoding=UTF-8&nencoding=UTF-8"
            # oracle+cx_oracle://user:pass@hostname:port[/dbname][?service_name=<service>[&key=value&key=value...]]
    
            
            try:
                # Créer le moteur SQLAlchemy
                engine = create_engine(idconnection)
         
                # Tester la connexion
                with engine.connect() as connection:
                    # Si la connexion est réussie, imprimer un message
                    print("Connexion à la base de données Oracle réussie")
                return engine
         
            except OperationalError as e:
                print(f"Erreur de connexion : {e}")
                return None
    
            if __name__ == '__main__':        
                     test1 = sqlachemy_Extranet_rec1()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            erreur :    
            sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError) ORA-12514: TNS : le processus d'écoute ne connaît pas actuellement le service demandé dans le descripteur de connexion
            (Background on this error at: https://sqlalche.me/e/20/4xp6)

    A note je n'ai aucun paramètrage de TNS . pas de fichier tnsname.ora sur le PS


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    def connexion_Extranet_rec1():
            
            os.environ['NLS_LANG']='FRENCH_FRANCE.UTF8'
            serviceName = "nomservice"
            hostname = "MonPetitHost"
            user = "toto"
            port = "1521"
            idpass = "azertyuiopq"
     
            idconnection = f"{user}/{idpass}@{hostname}:{port}/{serviceName}"
            connection = cx.connect(idconnection)
            version_du_pilote = cx.clientversion()
            messagebox.showinfo("Connexion Oracle ","Version du pilote :"  + str(version_du_pilote))
            curseur = connection.cursor()
            return curseur
    
            
            if __name__ == '__main__':   
                       Text3  = connexion_Extranet_rec1()
    Seule la méthode d'accces possible est celle qui ne s'appuye pas sur sqlachemy


    Une idée ?

  3. #3
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut
    j'ai recherche dans la documentation d'Oracle pour trouver les informations sur le mot de passe créer lors de la génération de la base .
    il faut recherche dans les logs de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Docker  docker logs -f <mabaseoracle>
    la ligne Enter password for SYS pour obtenir le mot de pass autogeneré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     docker logs -f oracle_db
    on trouve aussi le SERVICE_NAME=ORCLPDB1.localdomain



    Le lancement de la base reste relativement long 30mn pour avoir quelque chose de stable après quoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     docker logs -f oracle_db
    vous redonne la main


    je relance le processus de A à Z . je recréer mon user

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    alter session set "_ORACLE_SCRIPT"=true;
    create user db_user identified by db_user_pass;
    GRANT ALL PRIVILEGES TO db_user;
    Je vérifie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     select  * from all_users where USERNAME ='DB_USER';
    il existe bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     select ACCOUNT_STATUS FROM DBA_USERS where USERNAME ='DB_USER';
    réponse
    ACCOUNT_STATUS > OPEN

    mais si je cherche a ma connecter sur la base avec le user dbeaver me retourne

    ORA-01045: user DB_USER lacks CREATE SESSION privilege; logon denied

    Il semble que la commande de création de compte ne soit pas suffisante.

Discussions similaires

  1. Installation de Bugzilla avec Docker
    Par Freud44 dans le forum Docker
    Réponses: 1
    Dernier message: 05/06/2020, 08h27
  2. Installation de Compiere avec base Oracle
    Par djamess dans le forum Général Java
    Réponses: 9
    Dernier message: 03/02/2010, 10h58
  3. [Débutant] Pré installation pour une connections oracle avec C#
    Par bilred dans le forum Accès aux données
    Réponses: 2
    Dernier message: 04/11/2008, 16h49
  4. Installation d'oracle 9i serveur avec SQL Serveur
    Par ALLFA dans le forum Oracle
    Réponses: 2
    Dernier message: 03/07/2006, 18h32
  5. [INNO SETUP][ORACLE] Installer le client Oracle avec Inno
    Par AnnSo dans le forum Bases de données
    Réponses: 11
    Dernier message: 19/08/2004, 16h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo