Frage

Zuerst

Ich bin ein Orakel Neuling, und ich habe nicht einen lokalen Oracle-Guru mir zu helfen.

Hier ist mein Problem / Frage

ich einige SQL-Skripte haben, die auf eine Reihe von Oracle-Instanzen freigegeben werden müssen. Die Skripte erstellen Stored Procedures.
Das Schema, in dem die gespeicherten Prozeduren erstellt werden, unterscheidet sich von dem Schema, das die Tabellen enthält, aus denen die gespeicherten Prozeduren lesen.

Auf den verschiedenen Instanzen, das Schema die Tabellen enthält, hat unterschiedliche Namen.

Natürlich, ich will nicht die Skripte zu bearbeiten müssen, um sich für verschiedene Instanzen maßgeschneiderten zu machen.

Es wurde mir vorgeschlagen, dass die Lösung Synonyme können einzurichten.

Ist es möglich, ein Synonym für das Tabellenschema für jede Instanz zu definieren, und das Synonym in meinen Skripte verwenden?

Gibt es andere Möglichkeiten, um diese Arbeit zu machen, ohne jedes Mal die Skripte bearbeiten?

Vielen Dank für jede Hilfe.

War es hilfreich?

Lösung

Es würde helfen, zu wissen, welche Version von Oracle, aber ab 10g - Nein, Sie können nicht ein Synonym für ein Schema machen
. Sie können Synonyme für die Tabellen erstellen, die Sie erlauben würde, nicht das Schema in den Skripten angeben. Aber es bedeutet, dass die Synonyme auf jedem Fall müssen identisch sein, von Nutzen zu sein ...

Die andere Möglichkeit wäre, die Schema-Referenzen mit Variablen zu ersetzen, so dass, wenn das Skript des Benutzer ausgeführt wird, wird für die Schemanamen aufgefordert. Ich ziehe diesen Ansatz, weil es weniger Arbeit ist. Hier ist ein Beispiel, das in SQLPlus funktionieren würde:

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

Das Schöne daran ist, dass die Person, die das Skript ausgeführt würde nur einmal für jede Variable aufgefordert wird, nicht jedes Mal, wenn die Variablen angetroffen werden. Seien Sie also vorsichtig über Tippfehler:)

Andere Tipps

Ja, Sie können Synonym für ein Schema erstellen.

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

Angenommen, Sie bereits ein Schema mit dem Namen ORA ...

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

Weitere Informationen hier: http: // Orakel -network.com/database/how-to-create-synonym-for-a-schema/

Ja, es gibt eine versteckte Art und Weise ein Schema Synonym zu erstellen.

Es gibt einen versteckten Parameter _enable_schema_synonyms. Es ist falsch standardmäßig, aber Sie können es auf true gesetzt und ein Synonym erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top