IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration Oracle Discussion :

Déplacer une colonne CLOB : comment identifier son tablespace? [11gR2]


Sujet :

Administration Oracle

  1. #1
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut Déplacer une colonne CLOB : comment identifier son tablespace?
    Bonjour,

    Comme vous avez dû le constater je pose de multiples questions ces dernières semaines; j'espère que je ne vous saoule pas avec mes problèmes

    Voici ma nouvelle question : j'ai créé une table avec une colonne CLOB puis j'ai fais un move de celle-ci dans un autre tablespace que celui de sa table. Ce que je voudrais c'est vérifier dans les vues Oracle que cette colonne est bien dans ce tablespace mais je n'arrive pas à faire le lien entre les vues des colonnes et celles des tablespaces car il faut passer par les segments et là il y a quelques chose que je ne comprends pas.

    Voici ce que j'ai fais.

    1) Création d’une table avec une colonne CLOB dans le même tablespace que les colonnes non LOB.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE TEST_DD_CLOB ( TEST_DD_ID NUMBER NOT NULL, TEST_DD_NAME CLOB, CONSTRAINT PK_TEST PRIMARY KEY(TEST_DD_ID));
    2) Vérification de la creation de la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * FROM DBA_TABLES WHERE TABLE_NAME = 'TEST_DD_CLOB';  
     
    OWNER:                      ACCD_FRA
    TABLE_NAME:                 TEST_DD_CLOB
    TABLESPACE_NAME:            DATA
    STATUS:                     VALID
    PCT_FREE:                   10
    INI_TRANS:                  1
    MAX_TRANS:                  255
    3) Vérification de la création automatique par Oracle de l’index sur le CLOB
    Oracle génère un nom système pour cet index ; il est de type LOB sur le tablespace par défaut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT * FROM DBA_INDEXES WHERE TABLE_NAME = 'TEST_DD_CLOB';  
     
    OWNER:                    ACCD_FRA
    INDEX_NAME:               SYS_IL0000131892C00002$$
    INDEX_TYPE:               LOB
    TABLE_OWNER:              ACCD_FRA
    TABLE_NAME:               TEST_DD_CLOB
    TABLE_TYPE:               TABLE
    UNIQUENESS:               UNIQUE
    TABLESPACE_NAME:          DATA
    STATUS:                   VALID
    4) Vérification de la creation des segments de la table et de l’index
    Impossible de voir la table ou l’index dans la table dba_segments. En effet on est en mode « Deffered segment creation » et le premier segment de la table ou de l’index sera créé lorsque le premier enregistrement sera inséré.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT * FROM DBA_SEGMENTS WHERE SEGMENT_NAME = 'TEST_DD_CLOB' ORDER BY 2;   	
    No rows selected
     
    SELECT * FROM DBA_SEGMENTS WHERE SEGMENT_NAME = ' SYS_IL0000131885C00002$$' ORDER BY 2;   	
    No rows selected
     
    SHOW PARAMETER DEFERRED_SEGMENT_CREATION
    deferred_segment_creation            boolean  TRUE
    5) Déplacement de la colonne CLOB vers un autre tablespace
    Il faut faire un alter table et spécifier le nouveau tablespace.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE TEST_DD_CLOB MOVE LOB (TEST_DD_NAME) STORE AS (TABLESPACE USER_DATA);
    6) Vérification du déplacement de la colonne CLOB et de l’index
    Index : le tablespace de l’index du CLOB a bien été changé de DATA vers USER_DATA et l’index sur la PK est encore sur le tablespace DATA.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    SELECT * FROM DBA_INDEXES WHERE TABLE_NAME = 'TEST_DD_CLOB';  
     
    •	Index CLOB
    OWNER:                    ACCD_FRA
    INDEX_NAME:               SYS_IL0000131892C00002$$
    INDEX_TYPE:               LOB
    TABLE_OWNER:              ACCD_FRA
    TABLE_NAME:               TEST_DD_CLOB
    TABLE_TYPE:               TABLE
    UNIQUENESS:               UNIQUE
    TABLESPACE_NAME:          USER_DATA
    STATUS:                   VALID
     
    •	Index PK non CLOB
    OWNER:                    ACCD_FRA
    INDEX_NAME:               PK_TEST
    INDEX_TYPE:               NORMAL
    TABLE_OWNER:              ACCD_FRA
    TABLE_NAME:               TEST_DD_CLOB
    TABLE_TYPE:               TABLE
    UNIQUENESS:               UNIQUE
    TABLESPACE_NAME:          DATA
    STATUS:                   VALID

    Vérification que la colonne déplacée a bien changé de tablespace
    C'est là que je coince et que j'ai besoin de votre aide


    7) Création d’un premier enregistrement et vérification de la création du segment de la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO TEST_DD_CLOB VALUES (1, ‘TEST DD CLOB’);
    one row created
    La création du segment de la table est OK.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT * FROM DBA_SEGMENTS WHERE SEGMENT_NAME = 'TEST_DD_CLOB' ORDER BY 2;   	
     
    OWNER:             ACCD_FRA
    SEGMENT_NAME:      TEST_DD_CLOB
    SEGMENT_TYPE:      TABLE
    TABLESPACE_NAME:   DATA
    BYTES:             65536
    BLOCKS:            8
    EXTENTS:           1
    INITIAL_EXTENT:    65536
    NEXT_EXTENT:       1048576
    MIN_EXTENTS:       1
    MAX_EXTENTS:       2147483645
    MAX_SIZE:          2147483645
    La création du segment de l’index est OK.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT * FROM DBA_SEGMENTS WHERE SEGMENT_NAME = 'SYS_IL0000131892C00002$$' ORDER BY 2;
     
    OWNER:             ACCD_FRA
    SEGMENT_NAME:      SYS_IL0000131892C00002$$
    SEGMENT_TYPE:      LOBINDEX
    TABLESPACE_NAME:   USER_DATA
    BYTES:             65536
    BLOCKS:            8
    EXTENTS:           1
    INITIAL_EXTENT:    65536
    NEXT_EXTENT:       1048576
    MIN_EXTENTS:       1
    MAX_EXTENTS:       2147483645
    MAX_SIZE:          2147483645

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    C'est sans doute la vue DBA_LOBS qui vous manque, et qui fait le lien entre les tables et les segments LOB.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT    l.owner as PROPRIO, 
        l.table_name as NOM_TABLE, 
        segment_name as SEGMENT, 
        s.segment_type as TYPE, 
        s.tablespace_name as TABLESPACE
    FROM dba_segments s INNER JOIN dba_lobs l USING (segment_name)
    WHERE l.owner='&PROPRIO'
    AND l.table_name='&NOM_TABLE';

  3. #3
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Un gros merci pour cette réponse rapide
    Je n'avais pas pensé à regarder les tables dédiées aux lob!

    Pour info, je n'ai même pas à regarder dans DBA_SEGMENTS car dans dba_lobs j'ai ce que je voulais : le nom de la colonne et le nom du tablespace associé!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select * from dba_lobs where column_name = 'TEST_DD_NAME';
    
    OWNER:            ACCD_FRA
    TABLE_NAME:       TEST_DD_CLOB
    COLUMN_NAME:      TEST_DD_NAME
    SEGMENT_NAME:     SYS_LOB0000131892C00002$$
    TABLESPACE_NAME:  USER_DATA
    Demain je pose une autre question

  4. #4
    Membre chevronné
    Homme Profil pro
    xxxxxxxxx
    Inscrit en
    Avril 2015
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : xxxxxxxxx

    Informations forums :
    Inscription : Avril 2015
    Messages : 395
    Par défaut Déplacer une colonne CLOB : comment identifier son tablespace?
    A propos de tes deux indexes un a été déplacé (celui de type LOB) vers le nouveau tablespace,
    et l'autre est résté dans l'ancien, ce que tu peux faire c'est tu fais
    alter index xxxxxx_pk rebuild nouveau_tablespace ;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déplacer une colonne dans une table...
    Par ralkif dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 07/10/2009, 06h50
  2. Déplacer une colonne dans la table
    Par Invité dans le forum Administration
    Réponses: 2
    Dernier message: 15/01/2009, 13h01
  3. Import d'une colonne CLOB avec du XML
    Par bibi92 dans le forum Import/Export
    Réponses: 2
    Dernier message: 29/09/2008, 19h41
  4. Comment faire pour qu'une colonne s'agrandisse selon son contenu?
    Par loic20h28 dans le forum Windows Forms
    Réponses: 19
    Dernier message: 13/08/2008, 19h34
  5. Déplacer une colonne
    Par php_de_travers dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/05/2006, 18h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo