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 :

Redimensionner un tablespace avec plusieurs DBF [11g]


Sujet :

Administration Oracle

  1. #1
    Membre actif
    Homme Profil pro
    Chef de produit
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de produit

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 246
    Points
    246
    Par défaut Redimensionner un tablespace avec plusieurs DBF
    Bonjour,

    J'ai un tablespace avec 31 fichiers DBF (myTBS_01.dbf ... myTBS_31.dbf ).
    Ils occupent 458 Go et il y a 252 Go de libre que j'aimerais bien récupérer.
    Je voulais donc redimensionner mon tablespace pour récupérer l'espace disque non utilisé.

    Déjà en utilisant la commande suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER DATABASE DATAFILE
    Ca m’étonnerait de que ça marche!! vous pourriez me donner votre avis quand même!!

    Sinon je compte suivre les étapes suivantes:

    1-Lancer un export du schéma pour garder une sauvegarde.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    expdp monUser/mdp schemas=monUser directory=Mondossier dumpfile=import.dmp logfile=log_export.log
    2-On supprime les tablespaces avec leur datafiles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DROP TABLESPACE myTBS INCLUDING CONTENTS AND DATAFILES;
    3- Créer un nouveau tablespace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLESPACE myTBS DATAFILE '/oradata/RF/dbf/my_TBS_01.DBF' SIZE 10G AUTOEXTEND ON NEXT 10G MANAGEMENT LOCAL AUTOALLOCATE;
    4- Lancer un import du schéma
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    impdp monUser/mdp DIRECTORY=Mondossier DUMPFILE = import.dmp

    J'aimerais avoir une confirmation de votre part pour cette procédure.
    merci par avance pour vos réponses.

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2010
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 73
    Points : 93
    Points
    93
    Par défaut
    Bonjour

    la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter database datafile '.../../MyTbds_01.dbf' resize xxYYm ;
    permet de retailler un datafile. Bien sure que ça marche. Sauf si sur ce datafile il y a des données des tables dessus.

    Ta solution par export / import peut être appropriée mais attention aux autres objets que sont les synonymes, les index, les grants ... eventuels sur les tables. Lorsqu'on utilise les export / import, parfois on les perd si on ne met pas les bons arguments.

    Moi je propose plutot ceci :

    1) Création d'un tablespace (on l'appellera par la suite TBS_TEMPO) avec une taille aussi grosse que la place occupée dans le tablespace que tu veut retailler (on l'appellera par la suite TBS_A_RETAILLER).

    2) Déplacer toutes les tables du tablespace TBS_A_RETAILLER vers TBS_TEMPO. La reuqête suivante permet de générer les ordres sql nécessaires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT    'alter table '
           || owner
           || '.'
           || table_name
           || ' MOVE TABLESPACE TBS_TEMPO PARALLEL 4 ;'
      FROM dba_tables
     WHERE owner = 'nom_schema'
    UNION
    SELECT 'alter table ' || owner || '.' || table_name || ' NOPARALLEL  ;'
      FROM dba_tables
     WHERE owner = 'nom_schema'
    3) Une fois toutes les tables déplacées dans le tablespace TBS_TEMPO, tu peux retailler tes datafiles avec la commande alter database datafile ....

    4) Redéplacer tous tes tables du tablespace TBS_TEMPO vers le tablespace TBS_A_RETAILLER.

    5) s'assurer que toutes les tables ont été correctement remises au bon endroit et que TBS_TEMPO est bien vide.

    6) Supprimer le tablespace TBS_TEMPO.

    7) Rebuilder tous les index car l'opération de move tablespace résactive les index des tables impactées. La requête suivante est intéressante pour cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT   'alter index ' || owner || '.' || index_name
             || ' REBUILD PARALLEL 4 ;'
        FROM dba_indexes
       WHERE owner = 'nom_schema'
    UNION
    SELECT   'alter index ' || owner || '.' || index_name || ' NOPARALLEL  ;'
        FROM dba_indexes
       WHERE owner = 'nom_schema'
    ORDER BY 1 DESC;
    Voilà, en espérant t'avoir aidé

  3. #3
    Membre actif
    Homme Profil pro
    Chef de produit
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de produit

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Points : 246
    Points
    246
    Par défaut
    Bonjour,
    Merci pour la réponse super détaillée et merci pour les requêtes sont très utiles pour reconstruire mes tablespaces.
    Je tenterai de faire cela.

    Merci

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

Discussions similaires

  1. Créer une fenêtre avec plusieurs sections redimensionnables
    Par alaskabender dans le forum Débuter
    Réponses: 3
    Dernier message: 18/12/2014, 11h36
  2. Réponses: 2
    Dernier message: 30/09/2003, 15h57
  3. Réponses: 2
    Dernier message: 26/09/2003, 15h54
  4. ProgressBar avec plusieurs procédures
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 08/09/2002, 18h03
  5. Shortcut avec plusieurs touches
    Par scorpiwolf dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/07/2002, 15h57

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