9
votes

Oracle: Est-il possible de créer un synonyme de schéma?

Premièrement

Je suis un oracle débutant et je n'ai pas de gourou oracle local pour m'aider.

Voici mon problème / question

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.

Sur les différentes instances, le schéma contenant les tables a des noms différents.

Évidemment, je ne veux pas avoir à modifier les scripts pour les faire sur mesure pour différentes instances.

Il m'a été suggéré que la solution peut être de configurer des synonymes.

est-il possible de définir un synonyme de schéma de table sur chaque instance et utilisez le synonyme de mes scripts?

Y a-t-il d'autres moyens de faire ce travail sans modifier les scripts à chaque fois?

Merci pour toute aide.


0 commentaires

3 Réponses :


2
votes

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


3 commentaires

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 . 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.



2
votes

Oui, il existe un moyen caché de créer un synonyme de schéma.

Il y a un paramètre caché _enable_schema_synonymes . C'est faux par défaut, mais vous pouvez la définir sur true et créer un synonyme.


2 commentaires

depuis 12c! Blog .DBI-SERVICES.COM / ...


Mais ils sont globaux: - /, vous ne pouvez donc pas avoir comme-nommé Synonymes dans différents schémas , par ex. Ayant une instance de produit / test mixte avec des schémas Customer_MGMT_Prod , clients_mgmt_test , produits_mgmt_prod , produits_mgmt_test , avec "Synonymes localisés" clients_mgmt et produits_mgmt qui doit se référer au test correspondant ou prod schéma.



4
votes

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


3 commentaires

Si possible, ajoutez du texte pertinent avec le lien. Comme le lien peut changer à l'avenir


depuis 12c! 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.