すべてのプロダクト
Search
ドキュメントセンター

PolarDB:CREATE [PUBLIC] DATABASE LINK

最終更新日:Aug 13, 2024

このトピックでは、CREATE [PUBLIC] DATABASE LINKを使用してデータベースリンクを作成する方法について説明します。

あらすじ

-- Connect to a PolarDB for PostgreSQL (Compatible with Oracle) database
CREATE [ PUBLIC ] DATABASE LINK <name>
   CONNECT TO <username> IDENTIFIED BY "<password>"
  USING ( channel_name '<channel_name>', dbname '<db_name>' );

-- Connect to an Oracle database
CREATE [ PUBLIC ] DATABASE LINK <name>
   CONNECT TO <username> IDENTIFIED BY "<password>"
  USING '//<channel_name>/<dbname>';

Parameters

パラメーター

説明

PUBLIC

すべてのユーザーが使用できるデータベースリンクを作成します。 このパラメーターを指定しない場合、データベースリンクは非公開であり、所有者のみが使用できます。

name

データベースリンクの名前。

username

リモートデータベースへの接続に使用されるユーザー名。

password

リモートデータベースへの接続に使用されるパスワード。

使用上の注意

  • 作成されたデータベースリンクはオブジェクトであり、DELETE、INSERT、SELECT、およびUPDATEコマンドでリモートデータベースのテーブルまたはビューを参照できます。

  • データベースリンクは、パブリックまたはプライベートにすることができます。 パブリックデータベースリンクはすべてのユーザーが使用できますが、プライベートデータベースリンクはその所有者のみが使用できます。 パブリックデータベースリンクを作成するには、PUBLICパラメーターを指定する必要があります。 パラメーターを設定しないと、プライベートデータベースリンクが作成されます。

  • データベースリンクの一覧を表示するには、DBA_DB_LINKS、ALL_DB_LINKS、USER_DB_LINKSのいずれかのビューを照会します。

重要

データベースリンクを作成するときに、oracle_fdwまたはpostgres_fdwが存在しないというメッセージが表示された場合は、CREATE EXTENSIONを使用してインストールできます。

oracle_fdwを使用してデータベースリンクを作成します。

CREATE DATABASE LINK ora_dblink
  CONNECT TO admin IDENTIFIED BY 'mypassword'
  USING '//orachannel/acctg';

postgres_fdwを使用してデータベースリンクを作成します。

CREATE DATABASE LINK pg_dblink
  CONNECT TO admin IDENTIFIED BY "mypassword"
  USING (channel_name 'localhost', dbname 'marketing'); 

データベースリンクを使用します。

SELECT * FROM emp@ora_link;

サンプル結果:

empno | ename  |    job    | mgr  |      hiredate      | sal  | comm | deptno
-------+--------+-----------+------+--------------------+------+------+--------
  7369 | SMITH  | CLERK     | 7902 | 17-DEC-80 00:00:00 |  800 |      |     20
  7499 | ALLEN  | SALESMAN  | 7698 | 20-FEB-81 00:00:00 | 1600 |  300 |     30
  7521 | WARD   | SALESMAN  | 7698 | 22-FEB-81 00:00:00 | 1250 |  500 |     30
  7566 | JONES  | MANAGER   | 7839 | 02-APR-81 00:00:00 | 2975 |      |     20
(4 rows)

データベースリンクを使用します。

SELECT d.deptno, d.dname, e.empno, e.ename, e.job, e.sal, e.comm FROM
emp@ora_link e, dept@fdwlink d WHERE e.deptno = d.deptno ORDER BY 1, 3;

サンプル結果:

deptno |   dname    | empno | ename  |    job    | sal  | comm
--------+------------+-------+--------+-----------+------+------
     10 | ACCOUNTING |  7782 | CLARK  | MANAGER   | 2450 |
     10 | ACCOUNTING |  7839 | KING   | PRESIDENT | 5000 |
     10 | ACCOUNTING |  7934 | MILLER | CLERK     | 1300 |
     20 | RESEARCH   |  7369 | SMITH  | CLERK     |  800 |
     20 | RESEARCH   |  7566 | JONES  | MANAGER   | 2975 |
     20 | RESEARCH   |  7788 | SCOTT  | ANALYST   | 3000 |
     20 | RESEARCH   |  7876 | ADAMS  | CLERK     | 1100 |
     20 | RESEARCH   |  7902 | FORD   | ANALYST   | 3000 |
     30 | SALES      |  7499 | ALLEN  | SALESMAN  | 1600 |  300
     30 | SALES      |  7521 | WARD   | SALESMAN  | 1250 |  500
     30 | SALES      |  7654 | MARTIN | SALESMAN  | 1250 | 1400
     30 | SALES      |  7698 | BLAKE  | MANAGER   | 2850 |
     30 | SALES      |  7844 | TURNER | SALESMAN  | 1500 |    0
     30 | SALES      |  7900 | JAMES  | CLERK     |  950 |
(14 rows)