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/04/2011, 15h28   #1
Invité de passage
 
Inscription : août 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 12
Points : 0
Points : 0
Par défaut Problème lors de la suppression d'un tablespace

Bonjour,

Mon problème est que je n'arrive pas à supprimer un tablespace.

Voici l'erreur :

ERREUR Ó la ligne 1 :
ORA-00604: une erreur s'est produite au niveau SQL rÚcursif 1
ORA-02429: impossible de supprimer un index utilisÚ pour la mise en application
d'une clÚ primaire/unique

Avec la commande : drop tablespace table1 including contents;

Merci de vos retours
Arcocide est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 10h36   #2
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
le message me parait clair, tu veux supprimer une tablespace contenant un index utilisé pour une clé primaire/unique !

test case
Code :
1
2
3
4
5
6
7
8
9
10
11
12
SQL> GRANT CREATE TABLE, unlimited tablespace TO u IDENTIFIED BY u;
GRANT succeeded.
SQL> CREATE tablespace tbs1 datafile '/u02/oradata/@/tbs1.dbf' size 2m;
Tablespace created.
SQL> CREATE tablespace tbs2 datafile '/u02/oradata/@/tbs2.dbf' size 2m;
Tablespace created.
SQL> CREATE TABLE u.t(x number) tablespace tbs1;
TABLE created.
SQL>  CREATE UNIQUE INDEX u.i ON u.t(x) tablespace tbs2;
INDEX created.
SQL> ALTER TABLE u.t ADD PRIMARY KEY(x);
TABLE altered.
ora2429
Code :
1
2
3
4
5
6
SQL> DROP tablespace tbs2 including contents AND datafiles;
DROP tablespace tbs2 including contents AND datafiles
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-02429: cannot DROP INDEX used FOR enforcement of UNIQUE/PRIMARY KEY
identifier la violation
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SQL> SELECT owner, table_name, constraint_name
  FROM dba_constraints c
 WHERE EXISTS
          (SELECT *
             FROM dba_tables t, dba_indexes i
            WHERE     t.table_name = i.table_name
                  AND t.owner = i.table_owner
                  AND c.index_owner = i.owner
                  AND c.index_name = i.index_name
                  AND i.tablespace_name = 'TBS2'
                  AND t.tablespace_name != 'TBS2');
 
OWNER  TABLE_NAME CONSTRAINT_NAME
------ ---------- ------------------------------
U      T          SYS_C0026466
Désactiver la contrainte
Code :
1
2
3
4
SQL> ALTER TABLE u.t disable constraint SYS_C0026466;
TABLE altered.
SQL> DROP tablespace tbs2 including contents AND datafiles;
Tablespace dropped.
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 10h58   #3
Membre habitué
 
Inscription : septembre 2008
Messages : 92
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2008
Messages : 92
Points : 112
Points : 112
ce tablespace contient surement l'index de la contrainte et pas la table donc si tu veux le droper rebuild l'index sur un autre tablespace avant.
C'était une pratique courante de mettre les index dans des tablespace séparé des tables pour facilement répartir les IO sur plusieurs disques avec les baies c'est devenu inutile.
a.presles est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/04/2011, 11h13   #4
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
bonne idée,

Code :
ALTER INDEX U.I REBUILD TABLESPACE TBS1

pour faire un rebuild de l'index (non partitionné)
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider 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 05h15.


 
 
 
 
Partenaires

Hébergement Web