本記事ではオンプレミス環境の Oracle Database から Autonomous Database へデータベース・リンクを作成する手順について説明します。ネットワーク的にオンプレミス・データベースから Autonomous Database へ直接接続できることを前提としています。
Wallet の準備
クライアントとなる Oracle Database にWallet をインストールします。Autonomous Database のホーム画面から「DB Connection」ボタンをクリックします。
Walletのパスワードを指定して「Download」ボタンをクリックすると Wallet が zip ファイルとしてクライアントにダウンロードされます。
Wallet の配置
ダウンロードした Wallet の zip ファイルを任意のディレクトリ内に展開し、そのディレクトリを環境変数 TNS_ADMIN に指定します。sqlnet.ora ファイルの DIRECTORY 項目を Wallet が保存されたディレクトリに変更してください。その後、データベース・インスタンスを起動します。
$ export TNS_ADMIN=$HOME/wallet.atp
$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on 火 4月 12 13:18:53 2022
Version 19.12.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
アイドル・インスタンスに接続しました。
SQL> STARTUP
ORACLEインスタンスが起動しました。
Total System Global Area 1577054664 bytes
Fixed Size 8896968 bytes
Variable Size 989855744 bytes
Database Buffers 570425344 bytes
Redo Buffers 7876608 bytes
データベースがマウントされました。
データベースがオープンされました。
DATABASE LINK の作成
データベース・リンクの作成は CREATE DATABASE LINK 文を使います。下記の例では tnsnames.ora ファイルのエントリを使わずに直接接続句を記載しています。接続ユーザー名は Autonomous Database 管理者の ADMIN にしています。作成後に Autonomous Database 上のテーブルを検索しています。
SQL> CREATE DATABASE LINK cloud_link1 CONNECT TO ADMIN
IDENTIFIED BY パスワード
USING '(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=boofmainbg1vvmn_db000000000000_high.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com, OU=Oracle ADB TOKYO, O=Oracle Corporation, L=Redwood City, ST=California, C=US")))';
データベース・リンクが作成されました。
SQL> SELECT COUNT(*) FROM DATA1@cloud_link1;
COUNT(*)
----------
999998
Data Pump ダンプファイルの転送を試す
データベース・リンクが作成できたので、オンプレミスの Oracle Database 上にある Data Pump ダンプファイルを Autonomous Database のディレクトリ・オブジェクトに転送できるか試しました。結果としては以下のようにエラー(ORA-24444)が発生し、転送できませんでした。このため、オブジェクト・ストレージを使った移行手順が必要です。
SQL> BEGIN
2 DBMS_FILE_TRANSFER.PUT_FILE('DATA_PUMP_DIR', 'scott.dmp', 'DPDIR1', 'scott.dmp', 'CLOUD_LINK1');
3 END;
4 /
BEGIN
*
行1でエラーが発生しました。:
ORA-24444: TTC RPC
(OFILXFR)はデータベース上で構成されているセキュリティ・ポリシーで許可されていま
せん
ORA-02063: 先行のエラー・メッセージを参照してくださいline(CLOUD_LINK1)。 ORA-06512:
"SYS.DBMS_FILE_TRANSFER", 行77
ORA-06512: "SYS.DBMS_FILE_TRANSFER", 行185
ORA-06512: 行2
このため Autonomous Database へのファイル転送は DBMS_CLOUD パッケージの PUT_OBJECT プロシージャを用いる必要があります。公式で説明されている手順でファイル転送を行います。