Question

Tout d'abord

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

Voici mon problème / question

J'ai quelques scripts SQL qui doivent être libérées à 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érent du schéma qui contient les tables à partir de laquelle les procédures stockées sont en train de lire.

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

De toute évidence, je ne veux pas avoir à modifier les scripts pour les faire sur mesure pour les différentes instances.

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

Est-il possible de définir un synonyme pour le schéma de la table sur chaque instance, et utiliser le synonyme dans mes scripts?

Y at-il d'autres façons de faire ce travail sans éditer les scripts à chaque fois?

Merci pour toute aide.

Était-ce utile?

La solution

Il serait utile de savoir quelle version d'Oracle, mais à partir de 10g - non, vous ne pouvez pas faire un synonyme pour un schéma
. Vous pouvez créer des synonymes pour les tables, qui vous permet pas de spécifier le schéma dans les scripts. Mais cela signifie que les synonymes doivent être identiques sur tous les cas être d'une quelconque utilité ...

L'autre option serait de remplacer les références de schéma avec des variables, donc quand l'utilisateur exécute le script est invité pour les noms de schéma. Je préfère cette approche, parce qu'il est moins de travail. Voici un exemple qui fonctionnerait dans SQLPlus:

CREATE OR REPLACE &schema1..vw_my_view AS
  SELECT *
    FROM &&schema2..some_other_table

La beauté est que la personne qui exécute le script ne sera invité une fois pour chaque variable, pas à chaque fois est rencontré la variable. Alors faites attention à des fautes de frappe:)

Autres conseils

Oui, vous pouvez créer un synonyme de schéma.

select ksppinm, ksppstvl from x$ksppi a, x$ksppsv b where a.indx=b.indx and ksppinm like '%schema%synonym%'
ALTER SYSTEM SET  "_enable_schema_synonyms" = true SCOPE=SPFILE;
STARTUP FORCE
show parameter synonym

En supposant que vous avez déjà un schéma nommé ORA ...

CREATE SCHEMA SYNONYM  ORASYN for ORA;   -- create synonym for schema
CREATE TABLE ORASYN.TAB1(id number(10)); -- create table in schema

Plus d'informations ici: http: // oracle -network.com/database/how-to-create-synonym-for-a-schema/

Oui, il y a un moyen caché pour créer un synonyme de schéma.

Il y a un paramètre caché _enable_schema_synonyms. Il est faux par défaut, mais vous pouvez le mettre à true et créer un synonyme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top