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

Oracle Discussion :

peut on recuperer le code source d'un package?


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut peut on recuperer le code source d'un package?
    J'aimerais recuperer un package que j'ai compiler d la semaine pour le modifié. Est ce possible?

  2. #2
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 547
    Points : 670
    Points
    670
    Par défaut
    Les sources sont visibles au travers de la vue USER_SOURCES.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    cad?
    je fait select * from user_sources?

  4. #4
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    ben déjà vous pouvez essayer, non ???

    Sinon, n'importe quel outil (SQL developer, par exemple) le permet.

  5. #5
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 547
    Points : 670
    Points
    670
    Par défaut
    J'aimerai eviter de participer a une operation qui consiste a derober ou espionner le travail de quelqu'un d'autre, etant donne que n'importe quel auteur de package aurait pu immediatement comprendre comment utiliser l'info deja fournie!
    Quel est le contexte precis?

  6. #6
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Salut !

    je travaille sur Oracle 9i.
    J'ai redigé quelques packages et je les ai executé.
    Comme je n'ai pas tout enregistré (.txt ou .sql) je voulais les consulter sur ma base et j'ai tapé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM USER_SOURCES;
    l'erreur qu'il me donne :

    ORA-00942: table or view does not exist
    merci

  7. #7
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    sans S à source : all_source ou user_source

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 379
    Points : 376
    Points
    376
    Par défaut
    Ci-dessous un script sql qui extrait toutes les sources d'une base de données, sont fonctionnement et adapté à un autre script (encore plus bas)

    pour le faire fonctionner, il suffit de créer un fichier nommé: GetSource.sql et d'y copier le texte de ci-dessous. Pour le lancer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus user/password@sid @GetSource.sql '*' '*' > AllSources.txt
    produira l'extraction de tout ce qui est possible.
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    /******************************************************************************
    *
    * GetSource.sql
    *
    *
    *
    * Exemple: sqlplus login/password@SID @GetSource.sql '*' '*' > ALLSources.txt
    *
    *
    *
    *  CE: 1er  paramètre: Nom de l'utilisateur (OWNER)
    *  --                  peut-être '*' pour tous les utilisateurs
    *      2ème paramètre: Nom de l'objet à extraire, si '*',
    *                      toutes les procédures, fonctions, packages sont extraits
    *
    *  CS: Sortie des sources sur la console, le début de la source et préfixé par
    *  --  <data> et ce termine par le suffixe </data>. Ces tags permettent une
    *      extraction "propre" au moyen de (par exemple):                         */
     
    --  sqlplus "$DBCONNECT" @GetSource.sql $OWNER $OBJECT                   |\
    --  sed -n 's/\(.*\)$/\1<br>/p'                                          |\
    --  tr -d '\12'                                                          |\
    --  sed -n 's/.*<data>\(<br>\)*\(.*\)<br><\/data>.*/\2/p'                |\
    --  sed 's/<br>/\n/g'                                     >> "$FILENAME"
     
    /* Avec: DBCONNECT ==> login/password@SID
             USER      ==> Nom de l'utilisateur
             OBJECT    ==> Peut-être omis, dans ce cas, toutes les sources
             FILENAME  ==> Nom du fichier recevant les sources
    */
     
    SET ECHO OFF
    SET FEEDBACK OFF
    SET HEADING OFF
    SET VERIFY OFF
    SET LINESIZE 255
     
    PROMPT <data>
     
    SELECT
      CASE
        WHEN S1.LINE = 1
        THEN    'CREATE OR REPLACE '
              || S1.TYPE
              || ' '
              || CASE WHEN( '&&1' != '*' )THEN '"&&1".' ELSE '"' || S1.OWNER || '".' END
              || TRIM(
                    SUBSTR(
                      SUBSTR( S1.TEXT, 1, LENGTH( S1.TEXT ) - 1 ),
                      LENGTH( S1.TYPE ) + 1, 255 )
                      )
        WHEN S1.LINE = ( SELECT MAX( S2.LINE ) FROM DBA_SOURCE S2
                         WHERE ( S2.OWNER = S1.OWNER )
                           AND ( S2.TYPE  = S1.TYPE  )
                           AND ( S2.NAME  = S1.NAME  )
                       )
        THEN     SUBSTR( S1.TEXT, 1, LENGTH( S1.TEXT ) - 1 )
              || ';' || CHR( 10 )
              || '/' || CHR( 10 ) || CHR( 10 )
        ELSE SUBSTR( S1.TEXT, 1, LENGTH( S1.TEXT ) - 1 )
      END
    FROM DBA_SOURCE S1
    WHERE S1.NAME IN ( SELECT DISTINCT S3.NAME
                       FROM DBA_SOURCE S3
                       WHERE (    ( ( '&&1' != '*' ) AND ( S3.OWNER = '&&1' ) )
                               OR   ( '&&1'  = '*' )
                             )
                         AND (    ( ( '&&2' != '*' ) AND ( S3.NAME  = '&&2' ) )
                               OR   ( '&&2'  = '*' )
                             )
                     )
    ORDER BY S1.TYPE, S1.NAME, S1.LINE;
     
     
    PROMPT </data>
     
    QUIT;
    et le script de ci-dessous "lance" le script de ci-dessus, fait le ménage et produit un fichier sql directement utilisable dans la plus part des cas.
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    #!/bin/sh
     
     
    ##############################################################################
    #
    # GetSource
    #
    # Auteur: Jean-Jacques Varvenne - jjv@be.tf
    #
    #
    ##############################################################################
    #
    # BUT: Extraire les sources des fonctions et procédures
    #
    #  CE:  1er paramètre: Chaîne de connexion (SID)
    #  --  2ème paramètre: Nom de l'utilisateur.
    #      3ème paramètre: Nom de la source à extraire: procédures, fonctions,...
    #                      Si absent, toutes les fonctions/procédures sont
    #                      extraites.
    #      4ème paramètre: Nom du fichier récepteur, en cas d'absence, le
    #                      nom de la source sera utilisé ou à défaut:
    #                      <SID>.sql
     
     
     
    # Paramètres par défauts:
    DEFAULT_DBCONNECT='user/password@sid'
    DEFAULT_OWNER='owner ou *'
     
     
     
     
    ##############################################################################
    #
    # Fonction de service
    #
    # CE: DBCONNECT = Chaîne de connexion à la base de données (SID)
    # --   FILENAME = Nom du fichier reçevant les sources.
    #         OWNER = Nom de l'utilisateur
    #            $1 = 1er paramètre de la fonction: Nom de l'objet, si
    #                 omis, toutes les fonctions et procédures sont extraites.
    ExtractSource()
    {
     
      sqlplus "$DBCONNECT" @GetSource.sql $OWNER $1                        |\
      sed -n 's/\(.*\)$/\1<br>/p'                                          |\
      tr -d '\12'                                                          |\
      sed -n 's/.*<data>\(<br>\)*\(.*\)<br><\/data>.*/\2/p'                |\
      sed 's/<br>/\n/g'                                     >> "$FILENAME"
     
    }
     
     
     
     
    ##############################################################################
    #
    # Paramètres d'entrés par défauts
    #
     
    #  CE:  1er paramètre: Chaîne de connexion (SID)
    #  --  2ème paramètre: Nom de l'utilisateur
    #      3ème paramètre: Nom de la source à extraire: procédures, fonctions,...
    #                      Si absent, toutes les fonctions/procédures sont
    #                      extraites.
    #      4ème paramètre: Nom du fichier récepteur, en cas d'absence, le
    #                      nom du schéma.sql
     
     
    # SID
    if [ -z "$1" ]; then
      DBCONNECT="$DEFAULT_DBCONNECT"
    else
      DBCONNECT="$1"
    fi
     
     
    # Nom de l'utilisateur
    if [ -z "$2" ]; then
      OWNER="$DEFAULT_OWNER"
    else
      OWNER="$2"
    fi
     
     
    # Nom de la source (objet) à extraire
    if [ -z "$3" ]; then
      SOURCENAME=''
    else
      SOURCENAME="$3"
    fi
     
     
    # Nom du fichier
    if [ -z "$4" ]; then
     
      if [ -z "$SOURCENAME" ]; then
        FILENAME="$OWNER"
      else
        FILENAME="$SOURCENAME"
      fi
     
    else
      FILENAME="$4"
    fi
     
     
    if [ -z "$SOURCENAME" ]; then
      SOURCENAME='*'
    fi
     
     
     
    FILENAME="$FILENAME.sql"
    rm -f "$FILENAME" 2> /dev/null
     
     
     
     
     
    ##############################################################################
    #
    # Extraction des sources
    #
    #
    printf "=== Extractions en cours dans $FILENAME ===\n\n"
     
    ExtractSource "'"$SOURCENAME"'"
     
    printf "=== Extractions terminées dans $FILENAME ===\n\n"
     
    printf '\n\nQUIT;\n' >> "$FILENAME"
    certe, c'est très loin d'être parfait, mais cela fonctionne!
    à vos claviers...

  9. #9
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    à noter qu'Oracle Enterprise Manager permet de voir le source également si je ne m'abuse

  10. #10
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Citation Envoyé par Fred_D
    à noter qu'Oracle Enterprise Manager permet de voir le source également si je ne m'abuse
    merci à tous !

    c'est dans le cadre de mes etudes (TP Oracle) et j'ai acces qu'a sqlplus.

Discussions similaires

  1. Recuperer le code source de la page actuelle
    Par Lobsterman dans le forum ASP.NET
    Réponses: 7
    Dernier message: 06/07/2009, 20h04
  2. Comment recuperer le code source d une page HTML distante en javascript
    Par herbert dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 26/07/2006, 22h26
  3. Recuperer le code source d'un programme
    Par jalilc dans le forum C
    Réponses: 21
    Dernier message: 23/05/2006, 16h40
  4. [FLASH MX2004 PRO] Recuperer le code source d'une page
    Par adilou1981 dans le forum Flash
    Réponses: 9
    Dernier message: 26/07/2005, 18h11

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