シノニムを使用したデータの場所とネットワーク透過性の提供
Oracle Databaseのシノニム機能を使用することで、データの場所の透過性とネットワークの透過性を完全に実現できます。
シノニムを定義すると、ユーザーは、基礎となる表またはネットワーク・プロトコルを認識する必要がなくなります。シノニムは、すべてのOracleユーザーが参照できるようにパブリックとして指定できます。また、シノニムをプライベートとして指定することもできます。この場合、すべてのOracleユーザーがOracle以外の表にアクセスするためにシノニムを定義する必要があります。
次の文では、SybaseデータベースのユーザーORACLE
のスキーマ内で、emp
表に対してシステム単位のシノニムが作成されます。
CREATE PUBLIC SYNONYM emp FOR "ORACLE"."EMP"@SYBS;
例: 分散問合せ
分散問合せの表示例を示します。
注意:
これらの例を環境にあわせて変更してください。そのままの状態では実行しないでください。
次の文では、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
親トピック: シノニムを使用したデータの場所とネットワーク透過性の提供