Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/06/2011, 14h18   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 44
Points : 2
Points : 2
Par défaut récuperer un package dropé

Bonjour,

Est-il possible de récuperer un package dropé ? sachant que le package a été supprimé le 16/06/2011 à 18h.

Base : Oracle 9.2
OS : (AIX)

merci par vance
olap_2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 14h40   #2
Rédacteur
 
Inscription : décembre 2002
Messages : 2 387
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 387
Points : 3 265
Points : 3 265
Malheureusement, les opérations DDL comme le DROP sont définitives, car elles sont suivies par un COMMIT implicite.

Si vraiment la récupération de ce paquetage est vitale et que vous êtes prêt à une manipulation assez lourde, je ne vois qu'une restauration de votre base sur une machine de test pour vous sortir de ce mauvais pas.
Après il suffira d'extraire le code source (dans DBA_SOURCE, par DBMS_METADATA ou un quelconque outil graphique), et de le rejouer sur la base de prod.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/06/2011, 14h49   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 44
Points : 2
Points : 2
Merci mais je n'ai pas compri votre réponse.

Restaurer la base à partir d'un dump ? mais le dump n'existe pas.
olap_2001 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 17/06/2011, 15h47   #4
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
Si tu as une ancienne sauvegarde par exp, tu peux aussi sortir uniquement le script complet de la bd qui devrait contenir ton package.
Ça t'évitera d'avoir à créer une nouvelle bd.
Je ne sais plus l'option précise, je n'ai pas de bd oracle à porter de main, lance une recherche.
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 16h38   #5
Invité de passage
 
Inscription : janvier 2011
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 44
Points : 2
Points : 2
non, le package n'est pas disponible dans une ancienne version. il a été créé cette semaine.
olap_2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 16h58   #6
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Regarde ceci :
Retrieve old versions of procedures with Flashback Query
et dépèche toi car le flashback n'est possible qu'un temps limité
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/06/2011, 17h26   #7
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Using Oracle Flashback Query (SELECT AS OF)
Normalement cette requête devrait te convenir à executer sous sys (et joue autour de l'horraire):
Code :
1
2
3
4
5
SELECT text 
  FROM dba_source AS of timestamp TO_TIMESTAMP('16/06/2011 17:55:00', 'DD/MM/YYYY HH24:MI:SS')
 WHERE OWNER = 'LE_USER'
   AND name='NOM_DU_PACKAGE' 
 ORDER BY line;
Dans sqlplus tu ne verras peut être pas tout le code.
Pour être sûr de ne pas perdre le code (s'il est encore disponnible) le temps de mettre en place ton script spool je te conseil de le sauvegarder dans une table :
Code :
1
2
3
4
5
6
CREATE TABLE UN_SCHEMA_CAR_TU_NE_VEUX_PAS_CREER_UNE_TABLE_DANS_SYS.pkg_back AS
SELECT text 
  FROM dba_source AS of timestamp TO_TIMESTAMP('16/06/2011 17:55:00', 'DD/MM/YYYY HH24:MI:SS')
 WHERE OWNER = 'LE_USER'
   AND name='NOM_DU_PACKAGE'
 ORDER BY line;
A priori la disponnibilité est de quelques heures à quelques jours (max 5) en fonction de l'undo management et de l'activité de la base.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/06/2011, 17h44   #8
Rédacteur
 
Inscription : décembre 2002
Messages : 2 387
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 387
Points : 3 265
Points : 3 265
Citation:
Envoyé par skuatamad Voir le message
Regarde ceci :
Retrieve old versions of procedures with Flashback Query
et dépèche toi car le flashback n'est possible qu'un temps limité
Excellent, je m'en veux de ne pas y avoir pensé !
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 17h54   #9
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Au fait plutôt comme ça, en rajoutant le numéro de ligne, et pense qu'il y a aussi un header :
Code :
1
2
3
4
5
6
CREATE TABLE UN_SCHEMA_CAR_TU_NE_VEUX_PAS_CREER_UNE_TABLE_DANS_SYS.pkg_back AS
SELECT line,text 
  FROM dba_source AS of timestamp TO_TIMESTAMP('16/06/2011 17:55:00', 'DD/MM/YYYY HH24:MI:SS')
 WHERE OWNER = 'LE_USER'
   AND name='NOM_DU_PACKAGE'
 ORDER BY line;
Citation:
Excellent, je m'en veux de ne pas y avoir pensé !
Merci, en même temps l'absence de backup n'est pas normal...
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 18h44   #10
Invité de passage
 
Inscription : janvier 2011
Messages : 44
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 44
Points : 2
Points : 2
Merci bcp pour vos réponses,
mais mon undo_retention=10800s soit 180min

je dois réécrire le package.
olap_2001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 01h38   #11
Rédacteur
 
Inscription : décembre 2002
Messages : 2 387
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 387
Points : 3 265
Points : 3 265
Citation:
Envoyé par skuatamad Voir le message
Normalement cette requête devrait te convenir ...
A vrai dire, la syntaxe AS OF n'existe qu'à partir de la V10.
En V9, il faut d'abord positionner la session en mode Flashback en précisant le point de retour en arrière, faire un SELECT ordinaire, mais qui fera référence au passé, puis repasser la session en mode normal.
Voir un exemple ici http://helyos.developpez.com/flashback/#L4.3

J'ajoute, pour le demandeur qui a visiblement renoncé sans même tester, que la valeur UNDO_RETENTION n'est qu'indicative par défaut, et que selon l'activité modificative subie par la base, on peut retrouver les anciennes données pendant beaucoup moins ou beaucoup plus de temps.
J'ai même eu un cas dans lequel les données visées semblaient perdues, mais où une augmentation après coup de UNDO_RETENTION les a rendues accessibles. Elles étaient donc toujours présentes dans l'UNDO, mais il fallait un peu forcer la porte.
Ca peut donc valoir le coup de tenter sa chance sans pessimisme.

Ceci amène une autre question : jusqu'où peut-on réellement remonter par requête Flashback ?
En V9, je ne connais aucun moyen, mais dès la V10, la requête suivante fournira la réponse :
Code :
SELECT min(start_timestamp) FROM flashback_transaction_query;
On peut considérer cette vue comme une sorte de table externe donnant accès au contenu de l'UNDO.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 30
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h10.


 
 
 
 
Partenaires

Hébergement Web