|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2007 Messages : 22 ![]() |
Bonjour à tous !
Chouette, une section [débutant] Ce que j'aime dans Oracle, c'est que lorsque que je pense avoir compris, il me suffit d'attendre 5mn pour me rendre compte que ce n'est pas le cas ^^ Voilà ce qui m'amène. Nous n'avons pas de pro-ORACLE chez nous mais pourtant de nombreuses "appliquettes" à tourner dessus. Le serveur (vieux, très vieux...) va être migré et nous faisons donc quelques test pour préparer çà au mieux. L'ancienne mouture est un peu hasardeuse... il y a une instance PROD et une instance DEV qui comporte toutes les 2 des applis en production Parfois les DATA et les INDEX sont séparés dans des tablespaces différents, parfois non... on a même des tables stockées dans le tbs system, bref c'est un peu le bazard... On a donc décidé de créer plusieurs instances propres, des tablespaces avec des noms explicites, les DATA sur une partition (APPLI1_TBS.dbf), les INDEX sur une autre (APPLI1_INDX.dbf), les archives sur une 3ème. Je pense que c'est un peu la philosophie d'oracle ? Chose que je ne saisis pas, lorsque nous migrerons les données une dernière fois de l'ancien serveur, après tests, on s'est rendu compte que l'on devait supprimer les tables pour que le dump ne renvoie pas d'erreur (avec du coup le travail sur les index à refaire). On a aussi essayé avec l'option ignore=y mais là, tout les tuples sont en doublons Dois-je comprendre que lorsque que nous ferons le dernier import, il faudra de nouveau changer les tbs des index ? Pourquoi est-ce aussi compliqué d'importer uniquement les rows ? Pourquoi ne peux-t-on pas déclarer pour un schémas un tbs d'index par défaut, de façon à ce que l'index créé dynamiquement se stocke directement dedans... Enfin, pardonnez mon ignorance ^^ |
|
|
00
|
|
|
#2 | ||
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
complétement
Citation:
Pour comprendre le problème il suffit de regarder le log, tu verras qu'un import se compose de la création de la table (avec ignore=y l'erreur est ignorée si la table existe), insert des données (donc si la table existait t'as des doublons), création des indexes et contraintes, attribution des droits. Citation:
aucun problème, t'es dans la bonne section
|
||
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2007 Messages : 22 ![]() |
Merci pour ces renseignements
Donc, si je comprends bien et pour pas ne me prendre trop la tête, nos phases de tests ont démontré que çà fonctionnait. Lorsqu' arrivera le jour J de la bascule vers le nouveau serveur, on fait un dump des schémas applicatifs de l'ancien serveur (les DATA doivent arrivées dans les tbs déclarés par défaut lors de la création de nos nouveaux users) et on exécute un petit script dynamique (alter index....) pour basculer les INDEX sur les tbs dédiés à çà. En réfléchissant un peu plus, la manip n'est pas si compliquée que çà, étant normalement faite pour la dernière fois... ![]() Si je pousse un peu plus loin la réflexion, nous avons décidé d'investir dans un serveur de référence, identique donc (matériel et pile logiciel) à la production, sur lequel nous exécuterons et testerons les correctifs ou autres patchs d'applications. Nous pensons mettre en place une réplication faite la nuit entre la prod et le ref, mais si on réplique par le biais des fichiers (sauvegarde à froid, copie des fichiers via le rso), logiquement le problème d'emplacement des INDEX ne se pose plus non ? Nous aurons vraiment un clone de la base, sans aucune manip particulière ? |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Tu peux aussi faire la méthode bourrin
1) désactiver toutes les contraintes sur la base cible 2) truncate de toutes les tables 3) import avec ignore=y 4) réactiver les contraintes Si la base cible est en 9i, il faudra ensuite faire un rebuild de chaque index pour le changer de tablespace, sinon comme dit Orafrance en 10g tu as le datapump (mieux que export/import) Pour répliquer, soit des exports/imports réguliers, ou bien regarde du côté de STREAMS |
|
|
00
|
|
|
#5 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
|
|
|
|
00
|
|
|
#6 | ||||||||
|
Membre régulier
![]() Inscription : septembre 2005 Messages : 71 ![]() |
Bonjour,
Visiblement il y en a qui aime bien ce compliquer la vie... !? Ton user à un tablespace par defaut on vas dire DATA pour simplifier les choses... Comme tu es un bon DBA... Tu veux répartir les data dans le tablespace DATA et les index dans le tablespace INDX. Ben c'est tout simple... Tu lances ton export : Code :
exp file=./monbordelamoi.dmp log=./monbordelamoi.log owner=monschemabordelique Puis tu verifie que ton user a bien comme tablespace par defaut DATA Code :
Tu lances l'import : Citation:
Code :
Citation:
Donc en gros ça donne : il te faut un DATA et un INDX comme tablespace... Code :
|
||||||||
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : septembre 2005 Messages : 71 ![]() |
Ah oui je suis parti du principe que tu n'avais pas de LOBs sinon les choses se complique un peu (Pas beaucoup plus...)
Cordialement. |
|
|
00
|
|
|
#8 | |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2007 Messages : 22 ![]() |
Citation:
@Tracnac, c'est vraiment censé être moins compliqué ta démonstration ? Je me rends compte que je n'ai pas précisé les versions, donc win2k3 et Oracle 9.2.0.3 (donc pas de datapump pour l'instant). |
|
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Inscription : septembre 2005 Messages : 71 ![]() |
Thamior c'est la plus propre car tu ne fragmente pas ton tablespace DATA avec des "move" indexes...
Sinon pour l'os ça change rien... Cordialement. |
|
|
00
|
|
|
#10 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2007 Messages : 22 ![]() |
J'ai regardé ta méthode Tracnac et il y a quelques points ou j'ai besoin de lumière.
Citation:
Citation:
Citation:
Merci pour l'intérêt porté à mes demandes. |
|||
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
le but du quota à 0 c'est de mettre une erreur sur chaque tentative de copie de data dans le tablespace à 0... dans le 1° cas tu peux pas écrire les indexes dans le 2° c'est les datas.
Ceci dit, INDEXFILE me parait plus judicieux qu'un log farci d'erreurs |
|
|
00
|
|
|
#12 | |||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Citation:
Code :
Il se peut que tu ais quelques soucis si tu désactives des PK avant les FK associées, au pire lancer le script en plusieurs fois avec d'abord un filtre sur " WHERE constraint_type = 'R' "(pour d'abord désactiver les FK), et ensuite avec " WHERE constraint_type <> 'R' ", et l'inverse pour réactiver |
|||
|
|
00
|
|
|
#13 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
rappellons la page sources : http://oracle.developpez.com/sources...active_fk_user
http://oracle.developpez.com/sources...active_fk_user |
|
|
00
|
|
|
#14 | |||
|
Membre régulier
![]() Inscription : septembre 2005 Messages : 71 ![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#15 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Il manque les commandes
T'as des données exportées ? Parce que pas d'erreur mais 0 ligne importée c'est étrange
|
|
|
00
|
|
|
#16 | ||
|
Membre régulier
![]() Inscription : septembre 2005 Messages : 71 ![]() |
Citation:
Je pars du principe que c'est le bordel absolu... donc tu ne sais pas ou sont tes datas, des indexes... donc en virtuel ça donne : TABLESPACE DATA = DATA + INDEX TABLESPACE INDEX = DATA + INDEX Le but est d'interdire a l'outil "import" la creation de data dans des tablespaces que tu ne veux pas... d'ou le quota à 0 sur INDEX. Tu es sur que tout est créé dans le tablespace DATA. Donc imp avec indexes=n constraints=n tu n'importe que les datas... Après tu switch pour faire l'inverse tu ne veux plus de data mais tu veux les indexes donc quota à 0 sur DATA et unlimited sur INDEX Donc imp avec rows=n ignore=y tu n'import que les indexes Citation:
Ce que tu NE veux surtout PAS ici lors de ta réorg... |
||
|
|
00
|
|
|
#17 |
|
Membre régulier
![]() Inscription : septembre 2005 Messages : 71 ![]() |
|
|
|
00
|
|
|
#18 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
ha ok, c'est juste pour créer les objets, j'avais pas vu
Enfin, y'a l'option indexfile, autant l'utiliser non ?
|
|
|
00
|
|
|
#19 |
|
Membre régulier
![]() Inscription : septembre 2005 Messages : 71 ![]() |
|
|
|
00
|
|
|
#20 |
|
Candidat au titre de Membre du Club
![]() Inscription : juin 2007 Messages : 22 ![]() |
Un grand merci pour cet éclaircissement. Je n'ai plus qu'à retenir çà plus de 5mn dans ma cervelle de moineau
@+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com