Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels 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 15/02/2008, 11h20   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 20
Points : 12
Points : 12
Par défaut Convertion de champs long_raws en blob

Bonjour,

Je voudrais connaitre les impacts et les ressource nécessaire pour la migration d'un champ long_raw en blob sur une table contenant 2 Millions de ligne.

En faite cette table je souhaite la partitionné pour optimiser les perfs et facilité son exploitation.

Avez-vous une idée de la méthode à mettre en place à une telle action et le temps que cela va prendre ?

Toutes les informations sont bonnes à prendre.

Merci

Yo
wapette21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 11h28   #2
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
la méthode pas terrible : http://download.oracle.com/docs/cd/B...ctions139a.htm

la méthode élégante :
Code :
ALTER TABLE <latable> MODIFY <lacolonne> blob;
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 11h31   #3
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
voila la procédure d'Oracle : How to Convert from Long Raw to BLOB using PL/SQL

Quand au temps, bah seul des tests pourront te permettre de répondre

Pour ceux qui n'aurait pas accès à Metalink :
Code :
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
REM long2lob.sql 
REM Version 1.0, last updated 8/8/97 
REM This procedure copies LONG DATA INTO a CLOB, AS described IN 
REM Chapter 21 of _Oracle8 PL/SQL Programming_ BY Scott Urman. 
 
CREATE OR REPLACE PROCEDURE Long2Lob( 
  -- Uses DBMS_SQL to select a LONG column identified by p_LongQuery, and 
  -- returns it in p_CLob. 
  p_LongQuery IN VARCHAR2, 
  p_CLob IN OUT CLOB) AS 
 
  c_ChunkSize CONSTANT INTEGER := 100; 
 
  v_CursorID INTEGER; 
  v_RC INTEGER; 
  v_Chunk VARCHAR2(100); 
  v_ChunkLength INTEGER; 
  v_Offset INTEGER := 0; 
BEGIN 
  -- Open the cursor, define, execute, and fetch. 
  v_CursorID := DBMS_SQL.OPEN_CURSOR; 
  DBMS_SQL.PARSE(v_CursorID, p_LongQuery, DBMS_SQL.V7); 
  DBMS_SQL.DEFINE_COLUMN_LONG(v_CursorID, 1); 
  v_RC := DBMS_SQL.EXECUTE_AND_FETCH(v_CursorID); 
 
  -- Loop over the LONG, fetching c_ChunkSize characters at a time from 
  -- the LONG and adding them to the LOB. 
  LOOP 
    DBMS_SQL.COLUMN_VALUE_LONG(v_CursorID, 1, c_ChunkSize, v_Offset, 
                          v_Chunk, v_ChunkLength); 
    DBMS_LOB.WRITE(p_CLob, v_ChunkLength, v_Offset + 1, v_Chunk); 
    IF v_ChunkLength < c_ChunkSize THEN 
      EXIT; 
    ELSE 
      v_Offset := v_Offset + v_ChunkLength; 
    END IF; 
  END LOOP; 
 
  DBMS_SQL.CLOSE_CURSOR(v_CursorID); 
EXCEPTION 
  WHEN OTHERS THEN 
   -- Clean up, and reraise the error. 
    DBMS_SQL.CLOSE_CURSOR(v_CursorID); 
    RAISE; 
END Long2Lob; 
/
ALTER TABLE c'est bien aussi
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 11h35   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Après réflection, le but étant de partitionner, il faudra de toute façon recréer la table du coup, je te conseille :

Code :
1
2
INSERT INTO tab_partitionnee
SELECT col1, col2, to_lob(col_raw) FROM tab;
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 12h47   #5
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 20
Points : 12
Points : 12
J'avais pense a l'ALTER TABLE j'ai vu qu'il lui fallait le double d'espace pour le faire, je me demander si il pouvait avoir d'autre impact que je ne mesure pas pour moi le seul impact que je vois c'est le temps que cela va prendre et donc l'indisponibilité de la table.

Avez des retours d'expérience ?

Merci de vos réponses
wapette21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 12h50   #6
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 20
Points : 12
Points : 12
C'est vrais le but et de partitionner la table mais aussi de anticipé la future migration vers oracle 10g (qui n'utilise plus les long_raw je croit).

Cependant je ne pense pas qu'il est judicieux de réalisé les deux interventions en même temps :

- migration de champ
- partitionnement de la table

Qu’en pensé vous ?


yo
wapette21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 13h15   #7
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
non, tout à chaud !

ALTER TABLE MODIFY BLOB pour la conversion
suivi de DBMS_REDEFINITION pour partitionner
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 13h42   #8
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
DBMS_REDEFINITION pour partitionner après coup t'es sûr de toi ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 15h08   #9
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
bien sûr !

et à chaud Monsieur, s'il vous plait !

[edit]par contre, faut être en 10g, et comme la version n'était pas indiquée, j'avais compris 11g par défaut mais la phrase "anticipé la future migration vers oracle 10g" me sème le doute....

par contre, les long et long raw existent toujours, mais c'est vraiment la plaie ces types... il faut les modifier, c'est sûr ! [/edit]
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 15h20   #10
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Ha OK, c'est pour ça que ça me surprenait, j'en suis resté au "pas possible de partitionner une table après coup" de la 9i

Merci pour la précision

Citation:
Envoyé par LeoAnderson Voir le message
mais c'est vraiment la plaie ces types...
c'est rien de le dire
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 15h48   #11
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 20
Points : 12
Points : 12
Oui excuser moi je suis actuellement en 9i.

Pour ce qui est des long_raw quoi qu'il arrive je veux m'en séparer.
wapette21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 15h50   #12
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
donc :
CREATE TABLE ... AS INSERT ... SELECT avec TO_LOB
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 16h26   #13
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 20
Points : 12
Points : 12
Quellequ'un peut me dire le temps que cela prend en gros ?

sur du vecu - ma table contient plus de 2Millions de ligne.

Merci a vous tous.
wapette21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 16h30   #14
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
Le MODIFY existe me semble-t-il en 9i...

de toute façon, si vous voulez passer en 10g, upgradez la base (par la procédure d'upgrade et non le dbua) et ensuite faites les MODIFY et DBMS_REDEFINITION
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 16h30   #15
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
encore une fois : non ! Ca dépend du matériel, du paramétrage, du volume de chaque ligne, du partitionnement, etc... fait un test
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 16h52   #16
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
Citation:
Envoyé par orafrance Voir le message
encore une fois : non ! Ca dépend du matériel, du paramétrage, du volume de chaque ligne, du partitionnement, etc... fait un test
je suppose que tu répondais à wapette21 et non à moi ?
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 16h58   #17
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
bien sûr

quelle idée de repondre en même temps que moi aussi

orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 16h59   #18
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par LeoAnderson Voir le message
Le MODIFY existe me semble-t-il en 9i...

de toute façon, si vous voulez passer en 10g, upgradez la base (par la procédure d'upgrade et non le dbua) et ensuite faites les MODIFY et DBMS_REDEFINITION
en effet, autant le faire après coup
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 17h19   #19
Candidat au titre de Membre du Club
 
Inscription : juillet 2006
Messages : 20
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 20
Points : 12
Points : 12
merci pour vos réponse, mon appli ne va pas migrer tout suite en 10g.

Citation:
encore une fois : non ! Ca dépend du matériel, du paramétrage, du volume de chaque ligne, du partitionnement, etc... fait un test
Mais question ne sont pas que pour Toi

enfin merci a vous tous et toi aussi orafrance

a bientot.

Yo

Ps je vais faire des tests en PP bien surs.
wapette21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 17h21   #20
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par wapette21 Voir le message
Mais question ne sont pas que pour Toi
Faut aller sur www.lavoyance-c-bien.fr pour avoir une réponse... ici c'est un forum sérieux
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h24.


 
 
 
 
Partenaires

Hébergement Web