Oracle 11g R2 64ビット上のPL / SQLから32ビット外部プロシージャを呼び出します

32ビットと64ビットの両方の外部プロシージャを同時に使用できるようになりました。問題がわかったので、構成は非常に簡単です。



以前32ビットで使用されていたライブラリの作業を整理する必要性に直面して、Oracleは、Oracleの新しいバージョンでは以前のバージョンとは対照的にこの側面が大幅に変更されていることを発見しました。





次のコンポーネントの構成が実行されました。

•Windows 2008 R2 64ビット

•Oracle 11g R2 64ビット

•Oracle Instant Client 11.2.0.2 32-ビット



以下に、Oracleの以前のバージョンとのいくつかの違いのリストを示します。

•extproc32.exe-現在は使用されていません。

•スナップインInstant Clientは、別のORACLE_HOMEにインストールする必要があります。

•新しいextproc構成ファイルが表示されました-%ORACLE_HOME%\ hs \ admin \ extproc.ora;

•LISTNERログファイルは-%ORACLE_HOME%\ diag \ tnslsnr \ [hostname]にあります。



Oracleをセットアップしましょう



最初に行うことは、32ビットOracle Instant Clientのカスタムインストールを実行することです。 インストールには、Oracle Database UtilitiesおよびOracle Net Listenerを選択するだけで十分です。 インストールパスとして、[ドライブ]:\ oracle \ product \ 11.2.0 \ client_32をインストールしました。 インストールの最後に、Net Configuration Assistantが自動的に起動します。これは、デフォルトでORACLE_HOMEからリスナー(LISTNER)を構成するために起動されるnetcaユーティリティを使用するなど、後で起こりうるエラーを回避するために使用することをお勧めします。これは64ビットであることが判明します



Net Configuration Assistantを使用して新しいリスナーを設定するプロセスを説明します。


•構成ウィンドウで、「リスナー構成」を選択してから、

•[追加]を選択して続行します。

•LISTENER_32以降の名前を設定します

•[選択されたプロトコル]列からTCPを削除し、IPCなどを追加します

•フィールドにIPCキー値を入力します:IPC_EXT32以降

•別のリスナーを設定することを拒否し、さらに、準備ができている



Net Configuration Assistantの終了後、生成された%ORACLE_HOME%\ client_32 \ NETWORK \ ADMIN \ listener.oraリスナー構成ファイルを確認できます。Oracleディレクトリへのパスを除き、例に示すようになります。

LISTENER_32 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = IPC_EXT32)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) ) ) SID_LIST_LISTENER_32 = (SID_LIST = (SID_DESC = (SID_NAME = callout32) (ORACLE_HOME = []:\oracle\product\11.2.0\client_32) (PROGRAM = extproc) ) ) ADR_BASE_LISTENER_32 = []:\oracle
      
      







リスナーの構成の最後に、services.mscなどを実行してサービスを構成する必要があります。 新しく作成されたリスナーは、デフォルトでは自動的に開始されず、修正するのが論理的です。

特に、tnsnames.ora構成ファイルを補足する必要があります。これは、インストールされたデータベースのメインインスタンスで実行できます。例:%ORACLE_HOME%\ dbhome_1 \ NETWORK \ ADMIN \ tnasnames.ora。 構成ファイルには、次のエントリを追加する必要があります。

 extproc_connection_data32b = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = IPC_EXT32)) (CONNECT_DATA = (SID = callout32) ) )
      
      







システム構成の説明で最後に言及する価値があるのは、新しいextproc.ora構成ファイルです。 このファイルは、32ビットと64ビットの両方のOracleインスタンスで構成する必要があります。 構成ファイルには、構成の包括的な説明が含まれており、構成の例のみを示します。 最も簡単な方法は、パラメーターEXTPROC_DLLS = ANYの値を指定することです。 または、ONLYオプション[MY_PATH \ my.dll]を使用して正確なパスを指定します。



Oracleライブラリ構成機能



64ビットライブラリの場合、すべてが変更なしで残りますが、32ビットextprocを使用して実行するライブラリをOracleに指示するには、シンボリックリンクを作成し、ライブラリ作成スクリプトを再構成する必要があります。



シンボリックリンクを作成します。

 CREATE DATABASE LINK AGENT_LINK_32B USING 'extproc_connection_data32b';
      
      





例を使用して、ライブラリオブジェクトを作成するためのスクリプトを変更します。

 CREATE OR REPLACE LIBRARY MY_SCHEMA.MY_NAME IS '[]:\oracle\product\11.2.0\client_32\BIN\my.dll' AGENT 'agent_link_32b';
      
      





これは、ライブラリ構成機能が終了する場所です。



環境変数の設定



TNS_ADMIN、ORACLE_HOME、LD_LIBRARY_PATHなどの環境変数を使用してテストしませんでした。 私の場合、それらは環境変数に含まれておらず、Path環境変数には、64ビットデータベースインスタンスへのパスと、32ビットクライアントインスタンスへのパスが順番に含まれています。



All Articles