※当サイトの記事には、広告・プロモーションが含まれます。

Oracle Databaseの接続方法を整理してみたかったけど...

www.itmedia.co.jp

 住民向けサービスに対しては「利用シーンや利用者の変化に適した実装技術に関する考慮が不足していた」と分析。「この原因を踏まえ、証明書発行処理の中でのトランザクション一意性担保に関する設計・実装・テストにフェイルセーフの組み込みを徹底する」と説明している。他にも、第三者がこの妥当性を検査する体制を構築しており、5月からすでに実行しているという。

富士通、相次ぐコンビニ交付サービス不具合に謝罪 「行政サービスへの信頼損ねた」 再発防止策を開示 - ITmedia NEWS

⇧ 要件が基本設計や詳細設計に反映されていないんじゃないか説がある気がするけど...

そもそも要求定義、要件定義ができてたのかも検査しなくて良いんかな?

Oracle Databaseの接続方法を整理してみたかったけど...

何か、Oracle Databaseの接続方法について調べていたら、

docs.aws.amazon.com

⇧ 上記のように、「Kerberos認証」での接続もできるということを知って、そもそも、Oracle Databaseの接続方法としてどんな方法・条件があるのか気になったので、Microsoft Bingさんに聞いてみた。

Microsoft Bingさんによりますと、

こんにちは、こちらはBingです。😊 Oracle Databaseへの接続方法と認証方法についてのマトリックス表を作成するのをお手伝いします。 まず、接続方法については、以下の6種類があります。

  • データベース・ネーミング・メソッド (DATABASE)
    • データベース名(DB_NAME)とインスタンス名(INSTANCE_NAME)を指定して接続する方法です。
  • 簡易接続ネーミング・メソッド (EZCONNECT)
    • クライアント側で構成ファイルを作らずに、ユーザー名/パスワード、ホスト名、ポート番号、サービス名を指定して接続します。Oracleリスナーを使用します。
  • ローカル・ネーミング・メソッド (LOCAL)
    • クライアントマシン上のtnsnames.oraファイルに定義されたネットワークサービス名を使用して接続する方法です。Oracleリスナーを使用します。
  • ディレクトリ・ネーミング・メソッド (DIRECTORY)
  • 外部・ネーミング・メソッド (EXTERNAL)
    • 外部の機関が提供する接続情報を利用して接続します。例えば、Oracle Names ServerやNISなどがあります。Oracleリスナーを使用します。
  • ホスト・ネーミング・メソッド (HOST)
    • ホスト名とオプションでポート番号やデータベース名を指定して接続する方法です。SQL*Net Easy Configurationを利用して、データベース名とサービス名を指定して接続します。Oracleリスナーを使用します。

次に、「必要なプロトコル」については、以下のようなものがあります。

  • TCP/IPプロトコル
    • インターネットやLANなどで広く使われているプロトコルです。Oracle Net Servicesを使用して、クライアントとデータベース間の通信を行います。
  • IPCプロトコル
    • 同じマシン上で動作するクライアントとデータベース間の通信に使用されるプロトコルです。Oracle Net Servicesを使用して、共有メモリを介した高速な通信を行います。
  • BEQプロトコル
    • 同じマシン上で動作するクライアントとデータベース間の通信に使用されるプロトコルです。Oracle Net Servicesを使用せずに、直接的な通信を行います。SQLPlusやSQLLoaderなどのOracle製品で使用されます。
  • SDPプロトコル
    • InfiniBandネットワーク上で動作するクライアントとデータベース間の通信に使用されるプロトコルです。Oracle Net Servicesを使用して、高性能な通信を行います。

次に、認証方法については、以下の5種類の区分があります。

No. 認証方法区分 認証方法
1 パスワード認証 ※1
  • データベース内でパスワードを管理する
  • パスワードファイルを使用する
2 OS認証 ※2
3 ネットワークでのユーザーの認証 ※3
4 エンタープライズ・ユーザー・セキュリティでのユーザーの認証 ※4
  • LDAP認証
  • Oracle Internet Directory認証 (OID)
  • Oracle Unified Directory認証 (OUD)
5 外部認証 ※5
  • ※1 データベースがユーザーのアカウントとパスワードを管理し、認証を行います。
  • ※2 オペレーティング・システムがユーザーのアカウントとパスワードを管理し、認証を行います。
  • ※3 TLSサードパーティのサービスを利用して、ネットワーク上でユーザーを認証します。
  • ※4 LDAPサーバーなどのディレクトリ・サービスを利用して、エンタープライズ・ユーザーを認証します。
  • ※5 データベース以外の外部の機関がユーザーを認証します。

 

【接続方法】データベース・ネーミング・メソッド (DATABASE)

認証方法区分 認証方法 必要なプロトコル リモート接続 Oracleリスナー経由 Oracleスキーマ(ユーザー) Oracle Databaseのバージョン
パスワード認証 パスワード認証 TCP/IP 可能 必要 必要 全て
パスワード認証 パスワード認証 IPC 可能 必要 必要 全て
パスワード認証 パスワード認証 BEQ 可能 不可能(BEQはリスナーを使用しない) 必要 全て
パスワード認証 パスワード認証 SDP 可能 可能(SDPはリスナーを使用する) 必要 全て
ネットワークでのユーザーの認証 なし なし なし なし なし なし

【接続方法】簡易接続ネーミング・メソッド (EZCONNECT)

認証方法区分 認証方法 必要なプロトコル リモート接続 Oracleリスナー経由 Oracleスキーマ(ユーザー) Oracle Databaseのバージョン
パスワード認証 パスワード認証 TCP/IP 可能 不要 必要 全て
パスワード認証 パスワード認証 IPC 可能 不要 必要 全て
パスワード認証 パスワード認証 BEQ 可能 不可能(BEQはリスナーを使用しない) 必要 全て
パスワード認証 パスワード認証 SDP 可能 可能(SDPはリスナーを使用する) 必要 全て
ネットワークでのユーザーの認証 なし なし なし なし なし なし

【接続方法】ローカル・ネーミング・メソッド (LOCAL)

申し訳ありませんが、ローカル・ネーミング・メソッド (LOCAL) のマトリックス表については、公式ドキュメントには記載されていませんでした。ご参考になる情報をお探しの場合は、Oracleの公式サイトをご覧ください。

【接続方法】ディレクトリ・ネーミング・メソッド (DIRECTORY)

ディレクトリ・ネーミング・メソッドのマトリックス表に関する情報は、Oracle Databaseの公式ドキュメントには記載されていませんでした。ただし、ディレクトリ・ネーミング・メソッドについては、Oracleの公式サイトで確認できます。

【接続方法】外部・ネーミング・メソッド (EXTERNAL)

外部・ネーミング・メソッドのマトリックス表に関する情報は、Oracle Databaseの公式ドキュメントには記載されていませんでした。ただし、外部・ネーミング・メソッドについては、Oracleの公式サイトで確認できます。

【接続方法】ホスト・ネーミング・メソッド (HOST)

ホスト・ネーミング・メソッドのマトリックス表に関する情報は、Oracle Databaseの公式ドキュメントには記載されていませんでした。ただし、ホスト・ネーミング・メソッドについては、Oracleの公式サイトで確認できます。

⇧ 上記がOracle Databaseへの接続方法の全量になるらしい。

というか、Oracleの公式のドキュメントの情報が少ないのか、Microsoft Bingさんの技術的な問題なのか、Oracleの公式のドキュメントの情報を元に補完してマトリックス表を作成するってことが難しいらしい。

ちなみに、「リモート接続」というのは、『別サーバー(異なるマシン)からOracle Databaseに接続できるかどうか』という観点になります。

一応、Oracleが公開しているドキュメントに記載のある「認証方法」「Oracle Databaseへの接続方法」を全て網羅したマトリックスを作成してくださいとは言ったけど、Microsoft Bingさん(内部的にはGPT-4を使ってるらしいけど)平気で嘘付くから、おそらく網羅できていないんだろうな...

捏造されてる恐れすらありそうで怖い...

ちなみに、

sqlplus / as sysdba

で接続できるのは、「OS認証」を使ってるから「ユーザー/パスワード」が不要らしい。

まぁ、何が言いたいかと言うと、Oracle Databaseのドキュメントの情報がカオスなのかなと...

接続方法の条件が整理できれば、接続できなかった時に原因が絞りやすくなるかと思ったけど、Oracleが公開しているドキュメントがイケてないのか、Microsoft Bingさんの技術的な限界なのか、Oracle Databaseの接続方法について全く整理できなかったです...

公式のドキュメントが整備されていれば、苦労しないんだけどな...

毎度モヤモヤ感が半端ない...

今回はこのへんで。