[Oracle 11g] Deplacer mes tables dans un autre schema/tablespace

Deplacer mes tables dans un autre schema/tablespace [Oracle 11g] - SQL/NoSQL - Programmation

Marsh Posté le 12-07-2012 à 15:13:46    


Bonjour à tous,
 
j'ai été amené à travailler avec Oracle 11g sur un gros projet alors que je n'avais jamais utilisé que MySQL (non innodb) sur des petits projets faciles.
 
J'ai donc commencé un peu en tatonnant à créer mes tables avec SQL Developer.
Pour ce faire, j'ai créé une connexion avec le username "SYSTEM" dans SQL Developer et j'ai créé toutes mes tables.
 
Je sais que j'ai un peu fait les chose à l'envers - au bébut c'était plutôt juste des essais puis j'ai continué en laissant cette réflexion de côté...  :sarcastic:
 
Je ne suis pas très familiarisé avec les USER/SCHEMA et les TABLESPACE mais j'ai bien l'impression que mes tables ne sont pas où elles devraient être !!!   :(  
 
USER/SCHEMA :
Pour le projet, mes tables devront être accessibles via une interface web. Je pense donc créé un USER qui sera identifié par la base de données.
Si j'ai bien compris, quand je vais créer le USER, un SCHEMA correspondant sera créé.
Et un SCHEMA étant une collection d'objet, est-ce que c'est bien dans ce schéma que devraient se trouver mes tables ?
 
TABLESPACE :
Quel rapport entre le SCHEMA et le TABLESPACE ? Est-ce que ce USER (que j'aurai créé) doit avoir son propre TABLESPACE ?
Et donc, est-ce que je dois créé un nouveau TABLESPACE pour ce USER et y mettre toutes mes tables ?
Si oui, il y a-t-il moyen d'exporter toutes mes tables (structure, data, PK, UK, FK, index, ...) du tablespace SYSTEM vers un autre tablespace ?
Si non, j'imagine que c'est parce que ça n'a rien à voir ! Alors, comment déplacer mes tables du schema SYSTEM vers le schema que j'aurai créé (en créant le USER) ?
 
Voilà... un message un peu long...
Merci à ceux qui voudront bien m'aiguiller un peu !
 
(°-°)
 

Reply

Marsh Posté le 12-07-2012 à 15:13:46   

Reply

Marsh Posté le 19-07-2012 à 21:23:47    

Un SCHEMA est un USER possédant des objets (vue, tables, procédure stockées...)
Tes tables possèdent un propriétaire, à savoir le schéma
 
Le tablespace est un espace de stockage logique : tes objets sont stockées dans les tablespaces
Tu n'est pas obligé d'avoir un tablespace par user : quand tu stockes un objet, tu le stockes où tu veux du moment que tu possèdes les droits. Par commodité, on définit un tablespace par défaut pour chaque user, comme cela le tablespace de destination n'est pas mentionné lors de ta requête, ce sera sur le tablespace par défaut
 
Tu peux exporter tout les objets d'un schéma et les réimporter ailleurs, regarde les options de l'utilitaire "impdp" ou "imp" (déprécié depuis la versoin 10g)
Avec impdp c'est plus simple caril y a une option pour remapper le tablespace
Avec imp tu peu spécifier le schéma de destination et par conséquence jouer sur le tablespace de stockage

Reply

Marsh Posté le 20-07-2012 à 08:14:52    


Merci couak !
 
J'ai un peu appronfondi et les choses deviennent plus clair.
 
Par contre, je n'ai pas fait au plus simple pour changer mes tables de schema... J'ai fait une exportation du DDL de toutes mes tables que j'ai "importé" dans mon nouveau schema, j'ai ensuite supprimé toutes les tables du schéma initital. Ce fut un peu plus long qu'avec les commandes "impdp" j'imagine mais comme ça j'étais sûr de mon coup ; je ne suis pas très familiarisé avec les commandes d'administration...
 
Il faut que je trouve une bonne formation en administration !!

Reply

Marsh Posté le 20-07-2012 à 09:27:42    

si tu n'as que des tables, tu peux aussi les déplacer à chaud d'un tablespace à un autre en faisant un ALTER TABLE
Par contre les indexes sont invalidés, et il faut dans ce cas là les reconstruire... sur le bon tablespace

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed