Oracle:スキーマの同義語を作成することは可能ですか?
質問
最初に
私はオラクルの初心者であり、私を助けてくれる地元のオラクルの第一人者はいません。
これが私の問題 /質問です
私はいくつかのSQLスクリプトを持っています。これらのスクリプトは、多くのOracleインスタンスにリリースする必要があります。スクリプトは、ストアドプロシージャを作成します。
ストアドプロシージャが作成されるスキーマは、ストアドプロシージャが読み取られているテーブルを含むスキーマとは異なります。
さまざまなインスタンスでは、テーブルを含むスキーマの名前は異なります。
明らかに、私はスクリプトをさまざまなインスタンスに特注にするために編集する必要はありません。
解決策は同義語を設定することである可能性があることが示唆されています。
各インスタンスのテーブルスキーマの同義語を定義し、スクリプトで同義語を使用することは可能ですか?
毎回スクリプトを編集せずにこの作品を作る他の方法はありますか?
助けてくれてありがとう。
解決
どのバージョンのOracleを知るのに役立ちますが 10gの時点で - いいえ、スキーマの同義語を作成することはできません.
テーブルの同義語を作成できます。これにより、スクリプト内のスキーマを指定しないことができます。しかし、それは、あらゆる用途であるためには、すべてのインスタンスで同義語が同一である必要があることを意味します...
もう1つのオプションは、スキーマ参照を変数に置き換えることです。したがって、スクリプトが実行されると、ユーザーはスキーマ名が求められます。作業が少ないので、私はこのアプローチを好みます。 SQLPLUSで機能する例は次のとおりです。
CREATE OR REPLACE &schema1..vw_my_view AS
SELECT *
FROM &&schema2..some_other_table
これの美しさは、スクリプトを実行する人は、変数に遭遇するたびにではなく、各変数に対して1回しか促されないということです。タイプミスに注意してください:)
他のヒント
はい、スキーマの同義語を作成できます。
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
あなたがすでにOraという名前のスキーマを持っていると仮定します...
CREATE SCHEMA SYNONYM ORASYN for ORA; -- create synonym for schema
CREATE TABLE ORASYN.TAB1(id number(10)); -- create table in schema
詳細はこちら: http://oracle-network.com/database/how-to-create-synonym-for-a-schema/
はい、スキーマの同義語を作成する隠された方法があります。
隠されたパラメーターがあります _enable_schema_synonyms
. 。デフォルトでは虚偽ですが、それを真に設定して同義語を作成できます。