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 03/03/2008, 16h34   #1
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
Par défaut Insert en mode NOLOGGING

Bonjour,

j'aurais souhaité savoir si pour faire un insert-select en mode nologging il était nécessaire au préalable de passer la table en MODE NOLOGGING ou bien en mettant /*+ APPEND NOLOGGING */ au moment de l'insert ça suffisait?

PS: je suis sur une base Orcle 9.2.0.8
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 22h17   #2
Membre éprouvé
 
Femme
Administrateur de base de données
Inscription : novembre 2007
Messages : 341
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : novembre 2007
Messages : 341
Points : 478
Points : 478
Je crois que si tu fais un insert avec un hint /*+ APPEND NOLOGGING */ et que ta table est en mode logging, le unrecoverable_time de v$datafile ne change pas après l'insert, le paramètre logging de la table semblerait donc prévaloir sur le celui de l'ordre donné.
Je dirais qu'il faut changer l'attribut de la table en nologging. Mais j'attends avec impatience, ou que tu testes, ou l'avis des experts.
Heaven93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 23h44   #3
Membre éprouvé
 
Inscription : décembre 2007
Messages : 354
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 354
Points : 408
Points : 408
Ci-dessous un peiti test. l'information sur l'espace est obtenue par dbms_space.unused_space.
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
DROP TABLE t purge
 
DROP TABLE t purge succeeded.
CREATE TABLE t AS SELECT * FROM dept nologging
 
CREATE TABLE t AS SELECT * FROM dept nologging succeeded.
 
Objet = scott.t
-------------------------
total_blocs ............. = 8
total_octets ............ = 65536
unused_blocs ............ = 4
unused_octets ........... = 32768
hwm_file_id ............. = 5
hwm_extent_head ......... = 77497
hwm_block_in_extent ..... = 4
 
SELECT count(*) FROM t
 
COUNT(*)                                                                                                                                
--------                                                                                                                                
11                                                                                                                                
 
1 rows selected
SELECT file#, unrecoverable_time, unrecoverable_change#, first_nonlogged_scn, first_nonlogged_time
FROM v$datafile
WHERE file# = 5
 
FILE#  UNRECOVERABLE_TIME  UNRECOVERABLE_CHANGE#  FIRST_NONLOGGED_SCN  FIRST_NONLOGGED_TIME                                                                                                                        
-----  ------------------  ---------------------  -------------------  --------------------                                                                                                                                                     
5      2008-03-05          6526455                0                                                                                                
 
SELECT logging
FROM dba_tables
WHERE table_name = 'T'
  AND owner = 'SCOTT'
 
 
LOGGING                                                                                                                                
-------                                                                                                                                
YES                                                                                                                                
 
1 rows selected
INSERT /*+ append nologging */
INTO t
SELECT * FROM t
 
INSERT /*+ append nologging */
INTO t
SELECT * FROM t succeeded.
commit
 
commit succeeded.
 
Objet = scott.t
-------------------------
total_blocs ............. = 8
total_octets ............ = 65536
unused_blocs ............ = 3
unused_octets ........... = 24576
hwm_file_id ............. = 5
hwm_extent_head ......... = 77497
hwm_block_in_extent ..... = 5
 
SELECT file#, unrecoverable_time, unrecoverable_change#, first_nonlogged_scn, first_nonlogged_time
FROM v$datafile
WHERE file# = 5
 
FILE#  UNRECOVERABLE_TIME  UNRECOVERABLE_CHANGE#  FIRST_NONLOGGED_SCN  FIRST_NONLOGGED_TIME                                                                                                                        
-----  ------------------  ---------------------  -------------------  --------------------                                                                                                                                                      
5      2008-03-05          6526455                0                                                                                                                                          
 
ALTER TABLE t nologging
 
ALTER TABLE t nologging succeeded.
SELECT logging
FROM dba_tables
WHERE table_name = 'T'
  AND owner = 'SCOTT'
 
 
LOGGING                                                                                                                                
-------                                                                                                                                
NO                                                                                                                                
 
1 rows selected
INSERT /*+ append nologging */
INTO t
SELECT * FROM t
 
INSERT /*+ append nologging */
INTO t
SELECT * FROM t succeeded.
commit
 
commit succeeded.
 
Objet = scott.t
-------------------------
total_blocs ............. = 8
total_octets ............ = 65536
unused_blocs ............ = 2
unused_octets ........... = 16384
hwm_file_id ............. = 5
hwm_extent_head ......... = 77497
hwm_block_in_extent ..... = 6
 
SELECT file#, unrecoverable_time, unrecoverable_change#, first_nonlogged_scn, first_nonlogged_time
FROM v$datafile
WHERE file# = 5
 
FILE#  UNRECOVERABLE_TIME  UNRECOVERABLE_CHANGE#  FIRST_NONLOGGED_SCN  FIRST_NONLOGGED_TIME                                                                                                                        
-----  ------------------  ---------------------  -------------------  --------------------                                                                                                                                                                                      
5      2008-03-05          6526523                0
__________________
Consultant et formateur Oracle
Michel SALAIS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 08h51   #4
Membre du Club
 
Inscription : novembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 190
Points : 67
Points : 67
bonjour,
est ce que vous pouvez nous fournir la definition ou un toto à propos de nologging
merci
daliok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 10h21   #5
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
Mais ils indiquent quoi ces champs: UNRECOVERABLE_TIME et UNRECOVERABLE_CHANGE# ???

Comment savoir si la MAJ des redo a été effectué après un insert ou pas?
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 11h30   #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
Voir le tableau sur AskTom si on connaît le code SQL concerné. Sinon la seule méthode que je connais consiste à restaurer la base en utilisant les archives logs et de rechercher les objets corrompus
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 11h47   #7
Membre confirmé
 
Inscription : mars 2007
Messages : 750
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 750
Points : 277
Points : 277
Génial ce tableau:

Code :
1
2
3
4
5
6
7
8
9
10
11
 
TABLE Mode    INSERT Mode     ArchiveLog mode      result
-----------   -------------   -----------------    ----------
LOGGING       APPEND          ARCHIVE LOG          redo generated
NOLOGGING     APPEND          ARCHIVE LOG          no redo
LOGGING       no append       ""                   redo generated
NOLOGGING     no append       ""                   redo generated
LOGGING       APPEND          noarchive log mode   no redo
NOLOGGING     APPEND          noarchive log mode   no redo
LOGGING       no append       noarchive log mode   redo generated
NOLOGGING     no append       noarchive log mode   redo generated
farenheiit est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2009, 10h10   #8
Invité de passage
 
Inscription : novembre 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 5
Points : 4
Points : 4
Par défaut Chouette ce tableau

Citation:
Envoyé par farenheiit Voir le message
Génial ce tableau:

Code :
1
2
3
4
5
6
7
8
9
10
11
 
TABLE Mode    INSERT Mode     ArchiveLog mode      result
-----------   -------------   -----------------    ----------
LOGGING       APPEND          ARCHIVE LOG          redo generated
NOLOGGING     APPEND          ARCHIVE LOG          no redo
LOGGING       no append       ""                   redo generated
NOLOGGING     no append       ""                   redo generated
LOGGING       APPEND          noarchive log mode   no redo
NOLOGGING     APPEND          noarchive log mode   no redo
LOGGING       no append       noarchive log mode   redo generated
NOLOGGING     no append       noarchive log mode   redo generated
Merci pour ce tableau
papouel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h19.


 
 
 
 
Partenaires

Hébergement Web