6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Oracle DatabaseのDBLINK自分用メモまとめページ

Last updated at Posted at 2021-04-21

#■この記事で記載すること
Oracle DBLINKの基本接続構成の設定例と、Oracleを用いた以下のDBLINK構成自分用メモのまとめページを記載します。

#■Oracle DBLINKの概要説明

##● DBLINKとは

データベース・リンクとは、他のデータベース上のオブジェクトにアクセスできる、データベース上のスキーマ・オブジェクトです。他のデータベースは、Oracle Databaseシステムである必要はありません。ただし、Oracle以外のシステムにアクセスする場合は、Oracle異機種間サービスを使用する必要があります。
データベース・リンクを作成した後で、表名、ビュー名またはPL/SQLオブジェクト名に@dblinkを追加し、そのリンクをSQL文で利用して、他のデータベース上の表、ビューおよびPL/SQLオブジェクトを参照できます。SELECT文を使用して、他のデータベース上の表またはビューを問い合せることができます。INSERT文、UPDATE文、DELETE文またはLOCK TABLE文を使用してもリモート表およびビューにアクセスできます。`

SQL言語リファレンスから引用

#■ DBLINK基本接続構成(TCP接続)

##● システム構成イメージ

Oracle(ローカル) -- [Oracle Net : TCP] --> Oracle(リモート)

※システム構成図に変更予定

##● 主な構成要素と概要説明

構成要素 概要説明
Oracle(ローカル) リモートに接続するためのOracle Net(sqlnet/tnsnames)設定
Oracle(リモート) ローカルからの接続を受けるためのOracle Net(sqlnet/listener)設定

##● 設定例

  • Oracle(リモート)のOracle Net設定
  • Oracle(ローカル)のOracle Net設定
  • DBLINKの作成

###- Oracle(リモート)のOracle Net設定

ネットワーク経由で接続を受け付けるためのノーマルなOracle Net設定

  • sqlnet.ora
  • listener.ora

###- Oracle(ローカル)のOracle Net設定

Oracle ClientとしてのノーマルなOracle Net設定

  • sqlnet.ora
  • tnsnames.ora

###- DBLINKの作成

DBLINKを作成

CREATE PUBLIC DATABASE LINK remote USING 'remote';

リモートのオブジェクトにアクセス

UPDATE employees@remote
   SET salary=salary*1.1
   WHERE last_name = 'Baer';

##● 留意事項

  • global namesの利用要否
    global namesを利用する場合、DBLNIKの名前をglobal namesのルールに沿って設定する必要がある。global namesを利用しない場合はglobal namesを無効化する

  • ローカルとリモートのOracleのバージョン間の整合性
    ローカルはClietnの位置づけ、リモートはServerの位置づけで以下のMatrixを参考にバージョン間の整合性を確認する
    image.png

  • ローカルとリモートの間の疎通(L3/L4レベル)
    一般的なL4レベルで疎通がとれていることを確認する
    → 特に、DBCSを利用している場合は、OCIのFirewall設定(SecurityListやNetwork Security Group)やDBCSのOSレベルでのFirewall設定(firewall-cmdやiptables)の設定を確認する

#■ DBLINK基本接続構成(TCPS接続)

##● システム構成イメージ

Oracle(ローカル)/w クライアントウォレットファイル -- [Oracle Net : TCPS] --> Oracle(リモート) /w サーバウォレットファイル

※システム構成図に変更予定

##● システム構成説明(TCP接続との差分)

「DBLINK基本接続構成(TCP接続)」を基本に、TCPをTPCSに変更するための構成が必要となる

  • ウォレットファイルの作成、配置
  • ウォレットファイルを利用するためのOracle Net設定

##● 設定例

  • 環境
  • ウォレットファイルの作成、配置
  • Oracle(リモート)のOracle Net設定
  • Oracle(ローカル)のOracle Net設定
  • DBLINKの作成

###- 環境

この例では、Oracle(リモート)、Oracle(ローカル)ともにDBCS(Oracle Cloud Database Service)を利用

###- ウォレットファイルの作成、配置

この記事を参考にウォレットファイルを作成のうえ、以下に配置する。

・クライアントウォレットファイル
Oracle(ローカル)の/u01/client/wallet/に配置

・サーバウォレットファイル
Oracle(リモート)の/u01/server/wallet/に配置

###- Oracle(リモート)のOracle Net設定

・sqlnet.oraの編集

# sqlnet.ora Network Configuration File: /u01/app/19.0.0.0/grid/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

wallet_location =
 (SOURCE=
  (METHOD=File)
  (METHOD_DATA=
   (DIRECTORY=/u01/server/wallet)))
 
SSL_SERVER_DN_MATCH=(ON)

・lisener.oraの編集
ファイルの先頭に以下を追記

wallet_location =
 (SOURCE=
  (METHOD=File)
  (METHOD_DATA=
   (DIRECTORY=/u01/server/wallet)))

・TCPSエンドポイントの再構成

$ srvctl modify listener -p "TCP:1521/TCPS:1522"
$ srvctl stop listener
$ srvctl start listener
$ srvctl stop database -database dbcs0502_iad1fq #11gの場合は、-databaseの代わりに-dを用いる
$ srvctl start database -database dbcs0502_iad1fq
$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 17-APR-2021 02:59:33

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                17-APR-2021 01:06:13
Uptime                    0 days 1 hr. 53 min. 20 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/19.0.0.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/dbcs0502/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=10.0.1.136)(PORT=1522)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.0.1.136)(PORT=1521)))
Services Summary...
Service "+APX" has 1 instance(s).
  Instance "+APX1", status READY, has 1 handler(s) for this service...
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_RECO" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "dbcs0502XDB.subnet.vcn05.oraclevcn.com" has 1 instance(s).
  Instance "dbcs0502", status READY, has 1 handler(s) for this service...
Service "dbcs0502_iad1fq.subnet.vcn05.oraclevcn.com" has 1 instance(s).
  Instance "dbcs0502", status READY, has 2 handler(s) for this service...
The command completed successfully

###- Oracle(ローカル)のOracle Net設定

sqlnet.oraの編集

WALLET_LOCATION =
   (SOURCE =
     (METHOD = FILE)
     (METHOD_DATA =
       (DIRECTORY = /u01/client/wallet)
     )
   )
 
SSL_SERVER_DN_MATCH=(ON)

tnsnames.oraの編集

DBCS0502_IAD1FQ =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.1.136)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dbcs0502_iad1fq.subnet.vcn05.oraclevcn.com)
    )
  )

DBCS_TCPS =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCPS)(HOST = 10.0.1.136)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dbcs0502_iad1fq.subnet.vcn05.oraclevcn.com)
    )
    (SECURITY= (SSL_SERVER_CERT_DN="CN=dbcs"))
  )

###- DBLINKの作成

SQL> CREATE PUBLIC DATABASE LINK DBLINK_DBCS_TCPS CONNECT TO "hoge" IDENTIFIED BY "WelCome123#123#" USING 'DBCS_TCPS';

#■参考情報

##● 参考リンク

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?