Domanda

In primo luogo

Sono un newbie Oracle, e non ho un guru oracolo locale per aiutarmi.

Ecco il mio problema / domanda

ho alcuni script SQL che devono essere rilasciato per un numero di istanze di Oracle. Gli script creano stored procedure.
Lo schema in cui vengono create le stored procedure è diverso dallo schema che contiene le tabelle da cui le stored procedure stanno leggendo.

Sulle diverse istanze, lo schema contenente le tabelle ha nomi diversi.

Ovviamente, io non voglio avere a modificare gli script per farli su misura per diverse istanze.

È stato suggerito a me che la soluzione potrebbe essere quella di istituire sinonimi.

E 'possibile definire un sinonimo per lo schema della tabella in ogni istanza, e utilizzare il sinonimo nei miei script?

Ci sono altri modi per fare questo lavoro senza modificare gli script ogni volta?

Grazie per qualsiasi aiuto.

È stato utile?

Soluzione

Sarebbe utile sapere quale versione di Oracle, ma come di 10g - No, non è possibile effettuare un sinonimo di uno schema
. È possibile creare i sinonimi di tabelle, che consentirebbe di non si specifica lo schema negli script. Ma significa che i sinonimi devono essere identici in ogni istanza per essere di qualche utilità ...

L'altra opzione sarebbe quella di sostituire i riferimenti dello schema con variabili, in modo che quando lo script viene eseguito all'utente viene richiesto per i nomi di schema. Preferisco questo approccio, perché è meno lavoro. Ecco un esempio che avrebbe funzionato in SQLPlus:

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

La bellezza di questo è che la persona che esegue lo script sarebbe richiesto solo una volta per ogni variabile, non ogni volta che si incontra la variabile. Quindi state attenti a errori di battitura:)

Altri suggerimenti

Sì, è possibile creare sinonimo di uno schema.

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

Supponendo che si dispone già di uno schema di nome ORA ...

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

Maggiori informazioni qui: http: // oracle -network.com/database/how-to-create-synonym-for-a-schema/

Sì, c'è un modo nascosto per creare un sinonimo schema.

C'è un _enable_schema_synonyms parametro nascosto. E 'falso per impostazione predefinita, ma è possibile impostare a true e creare un sinonimo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top