#概要
Oracle Autonomous Database Cloudは、クラウドにおける自律型データベースを提供しています。
.net からOracle Autonomous Database接続してみました。
(Oracle Autonomous Data WarehouseとOracle Autonomous Transaction Processing二種類ありますが、接続方法同じです。)
1 準備
1.1 Autonomous Transaction Processingデータベース作成
1.2 クライアントの資格証明(ウォレット)のダウンロード
Wallet_TEST1.zip を保存する。
2 接続テスト
2.1 Visual Studio 起動、Atptest1 を作成 (Windows Form application)
2.2 NugetからOracle.ManagedDataAccess最新版をインストール
※Oracle.ManagedDataAccessの最新版選択すべきと思われますが、バージョン12.1.24160419以降接続できること確認しました。
2.3 ウォレットファイル解凍
上記1.2 でダウンロードしたウォレットファイルをAtptest1のbinフォルダーに解凍
※任意のフォルダーに解凍して問題ないですが下記二点注意する必要がある
1.tnsnames.oraとsqlnet.oraをexeと同じフォルダーに保存する必要がある
2.sqlnet.oraのDIRECTORY部分解凍フォルダーに合わせて記述する必要がある
2.4 sqlnet.ora編集
上記2.3で解凍されたファイルの中のsqlnet.oraをに環境あわせてDIRECTORY部分を修正 (相対パス、絶対パス両方問題ない)
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="./")))
SSL_SERVER_DN_MATCH=yes
2.5 簡単なコードでOracle 接続動作確認
2.5.1 サンプルコード
OracleConnection conn = new OracleConnection();
conn.ConnectionString = "User Id=ADMIN;Password=*your password*;Data Source=test1_high";
conn.Open();
OracleCommand oraCmd = new OracleCommand("SELECT TABLE_NAME FROM ALL_TABLES", conn);
OracleDataReader oraReader;
oraReader = oraCmd.ExecuteReader();
while (oraReader.Read())
{
Console.WriteLine(oraReader.GetString(0));
}
oraReader.Close();
conn.Close();
Data Sourceの部分tnsnames.oraファイルを参照。
サービス名につきまして、下記引用したOracle 資料を参考
定義済みのサービス名は、Autonomous Transaction Processingのさまざまなレベルのパフォーマンスと同時実行性を提供します。
high: 高データベース・サービスは、システムがリソース圧迫(たとえば、CPUまたはIO)を受けているときに、このサービスを介して実行されるSQL文に最高レベルのリソースを提供します。このサービスで実行できる同時SQL文の数は、データベース内のCPUの数を増やし、CPUの数に応じて拡張します。
medium: 中規模データベース・サービスは、システムがリソース圧迫(たとえばCPUまたはIO)を受けているときに、このサービスを通じて実行されるSQL文に、より低いレベルのリソースを提供します。 このサービスで実行できる同時SQL文の数は、データベース内のCPUの数によって異なり、CPUの数に比例します。
low: 低データベース・サービスは、システムがリソース圧迫(例えば、CPUまたはIO)を受けているときに、このサービスを介して実行されるSQL文に、最低レベルのリソースを提供します。 このサービスで実行できる同時SQL文の数は、データベース内のCPUの数によって異なり、CPUの数に比例します。
parallel: パラレル・サービスは、パラレル実行を使用して自動的に実行されるが、同時実行SQL文の数が最も少ないため、このサービスを介して実行される各SQL文に高レベルのリソースを提供します。 バッチ・プロセスまたはレポート・ワークロードだけがこのサービスを使用することをお勧めします。
2.5.2 実行結果
無事に接続できました!
#参考資料:
https://www.oracle.com/technetwork/topics/dotnet/tech-info/default-5032178.html
https://docs.oracle.com/cd/E83857_01/paas/atp-cloud/atpug/connect-predefined.html#GUID-9747539B-FD46-44F1-8FF8-F5AC650F15BE
2019/07/13追記
セキュリティの観点からClient直接Internet経由Autonomous Databaseへの接続したくない場合、下記のツールを使えばよりセキュア、よりhigh performanceを期待できます。
Cdbc (Cloud Database Connectivity)
メリット:
Database portをInternet開放必要がない, Clientは443 port使用、複雑な設定不要
ウォレットを全クライアントに配布する必要がない
通信するパケットを圧縮できる
DBへの接続は一箇所集中管理できる