migration mssql->Oracle 11g: probleme sequence
Bonjour,
Je tente actuellement de faire migrer une base de donnée MSSQL sous Oracle 11g et j'ai un probleme concernant la gestion de mes champs Identity sous MSsql.
Je m'explique : lors de la migration, tous les champs de type identity de ma base de depart vont migrer. Par contre, lorque je voudrai inserer des nouvelles informations dans mes tables sour Oracle, le type Identity n'existant pas, c'est les sequences qui devront prendre le relai. Seulement:
- les sequences ne peuvent être initialiser qu'à 1.
- en supposant même qu'il ait un moyen de les initialiser à une autre valeur (ce que j'espere!), le champs de type identity ne s'incremente pas de facon reguliere (de 1 en 1 par exemple), d'où certains trou observer dans mes tables sqlserver que ne detectera ma sequence.
Bref, je ne sais plus quoi faire....
Merci d'avance pour votre aide
Des séquences et des trous
Salut,
Vous pouvez également modifier la prochaine valeur d'une séquence en 3 temps :
- Modification de l'incrément à la valeur voulue,
- Appel de la séquence . nextval,
- Rétablissement de l'incrément à 1.
Exemple pour passer de 15 à 50 :
Code:
1 2 3 4
|
alter sequence MA_SEQ increment 34 nocache;
select MA_SEQ.nextval from dual;
alter sequence MA_SEQ increment by 1 cache 20; |
L'utilisation des séquences Oracle génère des trous. Pour générer des séquences sans trous on peut monter un mécanisme avec une table et du PlSql.
Pour ce qui est de la "détection des trous" existants là encore une solution est de créer les enregistrements par PlSql en prenant le temps de parcourir la table à la recherche d'un trou à combler dans les identifiants.
Pozzo