J'aimerais recuperer un package que j'ai compiler d la semaine pour le modifié. Est ce possible?
J'aimerais recuperer un package que j'ai compiler d la semaine pour le modifié. Est ce possible?
Les sources sont visibles au travers de la vue USER_SOURCES.
cad?
je fait select * from user_sources?
ben déjà vous pouvez essayer, non ???![]()
Sinon, n'importe quel outil (SQL developer, par exemple) le permet.
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?
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é :
l'erreur qu'il me donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM USER_SOURCES;
merciORA-00942: table or view does not exist![]()
sans S à source : all_source ou user_source
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:produira l'extraction de tout ce qui est possible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part sqlplus user/password@sid @GetSource.sql '*' '*' > AllSources.txt
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 /****************************************************************************** * * 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;
certe, c'est très loin d'être parfait, mais cela fonctionne!
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"
à vos claviers...
à noter qu'Oracle Enterprise Manager permet de voir le source également si je ne m'abuse![]()
merci à tous !Envoyé par Fred_D
c'est dans le cadre de mes etudes (TP Oracle) et j'ai acces qu'a sqlplus.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager