0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI データベース・ツールでオラクルDBへの接続方法

Last updated at Posted at 2021-11-18

本ブログは、オラクル・クラウドの個人ブログの1つです。

初めに

冒頭ですが、この記事の位置付けは、次のシリーズ記事の1つです。
プライベート・サブネット内の Oracle DB/ADB に接続

データベース・ツールは、2021年11月3日にリリースされた新しいOCIマネージド・サービスです。これにより、OCI内の任意のOracleまたはMySQL DBサービスへの接続を作成できます。データベース接続とSQLワークシートを併用することで、データベースへの直接SQLアクセスができます。パスワードや「Autonomous DB」のウォレット・ファイルなどの機密情報は暗号化されて、OCIボールトに安全に保存されます。

この新サービスを使用し、OCIの「DB System Database」および「Autonomous DB」に接続する方法を紹介したいと思います。少しお役に立てれば幸いです。
image.png

サポート対象のDBタイプ
Autonomous Database
DB system database (BM,VM,Exadata)
Exadata VM cluster database

動作検証環境

項目 DB System Autonomous DB
DBタイプ VM Autonomous Data Warehouse (Shared)
DBバージョン 21c Standard Edtion 19c
サブネット プライベート・サブネット N/A
接続タイプ プライベート・エンドポイント パブリック

ステップ

1. 準備

1-1) IAMポリシーの作成

下記のリソースに対する「管理」権限は必要です。
Database Tools Service, Vaults, VCNs, Oracle DB or Autonomous DB Services, Secrets, Keys.

ポリシーの例:
事前に「toolsConnectionAdmin」という名前のグループを用意してください。

allow group toolsConnectionAdmin to manage virtual-network-family in compartment PoC
allow group toolsConnectionAdmin to manage database-family in compartment PoC
allow group toolsConnectionAdmin to manage autonomous-database-family in compartment PoC
allow group toolsConnectionAdmin to manage vaults in compartment PoC
allow group toolsConnectionAdmin to manage secret-family in compartment PoC
allow group toolsConnectionAdmin to manage database-tools-family in compartment PoC

ルート・コンパートメントの下に「PoC」というコンパートメントを使用しています。
必要に応じて、ポリシーをテナンシー・レベル(in tenancy)で設定できます。

1-2) ボールトの作成

パスワードやウォレット・ファイルなどの機密情報はOCIボールトに保存されますので、ボールトを持っていない場合は作成する必要があります。

メニュー → アイデンティティとセキュリティ → ボールト
ボールト名を入力し、「ボールトの作成」ボタンをクリックします。

ボールトが作成された後、マスター暗号化キーの作成を続行します。

1-3) プライベート・エンドポイントの作成

セキュリティの原因で、通常ならデータベースは、プライベート・サブネットに配置されます。この場合、プライベート・エンドポイントを介しDBにアクセスする必要があります。
image.png

メニュー → 開発者サービス → データベース・ツール → プライベート・エンドポイント

以下のように必要な情報を入力し、「作成」ボタンをクリックしてください。
データベースの選択は、デフォルトのオプションで、この例で使用します。
「データベース・タイプ」と「DBシステム」のリストは、「データベースの選択」を指定した場合のみ、使用できます。

まもなくプライベート・エンドポイントは、アクティブの状態になります。
image.png

1-4) 要塞の作成 (オプション)

プライベート・エンドポイントを介してSQLclを起動する場合lは、このステップを実施する必要があります。以下のいずれを該当する場合、スキップできます。

  • SQLclを起動したくない場合
  • パブリックのアクセスを使用して、パブリック・サブネットに存在するデータベースに接続する場合

メニュー → アイデンティティとセキュリティ → 要塞 -> 要塞の作成
image.png

必要な情報を入力し、「要塞の作成」ボタンをクリックします。

項目 コメント
要塞名 英数字のみ
ターゲット・サブネット ターゲットDBが配置されている場所。
CIDRブロック許可リスト ターゲットDBへの接続を許可するIPアドレス範囲。
範囲を絞ることはお勧め(以下の"All Zero"はテスト用のみ)。
作成後に編集できる。
まもなく要塞は、アクティブの状態になります。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121622/45bd1f5f-9741-9a5f-bc81-622236404733.png)

2. DBシステム・データベースへの接続方法

メニュー → 開発者サービス → データベース・ツール → 接続 → 接続の作成

項目 コメント
データベースの選択 デフォルト
データベース情報の入力 これを指定したら、既存のDBをリストから選択できなくなる。
データベース・タイプ "DB System Database"を選択する。
(「データベースの選択」を指定した場合、利用可能。)
データベース・システム 既存のDBシステムを選択する。
(「データベースの選択」を指定した場合、利用可能。)
データベース・ホーム データベース・ホームを選択する。
(「データベースの選択」を指定した場合、利用可能。)
データベース ターゲットDBを選択する。
(「データベースの選択」を指定した場合、利用可能。)
プラガブル・データベース オプション CDBに接続する場合は、選択不要。
(「データベースの選択」を指定した場合、利用可能。)
ユーザー名 DBユーザー
ロール 選択しない場合、"Default"のロールとなる。
ユーザー・パスワード・シークレット 持っていない場合は、「パスワードシークレットの作成」をクリックして新規作成する。
接続文字列 「データベースの選択」を指定した場合、接続文字列が自動に作成されるので、編集しなくてもよい。
「データベース情報の入力」を指定した場合は、接続文字列を入力する必要がある。

image.png
「パスワード・シークレットの作成」のダイアログ画面にユーザー・パスワードを入力し、「作成」ボタンをクリックします。
image.png

プライベート・エンドポイントを介したネットワーク接続」にチェックを入れ、ステップ1-3で作成したプライベート・エンドポイントを選択し、「次へ」ボタンをクリックして進みます。
image.png

ウォレット・フォーマットは「なし」を選択し、「作成」ボタンをクリックします。

作成には数分かかります。ステータスがアクティブになったら、「検証」ボタンをクリックしてDB接続を検証します。
image.png
検証成功の場合、以下のようなメッセージが表示されます。

接続の問題
DBへの接続が失敗した場合、以下のような原因は一般的です。ご参考ください。

  • 無効なユーザーまたはパスワード。
  • ユーザー・ロールの指定は間違った。
  • DBインスタンスは、まだ起動していない。
  • DBリスナー・ポート(TCP 1521)は、Ingressルールに追加されていない。(セキュリティ・リストまたはNSGを確認してください。)

SQLワークシート
「接続の詳細」画面のボタンをクリックして「SQLワークシート」を起動すると、SQLコマンドを実行できます。
image.png

SQLコマンドだけでなく、OCIオブジェクト・ストレージまたはローカルにあるSQLスクリプトも実行できます。複数のデータベース接続を作成した場合は、メニュー(右上)から使用中の接続を変更できます
image.png

SQLclの起動
「接続の詳細」画面のボタンをクリックして、SQLclを起動します。この時、STEP1-4で作成した要塞を指定します。
image.png

Cloud ShellからSQLclを起動した後、通常どおりSQLコマンドを実行できます。
image.png
DBシステム・データベースへの接続はここまで完了です。

3. Autonomous DBへの接続方法

インターネット、或いはプライベート・エンドポイントのアクセスで、既存の「Autonomous DB」に接続できます。この例ではパブリックの「Autonomous DB」を使用していますので、プライベート・エンドポイントの設定をスキップします。

Autonomous DBへの接続を作成
メニュー → 開発者サービス → データベース・ツール → 接続 → 接続の作成

項目 コメント
データベースの選択 デフォルト
データベース・タイプ "Autonomous Database"を選択する。
(「データベースの選択」を指定した場合、利用可能。)
ユーザー名 この例では「admin」を使用する。(他の既存のユーザーも使用できる)。
ユーザー・パスワード・シークレット 「パスワード・シークレットの作成」ボタンをクリックし、新規作成する。

必要な情報を入力し、「作成」ボタンをクリックしてください。
この例では「admin」ユーザーを使用しているため、「ユーザー・パスワード」はDB管理者のパスワードです。

パスワード・シークレットを作成した後、前の画面に戻ります。「接続文字列」は自動的に作成されますので、通常なら編集する必要はなく、「次へ」をクリックし続行します。(この例では、プライベート・エンドポイントの設定をスキップします。必要に応じて設定してください。)

※接続文字列は、ファイル tnsnames.ora(圧縮されたウォレット・ファイルにある)から同じ内容を取得できます。

ウォレット・フォーマットは「SSO Wallet」を選択し、「Create Wallet Content Secret」ボタンをクリックします。

必要な情報を入力し、次の3つのオプションからウォレット・ファイルの取得方法を選択します。

オプション コメント
Autonomous Databaseからのリージョナル自動ログイン・ウォレットの取得 Shared Autonomous DB、かつCross-Region Data Guardを使用しない場合、利用可能。(この例)
Autonomous Databaseからのインスタンス自動ログイン・ウォレットの取得 以下のいずれの場合、利用可能。
Dedicated Autonomous DBの場合
Shared Autonomous DB、かつCross-Region Data Guardを使用している場合
自動ログイン・ウォレットのアップロード いつでも利用可能

この例では一番目のオプション(デフォルト)を選択します。以下のように「作成」ボタンをクリックして続行します。

"SSO Wallet Content Secret"の準備ができましたら、「作成」ボタンをクリックし接続を作成します。

まもなく接続は、アクティブの状態になります。
image.png
SQLワークシートを起動し、SQLコマンドを実行します。
image.png
SQLclを起動し、SQLコマンドを実行します。
image.png

自動ログイン・ウォレットのアップロード」オプションを使用したい場合は、最初にウォレット・ファイルをダウンロードする必要があります。
ウォレット・ファイルのダウンロード
メニュー → Oracle Database → Autonomous Database → Autonomous Databaseの詳細 → DB接続 → ウォレットのダウンロード

ウォレットのパスワードを作成し、「ダウンロード」ボタンをクリックします。 (これは、Autonomous DBの管理者ユーザのパスワードではありません。)

圧縮ファイルを保存してから解凍します。

解凍後、ウォレット・ファイル cwallet.sso は、以下のようです。

ファイル cwallet.sso をアップロードし、「作成」ボタンをクリックします。

「作成」ボタンをクリックして接続を作成します。上記の方法と同じです。

ここまで、Autonomous DBへの接続は完了です。SQLコマンドの実行は、SQLワークシートまたはSQLclプロンプトの両方からできます。プライベート・エンドポイントを使用する場合、SQLclを起動する時に要塞は必要です。これは、DBシステム・データベースに接続する場合と同様です。

データベース・ツールをうまく利用するため、いくつかのベスト・プラクティスがあります。詳細については、ドキュメントをご確認ください。

以上


関連記事
オラクル・クラウドの個人ブログ一覧
SQL Developerで各種なDBへの接続方法
OCI Cloud Shell上のSQL PlusからADBに接続する
OCI Bastion経由でプライベート・サブネット内のOracle DBに接続
OCI Bastion経由でプライベート・サブネット内のAutonomous DBに接続

0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?