Je suis un oracle débutant et je n'ai pas de gourou oracle local pour m'aider. P>
J'ai des scripts SQL qui doivent être libérés à un certain nombre d'instances Oracle.
Les scripts créent des procédures stockées.
Le schéma dans lequel les procédures stockées sont créées est différente du schéma qui contient les tables à partir desquelles les procédures stockées sont en lecture. P>
Sur les différentes instances, le schéma contenant les tables a des noms différents. P>
Évidemment, je ne veux pas avoir à modifier les scripts pour les faire sur mesure pour différentes instances. P>
Il m'a été suggéré que la solution peut être de configurer des synonymes. P>
est-il possible de définir un synonyme de schéma de table sur chaque instance et utilisez le synonyme de mes scripts? p>
Y a-t-il d'autres moyens de faire ce travail sans modifier les scripts à chaque fois? p>
Merci pour toute aide. P>
3 Réponses :
Cela aiderait à savoir quelle version d'Oracle, mais à partir de 10g - non, vous ne pouvez pas faire de synonyme de schéma .
Vous pouvez créer des synonymes pour les tables, ce qui vous permettrait de ne pas spécifier le schéma dans les scripts. Mais cela signifie que les synonymes doivent être identiques sur chaque instance pour être d'une utilisation ...
L'autre option serait de remplacer les références de schéma avec des variables, de sorte que le script exécute l'utilisateur est invité à demander aux noms de schéma. . Je préfère cette approche, car c'est moins de travail. Voici un exemple qui fonctionnerait dans SQLPlus: P>
CREATE OR REPLACE &schema1..vw_my_view AS SELECT * FROM &&schema2..some_other_table
Les variables sonnent comme une option très sensible. Merci beaucoup pour la suggestion. Je vais essayer!
Pour faire ce travail, vous avez besoin des références pour être && schema1..vw_my_view code>. Les périodes sont utilisées pour indiquer la fin des noms de variable par défaut, de sorte que vous avez besoin de deux lorsque vous les utilisez pour SCHEMA: une pour indiquer la fin de la variable et une seconde pour agir en tant que schéma / séparateur d'objets.
@ALLAN: Mise à jour, je ne me souviens pas d'être un problème sur 10g mais je ne les utilisais pas non plus pour les espaces réservés de schéma.
Oui, il existe un moyen caché de créer un synonyme de schéma. P>
Il y a un paramètre caché _enable_schema_synonymes code>. C'est faux par défaut, mais vous pouvez la définir sur true et créer un synonyme. P>
depuis 12c! b> Blog .DBI-SERVICES.COM / ...
Mais ils sont globaux: - /, vous ne pouvez donc pas avoir comme-nommé Synonymes dans différents schémas b>, par ex. Ayant une instance de produit / test mixte avec des schémas Customer_MGMT_Prod i>, clients_mgmt_test i>, produits_mgmt_prod i>, produits_mgmt_test i>, avec "Synonymes localisés" clients_mgmt i> et produits_mgmt i> qui doit se référer au test correspondant i> ou prod i> schéma.
Oui, vous pouvez créer Synonyme pour un schéma.
CREATE SCHEMA SYNONYM ORASYN for ORA; -- create synonym for schema CREATE TABLE ORASYN.TAB1(id number(10)); -- create table in schema
Si possible, ajoutez du texte pertinent avec le lien. Comme le lien peut changer à l'avenir
depuis 12c! b> Blog .DBI-SERVICES.COM / ...
Veuillez mettre tout le contenu pertinent sur ce message afin que lorsque l'article disparaisse, un certain contexte de la réponse reste disponible pour les futurs visiteurs. - Le lien est mort ici.