Bonjour,
je suis sur une base 9i et j'aimerais déplacer toutes les données d'un USER se trouvant sur un tablespace TB1 ver un tablespace TB2.
Comment puis-je faire cela?
merci d'avance pour vos réponses
Version imprimable
Bonjour,
je suis sur une base 9i et j'aimerais déplacer toutes les données d'un USER se trouvant sur un tablespace TB1 ver un tablespace TB2.
Comment puis-je faire cela?
merci d'avance pour vos réponses
Bonjour,
Si l' utilisateur n' écrit que dans un seul TBS (TB1) celui par défaut,
le plus simple est :
- export owner=...
- suppression utilisateur
- création utilisateur , TBS TB2 par défaut
- Mettre un Quota à 0 pour l' utilisateur sur TB1
- import fromuser=user touser=user
s' il écrit dans plusieurs TBS, un alter table move
permet de déplacer des tables d' un tbs à un autre
(avec reconstruction des index nécessaires )
cela est toujours vrai en oracle9, en oracle10 et oracle 11 il existe peut-être
d' autres outils ...
cdlt
Cela suiffira pour les objets futurs mais cetainement pas pour ceux qui sont déjà dans TB1 ..Citation:
Ou bien, plus simple, plutôt que de supprimer et recréer l'utilisateur, juste changer son tablespace par défaut devrait suffire
ou alors c' est une super nouveauté d' Oracle10 ou 11 !!!!
Et bien non,
le tablespace n' est qu' une enveloppe logique, il faut bien faire une action physique pour que les données passent d' un datafile à un autre ..
Oracle ne fait rien tout seul .
Si tu mets le quota à 0 sur TB1 pour le USER, oracle n' écrira plus dedans mais laissera les objets existants dedans sans les migrer .
Dans la doc utilities , il y a un exexmple de migration de Tablespace pour un utilisateur
CdltCitation:
This scenario can be used to move a user's tables from one tablespace to another.
For example, you need to move joe's tables from tablespace A to tablespace B after a full database export. Follow these steps:
If joe has the UNLIMITED TABLESPACE privilege, revoke it. Set joe's quota on tablespace A to zero. Also revoke all roles that might have such privileges or quotas.
Role revokes do not cascade. Therefore, users who were granted other roles by joe will be unaffected.
Export joe's tables.
Drop joe's tables from tablespace A.
Give joe a quota on tablespace B and make it the default tablespace for joe.
Import joe's tables. (By default, Import puts joe's tables into
tablespace B.)