シノニムを使用したデータの場所とネットワーク透過性の提供

Oracle Databaseのシノニム機能を使用することで、データの場所の透過性とネットワークの透過性を完全に実現できます。

シノニムを定義すると、ユーザーは、基礎となる表またはネットワーク・プロトコルを認識する必要がなくなります。シノニムは、すべてのOracleユーザーが参照できるようにパブリックとして指定できます。また、シノニムをプライベートとして指定することもできます。この場合、すべてのOracleユーザーがOracle以外の表にアクセスするためにシノニムを定義する必要があります。

次の文では、SybaseデータベースのユーザーORACLEのスキーマ内で、emp表に対してシステム単位のシノニムが作成されます。

CREATE PUBLIC SYNONYM emp FOR "ORACLE"."EMP"@SYBS;

関連項目:

シノニムの詳細は、『Oracle Database管理者ガイド』を参照してください。

例: 分散問合せ

分散問合せを示す例です。

注意:

これらの例を環境にあわせて変更してください。そのままの状態では実行しないでください。

次の文では、Oracleデータベース・サーバー、IBM DB2データベースおよびSybaseデータベース間でデータが結合されます。

SELECT O.CUSTNAME, P.PROJNO, E.ENAME, SUM(E.RATE*P."HOURS")
       FROM ORDERS@DB2 O, EMP@ORACLE9 E, "PROJECTS"@SYBS P
       WHERE O.PROJNO = P."PROJNO"
          AND P."EMPNO" = E.EMPNO
       GROUP BY O.CUSTNAME, P."PROJNO", E.ENAME;

ビューとシノニムの組合せを介して次のSQL文を使用すると、分散問合せの処理が透過的になります。

CREATE SYNONYM ORDERS FOR ORDERS@DB2;
CREATE SYNONYM PROJECTS FOR "PROJECTS"@SYBS;
CREATE VIEW DETAILS (CUSTNAME,PROJNO,ENAME,SPEND)
      AS 
      SELECT O.CUSTNAME, P."PROJNO", E.ENAME, SUM(E.RATE*P."HOURS")
      SPEND
      FROM ORDERS O, EMP E, PROJECTS P
      WHERE O.PROJNO = P."PROJNO"
      AND P."EMPNO" = E.EMPNO
      GROUP BY O.CUSTNAME, P."PROJNO", E.ENAME;

次のSQL文を使用して、1つの文でデータ・ストアから情報を取得します。

SELECT * FROM DETAILS;

この文では次の表が取得されます。

CUSTNAME         PROJNO           ENAME          SPEND
--------         ------           -----          -----
ABC Co.             1             Jones            400
ABC Co.             1             Smith            180
XYZ Inc.            2             Jones            400
XYZ Inc.            2             Smith            180