3
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?

More than 1 year has passed since last update.

.net からOracle Autonomous Database接続 (Oracle.ManagedDataAccess)

Last updated at Posted at 2019-01-24

#概要
Oracle Autonomous Database Cloudは、クラウドにおける自律型データベースを提供しています。
.net からOracle Autonomous Database接続してみました。
(Oracle Autonomous Data WarehouseとOracle Autonomous Transaction Processing二種類ありますが、接続方法同じです。)

1 準備

1.1 Autonomous Transaction Processingデータベース作成

image.png

1.2 クライアントの資格証明(ウォレット)のダウンロード

image.png

image.png

image.png

Wallet_TEST1.zip を保存する。

2 接続テスト

2.1 Visual Studio 起動、Atptest1 を作成 (Windows Form application)

image.png

2.2 NugetからOracle.ManagedDataAccess最新版をインストール

image.png

image.png

※Oracle.ManagedDataAccessの最新版選択すべきと思われますが、バージョン12.1.24160419以降接続できること確認しました。

2.3 ウォレットファイル解凍

上記1.2 でダウンロードしたウォレットファイルをAtptest1のbinフォルダーに解凍
image.png

※任意のフォルダーに解凍して問題ないですが下記二点注意する必要がある
1.tnsnames.oraとsqlnet.oraをexeと同じフォルダーに保存する必要がある
2.sqlnet.oraのDIRECTORY部分解凍フォルダーに合わせて記述する必要がある

2.4 sqlnet.ora編集

上記2.3で解凍されたファイルの中のsqlnet.oraをに環境あわせてDIRECTORY部分を修正 (相対パス、絶対パス両方問題ない)

image.png

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 実行結果

image.png

無事に接続できました!

#参考資料:
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)
Cdbc diagram

メリット:
Database portをInternet開放必要がない, Clientは443 port使用、複雑な設定不要
ウォレットを全クライアントに配布する必要がない
通信するパケットを圧縮できる
DBへの接続は一箇所集中管理できる

3
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
3
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?