ここではデータベース開発を支援するために開発されたフリーソフト「A5:SQL Mk-2」を使ってOracleにOCI経由で接続する方法について紹介します。

Oracleデータベースの接続方法

A5:SQL Mk-2 を使ってOracleデータベースする方法には、「OCI経由」と「直接接続」があります。

OCI経由

Oracleが提供するネイティブAPIを利用して接続する方法です。Oracle Client のインストールが必要で、oci.dll を利用してデータベースに接続します。Oracle独自機能を幅広く利用でき、高速で安定した接続が可能です。

直接接続

Oracle Clientを介さず、アプリケーションがTCP/IPで直接Oracleデータベースに接続する方式です。Oracle Client のインストールが不要で、tnsnames.ora も不要です。一般的な業務アプリケーションで行う処理であれば、直接接続でもほとんど問題ありません。

リスナーの起動を確認する

「OCI経由」で接続する場合、リスナーの起動が必要です。リスナーの起動を確認するためにコマンドプロンプトで以下のコマンドを入力します。
lsnrctl status
実行するとリスナーの情報が確認できます。「TNS-12541: TNS: リスナーがありません。」などエラーが発生しなければ正常に起動されています。

データベースに接続する

A5:SQL Mk-2 に接続したいデータベースの情報を登録します。

  • A5:SQL Mk-2 を起動してメニューバーの [データベース] から [データベースの追加と削除] を選択します。



  • 「データベースの追加と削除」の [追加] ボタンをクリックします。



  • 「追加するデータベースの接続タイプを選択」の [Oracle Database (OCI経由 or 直接接続)] ボタンをクリックします。



  • 「データベースの内容を登録」の接続方法は「OCI経由(Oracle Client利用)」を選択します。



  • 接続文字列、ユーザーID、パスワードを入力します。接続文字列にはPDB(アプリケーションが利用するデータベース)のサービス名である「XEPDB1」を入力します。
    入力したら [テスト接続] ボタンをクリックします。


  • [テスト接続] ボタンをクリックしたら「ORA-12154: TNS: 指定された接続識別子を解決できませんでした」というエラーが発生しました。


ORA-12154 エラーが発生した場合

「ORA-12154: TNS: 指定された接続識別子を解決できませんでした」のエラーは、Oracleデータベースに接続する際、tnsnames.ora に指定されたネットサービス名が検出できないことを示すエラーです。一般的に使用した接続文字列が tnsnames.ora から読み込めなかった場合に発生します。

tnsnames.ora の中身を確認します。

# tnsnames.ora Network Configuration File: C:\app\oracle\product\21c\homes\OraDB21Home1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.14)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

LISTENER_XE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.14)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )


tnsnames.ora に XEPDB1 のネットサービス名がありません。XEPDB1 のネットサービス名を追加します。

# tnsnames.ora Network Configuration File: C:\app\oracle\product\21c\homes\OraDB21Home1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

XEPDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XEPDB1)
    )
  )

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.14)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

LISTENER_XE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.14)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )


データベースに接続する(続き)

今回は Oracle Database 21c Express Edition をインストールした直後だっので、tnsnames.ora にネットサービス名が登録されていませんでした。
それでは続きを説明します。

  • 「データベースの内容を登録」の [テスト接続] ボタンをクリックします。



  • 接続に成功したら [OK] ボタンをクリックします。



  • データベース別名を入力して [OK] ボタンをクリックします。



  • 「データベースの追加と削除」の [閉じる] ボタンをクリックします。



  • ツリービューに接続の別名が表示されます。



  • ツリービューに表示されたデータベース別名の「>」クリックすると「データベースログイン」が表示されます。パスワードを入力して [接続] ボタンをクリックします。



  • 指定したユーザーに接続できました。



以上、フリーソフト「A5:SQL Mk-2」を使ってOracleにOCI経由で接続する方法について解説しました。