Oracle Cloudが提供しているデータベース・ツールの接続(Database ToolsのConnections)を使用して、Always FreeのAutonomous Databaseへの接続を構成します。
データベース・ツールの接続を構成することにより、SQLワークシートやSQLcl(SQLを実行するコマンドライン・ツール、Cloud Shell内で実行されます)をすぐに呼び出すことができます。
Oracle APEXには、SQLを実行する画面(SQLコマンド)が付属しています。また、Autonomous Databaseにはデータベース・アクション(SQL Developer Web)が含まれ、これにもSQLを実行する画面が付属しています。どのツールにも一長一短はあるため、用途に応じて使い分けるのが良いでしょう。
データベース・ツールの接続は、ボールトに保存されたシークレットを、データベース・ユーザーのパスワードとウォレットとして使用します。そのため、あらかじめボールトを作成し、シークレットの保存に使用するマスター暗号化キーを準備します。
ボールトの準備
OCIコンソールのアイデンティティとセキュリティより、ボールトを開きます。
画面右にドロワーが開きます。
作成するボールトの名前を入力します。仮想プライベート・ボールトにするのチェックは入れません。仮想プライベート・ボールトの利用は課金の対象になります。
ボールトの作成をクリックすると、指定した名前のボールトが作成されます。作成が完了するまでに、数分程度時間を要します。
作成されたボールトを開きます。
リソースのマスター暗号化キーを選択し、キーの作成を実行します。
画面右にドロワーが開きます。
保護モードとしてソフトウェアを選択します。保護モードがHSM(Hardware Security Moduleの略 - 物理的な安全性が担保されている専用デバイスのこと)の場合、20が無料で利用できる上限です。法令に準拠するといった要件がある場合は、保護モードにHSMを選択することになるかと思います。
今回は名前をADBPROTKEYとしています。
キーのシェイプ:アルゴリズムとしてAES(暗号化および復号化に使用される対称キー)を選択します。シークレットの保存には共通鍵暗号方式が使われるため、AESを選択します。キーのシェイプ:長さは選択できる最大値である256ビットを選択します。
以上を設定し、キーの作成を実行します。
マスター暗号化キーが作成され、少々時間が経過したのち状態が有効に変わります。
接続の作成
OCIコンソールより、開発者サービスに含まれるデータベース・ツールの接続を開きます。
接続の画面が開きます。
接続の作成をクリックし、新規にデータベースへの接続を作成します。
画面右にドロワーが開きます。
今回想定している接続先は、Always FreeのAutonomous Databaseです。
名前には、接続先となるデータベースと接続ユーザーが特定できるような名前が望ましいです。今回はapexdev-adminとしています。
APEXのSQLコマンドとデータベース・アクションの双方とも、接続ユーザーの切り替えはサインアウトとサインインのやり直しが必要です。データベース・ツールのSQLワークシートでは接続の切り替えだけで接続ユーザーも切り替えられるので、その点は便利です。
Database cloud serviceにはOracle Autonomous Databaseを選択します。データベースの選択を選んでいると、指定しているコンパートメントに含まれるAutonomous Databaseのインスタンスを選択できます。今回はデータベースにAPEXDEVを選択しています。ユーザー名としてAutonomous Databaseの管理者ユーザーであるadminを指定しています。
パスワード・シークレットの作成をクリックし、データベースの接続ユーザーADMINのパスワードをボールトのシークレットとして保存します。
画面右にドロワーが開きます。
シークレットの名前を入力します。シークレットとして保存されるのはパスワードである文字列のみで、その他の情報は含まれません。そのため、異なるデータベース、ユーザーでもパスワードの文字列として同じであればパスワード・シークレットとして使用できます。
コンパートメント、シークレットを保存するボールト、シークレットの暗号化に使用するマスター暗号化キーを選択し、ユーザー・パスワードを入力します。
作成をクリックすると、パスワード・シークレットが作成されます。
作成されたパスワード・シークレットが、ユーザー・パスワード・シークレットとして設定されます。接続文字列はデータベースを選択した時点で、適切な文字列が設定されるため変更は不要です。
次へ進みます。
SSL詳細の画面に移ります。
接続先はOracle Autonomous Databaseなので、ウォレット形式はSSOウォレットになります。ウォレット・コンテンツ・シークレットを指定するため、ウォレット・コンテンツ・シークレットの作成をクリックします。
画面右にドロワーが開きます。
接続先がAutonomous Databaseであるため、接続に必要な情報はすべてリージョナル自動ログイン・ウォレットに含まれています。また、リージョナル自動ログイン・ウォレットだけがボールトのシークレットして保存されます。そのため、すでに作成済みのウォレット・コンテンツ・シークレットがあれば再利用もできます。ただし、作成した時点のウォレットなので、その後に作成したAutonomous Databaseがあれば、その情報は含まれていません。その場合、ウォレット・コンテンツ・シークレットの再アップロードを実施します。
名前はリージョナル自動ログイン・ウォレットであることが分かる名前を付けます。今回はwallet-us-ashburn-1としています。コンパートメント、ボールト、マスター暗号化キーを選択し、Autonomous Databaseからのリージョナル自動ログイン・ウォレットの取得を選びます。
以上を設定し、作成をクリックします。
作成したウォレット・コンテンツ・シークレットが設定されます。
作成をクリックし、接続apexdev-adminを作成します。
接続が作成されると、接続の詳細画面が表示されます。
接続の詳細には、SQLワークシートの実行、Cloud Shell内でのSQLclの起動、パスワードの変更、自動ログイン・ウォレットの更新といった作業を行うリンクが含まれています。
パスワードの更新
ユーザー・パスワード・シークレットをクリックすると、シークレット詳細のバージョンが開かれます。ここでシークレット・バージョンの作成を実行し、シークレット・バージョンを更新します。
シークレット・タイプ・テンプレートとしてプレーン・テキストを選択します。シークレット・コンテンツとして、新しいパスワードを入力します。
シークレット・バージョンの作成を実行します。
新たなバージョンが作成され、ステータスが現在となると、パスワードの更新は完了です。
パスワード・シークレットを共用しているすべての接続で、使用するパスワードが変更されます。
自動ログイン・ウォレットの更新
再アップロードをクリックします。
以上でリージョナル自動ログイン・ウォレットの更新は完了です。
SSOウォレット・コンテンツ・シークレットを開いて確認してみます。
新たにシークレット・バージョンが作成されていることが確認できます。
SQLワークシートの使用
接続の詳細画面よりSQLワークシートを実行できます。または、OCIコンソールからも起動できます。
SQLワークシートでは、接続先のデータベースや接続ユーザーを、サインインの操作をすることなく切り替えることができます。切り替え時に記述済みのSQLも維持されます。
それ以外では、記述したSQLをオブジェクト・ストレージに保存することができます。
逆に実行するSQLを、オブジェクト・ストレージからロードすることもできます。
SQLワークシートを使用することにより、特に複数のデータベースで同時に扱う場合に、効率良く作業を行うことができそうです。
SQLclの起動
SQLclの起動を行うと、Cloud Shell内でSQLclを実行され、データベースへの接続までが実施されます。
Javaのインストール、SQLclのダウンロード、ウォレットのダウンロードといった作業が不要で、すぐにSQLの実行ができるようになります。
データベース・ツールの接続の紹介は以上になります。
完