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 04/10/2007, 14h52   #1
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
Par défaut Insertion en masse dans une table

Bonjour

Je dois créer une table T2 qui contient une partie des données de la table T1, cette "partie" représentant tout-de-même 100 millions de lignes, pour environ 10 Go
Le problème concerne mon tablespace UNDO qui risque d'exploser si je fais juste le commit seulement à la fin
Je sais que la commande COPY existe (j'ai cherché au préalable sur le forum ) mais est-ce que en faisant directement un
Code :
CREATE TABLE T2 AS SELECT * FROM T1 WHERE condition;
, le tablespace UNDO sera utilisé ?

Merci d'avance

Edit : base 10g
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2007, 15h26   #2
Membre du Club
 
Inscription : septembre 2005
Messages : 94
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 94
Points : 67
Points : 67
oui undo est utilisé mais le commit est implicite
lca94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2007, 15h34   #3
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
merci pour ta réponse

et sais-tu si la taille nécessaire dans le undo est la même que la taille des données à insérer ?
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2007, 16h06   #4
Membre actif
 
Avatar de Loyd1974
 
Inscription : août 2007
Messages : 176
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 176
Points : 172
Points : 172
Les tablespaces undo et redo seront uniquement utilisés au niveau des changements dans le dictionnaire (création de la table par exemple), mais pas au niveau des données

Donc, la réponse à ta question est non, c'est justement l'avantage des CTAS
Loyd1974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2007, 17h15   #5
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
OK je me lance doncdans mon create table as select , merci
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2007, 17h33   #6
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Attention, pour minimiser le redo généré, il faut, si votre base est en mode archive log, créer la table en mode NOLOGGING, sinon le redo est généré.

Exemple:

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
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
dev001> 
dev001> 
dev001> DROP TABLE t;
 
TABLE dropped.
 
dev001> DROP TABLE t2;
 
TABLE dropped.
 
dev001> DROP TABLE t3;
 
TABLE dropped.
 
dev001> 
dev001> SELECT * FROM v$version;
 
BANNER                                                                          
----------------------------------------------------------------                
Oracle DATABASE 10g Enterprise Edition Release 10.2.0.2.0 - Prod                
PL/SQL Release 10.2.0.2.0 - Production                                          
CORE	10.2.0.2.0	Production                                                      
TNS FOR 32-bit Windows: Version 10.2.0.2.0 - Production                         
NLSRTL Version 10.2.0.2.0 - Production                                          
 
dev001> 
dev001> CREATE TABLE t(x int, y varchar2(100), z clob) nologging;
 
TABLE created.
 
dev001> 
dev001> INSERT /*+ append */
  2  INTO t
  3  SELECT 1, to_char(1), to_char(1) FROM dual connect BY level <= 100000;
 
100000 rows created.
 
dev001> 
dev001> commit;
 
Commit complete.
 
dev001> 
dev001> SELECT value, name FROM v$mystat, v$statname
  2  WHERE name = 'redo size' AND v$statname.statistic# = v$mystat.statistic#;
 
     VALUE NAME                                                                 
---------- ----------------------------------------------------------------     
    203120 redo size                                                            
 
dev001> 
dev001> CREATE TABLE t2 AS SELECT * FROM t;
 
TABLE created.
 
dev001> 
dev001> SELECT value, name FROM v$mystat, v$statname
  2  WHERE name = 'redo size' AND v$statname.statistic# = v$mystat.statistic#;
 
     VALUE NAME                                                                 
---------- ----------------------------------------------------------------     
   5980492 redo size                                                            
 
dev001> 
dev001> 
dev001> CREATE TABLE t3 nologging AS SELECT * FROM t;
 
TABLE created.
 
dev001> 
dev001> SELECT value, name FROM v$mystat, v$statname
  2  WHERE name = 'redo size' AND v$statname.statistic# = v$mystat.statistic#;
 
     VALUE NAME                                                                 
---------- ----------------------------------------------------------------     
   6154936 redo size                                                            
 
dev001> 
dev001> 
dev001> connect / AS sysdba
Connected.
 
dev001> archive log list
DATABASE log mode              Archive Mode
Automatic archival             Enabled
Archive destination            c:\oradata\dev001\arch
Oldest online log sequence     205
Next log sequence TO archive   207
Current log sequence           207
dev001> exit
Avec des opérations en mode NOLOGGING, il faut aussi penser aux sauvegardes.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor 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 21h55.


 
 
 
 
Partenaires

Hébergement Web