Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 10/12/2009 16:55:55
- roya
- Membre
Migration de schéma de Oracle à PostgreSQL
Bonjour,
Je souhaite migrer une base de données Oracle qui possède un schéma "cardplus" associé à un utilisateur "cardplus". Ce schéma / utilisateur possède lui-même un certain nombre d'objets (tables, séquences, vues, etc...).
La migration de cette base Oracle vers PostgreSQL avec ora2pg ajoute un ordre de création du schéma"cardplus" et un positionnement du "search_path" dans la migration des tables mais aucune création d'utilisateur "cardplus" :
CREATE SCHEMA "cardplus";
SET search_path = cardplus, pg_catalog;
Ma question est la suivante : pour se rapprocher le plus du comportement de Oracle dans la gestion d'utilisateur et de schéma,
- est-ce qu'il vaut mieux créer un schéma "cardplus" et positionner le "search_path" ? et éventuellement créer un utilisateur "cardplus" au niveau OS ?
- est-ce qu'il vaut mieux créer un schéma "cardplus" pour l'utilisateur "cardplus" avec la commande :
CREATE SCHEMA AUTHORIZATION cardplus;
Merci pour vos avis et / ou retour d'expérience.
Cordialement,
Alexandra
Hors ligne
#2 10/12/2009 18:48:35
- Marc Cousin
- Membre
Re : Migration de schéma de Oracle à PostgreSQL
Pour être à peu près à l'identique d'Oracle, il suffit de créer le schema cardplus : le search_path par défaut ($user,public) créera les objets dans le schéma de l'utilisateur. L'utilisateur au niveau OS n'a rien à voir et ne servira que si vous utilisez un mécanisme de sécurité ident (probablement pas).
Votre commande CREATE SCHEMA est bonne.
Marc.
Hors ligne
#3 14/12/2009 12:26:25
- roya
- Membre
Re : Migration de schéma de Oracle à PostgreSQL
Bonjour,
Merci pour votre réponse.
Si je comprends bien, sans utiliser de mécanisme de sécurité "ident", il me suffit de :
- créer le schéma cardplus
- positionner le search_path à (cardplus, public) pour que les objets soient bien créés dans le schéma cardplus.
Si je me connecte avec un utilisateur "postgres" par exemple et que je laisse le search_path à ($user,public), les objets seront créés dans le schéma postgres alors que je souhaiterais les créer dans cardplus, c'est bien ça ? Le changement du search_path est donc indispensable à moins de préfixer les ordres de création par exemple des tables par le nom du schéma cardplus, est-ce correct ?
Merci pour votre retour.
Cordialement,
Alexandra
Hors ligne
#4 14/12/2009 12:45:04
- gleu
- Administrateur
Re : Migration de schéma de Oracle à PostgreSQL
Si je me connecte avec un utilisateur "postgres" par exemple et que je laisse le search_path à ($user,public), les objets seront créés dans le schéma postgres alors que je souhaiterais les créer dans cardplus, c'est bien ça ?
En fait, ils seront créés dans le schéma public vu qu'il n'existe pas de schéma postgres par défaut.
Le changement du search_path est donc indispensable à moins de préfixer les ordres de création par exemple des tables par le nom du schéma cardplus, est-ce correct ?
Oui. Il est possible de le faire directement au niveau de la base (ou de l'utilisateur) plutôt que dans le fichier de configuration global. Par exemple, dans ce cas:
ALTER DATABASE base_migrée SET search_path TO 'cardbus';
Guillaume.
Hors ligne
#5 14/12/2009 12:46:20
- wilka
- Membre
Re : Migration de schéma de Oracle à PostgreSQL
Bonjour,
Pour "coller" au mieux au mode de fonctionnement d'oracle, car en oracle la notion de schema est liée au user.
En postgres ces 2 notions sont distinctes.
Il serai bien de créer aussi un utilisateur (base de donnée) cardplus (même nom que le schema)
CREATE ROLE cardplus LOGIN
NOSUPERUSER NOINHERIT NOCREATEDB NOCREATEROLE;
Mise a jour du search path de ce user cardplus:
ALTER ROLE cardplusSET search_path=cardplus, public;
lui donner l'autorisation sur le schema cardplus
GRANT ALL ON SCHEMA cardplusTO cardplus;
Comme cela en vous connectant en cardplus, son schema par defaut sera cardplus.
(Attention si vous avez deja créé des objets avec l'utilisateur postgres dans ce schema, pensez à changer l'owner de ceux ci est de les mettre en cardplus
en se connectant en postgres faire :
ALTER TABLE cardplus.objetx OWNER TO cardplus;
)
Dernière modification par wilka (14/12/2009 12:49:28)
Hors ligne
#6 14/12/2009 13:28:39
- roya
- Membre
Re : Migration de schéma de Oracle à PostgreSQL
Bonjour,
Merci pour vos réponses, cela devient tout de suite plus clair :-)
Effectivement, je pense qu'utiliser un schéma et un rôle cardplus serait le moyen de se rapprocher d'Oracle.
Dernière question, wilka me suggère de positionner le search_path à (cardplus, public) mais ora2pg (que j'utilise pour cette migration) propose par défaut (cardplus, pg_catalog). J'ai dû mal à comprendre parfaitement la différence, si vous pouvez m'éclairer encore une fois.
Merci,
Alexandra
Hors ligne
#7 14/12/2009 14:07:20
- wilka
- Membre
Re : Migration de schéma de Oracle à PostgreSQL
Je ne connais pas ora2pg, peut etre à t-il besoin d'avoir acces directement à des informations se trouvant dans le pg_catalog. dans ce cas il faut lui ajouter dans search_path surtout si les requetes générées par ora2pg utilisent des objets dans pg_catalog (sans prefixer l'objet).
pg_catalog est un schema "correspondant" au schema sys d'oracle, vous trouverez un tas d'informations (trés utiles) sur les objets de la base données.
Le schema public, lui est un schema par défaut (peut etre pratique pour partager des objetcs, pouvant etre utilisés par differents users qui ont leur propre schema. quoique dans mon cas je crée un schema common pour cela, mon public est vide , non je ne suis pas un maniaque du rangement )
Dernière modification par wilka (14/12/2009 14:09:12)
Hors ligne
#8 14/12/2009 14:08:52
- gleu
- Administrateur
Re : Migration de schéma de Oracle à PostgreSQL
public est le schéma existant par défaut pour les nouvelles bases créées. pg_catalog est le schéma contenant les objets systèmes de PostgreSQL. Il n'est pas utile d'ajouter pg_catalog. Ce schéma est de toute façon considéré, qu'il soit spécifiquement indiqué dans le search_path ou pas.
Je dirais à priori qu'il vaut mieux ne pas mettre pg_catalog pour ne pas créer de confusion.
Guillaume.
Hors ligne
#9 14/12/2009 15:10:01
- roya
- Membre
Re : Migration de schéma de Oracle à PostgreSQL
Merci pour vos réponses !!
J'en prends bien note pour la suite de la migration.
Bonne fin de journée,
Alexandra
Hors ligne
Pages : 1