Oracle Providers for ASP.NETのインストール

Oracle Providers for ASP.NETは、Oracle Data Access Components(ODAC)の一部であり、OTNからダウンロードできます。

  • NuGet

    NuGetは、Microsoft.NET用のソフトウェア・パッケージング方法です。これは、開発者や管理者に人気のある自動化されたインストールおよび設定の方法を提供するものであり、Oracle Providers for ASP.NETのインストールに使用できるようになりました。

  • XCopy

    管理者は、XCopyを使用してOracle Providers for ASP.NETを多数のコンピュータに本番デプロイ用にデプロイします。インストールおよび設定中のフットプリントが小さく、また、ファイングレイン・コントロールがあります。

  • Oracle Universal Installer

    開発者またはユーザーは、Oracle Universal Installerを使用して自動GUIインストールを行います。

マシン全体構成

マシン全体構成は、以前はOracle Universal InstallerおよびXCopyのインストール・オプションとして使用できました。現在のODACおよびOracle Clientのインストールでは使用できなくなりました。以前のバージョンでマシン全体のOracle Providers for ASP.NETの構成を選択した場合、その特定のASP.NETプロバイダのインストールでは次のような処理が行われました。

  • machine.configが古いOracle.Web.dllバージョンを使用するように更新されました。

  • 古いOracle.Web.dllGAC_MSILに配置しました。

  • ポリシーDLLをGAC_MSILに配置しました。ここでは、古いOracle.Web.dllを使用するためにAnyCPUアプリケーションがリダイレクトされます。

このため、古いプロバイダをアンインストールするか、次の項で説明するように手動の構成ステップを実行してこれらの変更を元に戻さないかぎり、既存のアプリケーションではこれらの古いOracle ASP.NETプロバイダが引き続き使用されます。

マシン全体構成の変更点は、Oracle Providers for ASP.NET 2.0およびOracle Providers for ASP.NET 4の両方に加えられました。

非マシン全体構成

マシン全体ではないOracle Providers for ASP.NETの構成は、現在使用できる唯一のインストール・オプションです。このインストール・オプションでは次のような処理が行われます。

  • Oracle.Web.dllを使用するためのmachine.config更新を実行しません

  • Oracle.Web.dllGAC_MSILに配置しません

  • 新しいOracle.Web.dllを使用するためにAnyCPUアプリケーションをリダイレクトする、GAC_MSILにポリシーDLLを配置しません

新しくインストールしたバージョンではなく、マシン全体で構成されている場合は、既存のアプリケーションを手動で変更しないかぎり、現在のOracle Providers for ASP.NETのアセンブリ・バージョンが引き続き使用されます。

マシン全体構成を選択しない場合に、新しくインストールしたOracle.Web.dllをアプリケーションで使用するには、次の手動ステップが必要となります。

新しいバージョンのOracle.Web.dllを、GACに配置しないことを選択した後にアプリケーションで使用するためには、Oracle.Web.dllおよびOracle.ManagedDataAccess.dllまたはOracle.DataAccess.dllをアプリケーション・ディレクトリにコピーする必要があります。

新しいOracle.Web.dllを参照するために、web.config内に正しい構成が必要となります。ここでは、すべてのプロバイダをOracle.Web.dllバージョン4.122.19.1を使用するよう構成することが求められる場合の、web.configの内容の例を示します。

<configuration>
  <system.web>
    <membership>
      <providers>
        <add name="OracleMembershipProvider" type="Oracle.Web.Security.OracleMembershipProvider, Oracle.Web, Version=4.122.19.1, 
         Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName="" 
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="false"
         passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" 
         minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
      </providers>
    </membership>
    <profile>
      <providers>
        <add name="OracleProfileProvider" type="Oracle.Web.Profile.OracleProfileProvider, Oracle.Web, Version=4.122.19.1, 
          Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName="" />
      </providers>
    </profile>
    <roleManager>
      <providers>
        <add name="OracleRoleProvider" type="Oracle.Web.Security.OracleRoleProvider, Oracle.Web, Version=4.122.19.1, 
           Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName="" />
      </providers>
    </roleManager>
    <siteMap>
      <providers>
        <add name="OracleSiteMapProvider" type="Oracle.Web.SiteMap.OracleSiteMapProvider, Oracle.Web, Version=4.122.19.1, 
          Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" 
          applicationName="" securityTrimmingEnabled="true" />
      </providers>
    </siteMap>
    <webParts>
      <personalization>
        <providers>
          <add name="OraclePersonalizationProvider" type="Oracle.Web.Personalization.OraclePersonalizationProvider, Oracle.Web, 
            Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" 
            applicationName="" />
        </providers>
      </personalization>
    </webParts>
    <healthMonitoring>
      <providers>
        <add name="OracleWebEventProvider" type="Oracle.Web.Management.OracleWebEventProvider, Oracle.Web, Version=4.122.19.1, 
          Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" buffer="true" 
          bufferMode="OracleNotification" />
      </providers>
    </healthMonitoring>
  </system.web>
</configuration>

新しいOracle.Web.dllバージョンを使用するようアプリケーションを更新できることと、Oracle Providers for ASP.NET用のNuGetパッケージをインストールすることでweb.configを自動的に構成できることに注意してください。

また、Oracle Providers for ASP.NET動的ヘルプがVisual Studioに登録され、Visual Studio動的ヘルプとシームレスに統合されるコンテキスト依存のオンライン・ヘルプが提供されます。動的ヘルプを使用すると、ユーザーは、Oracle Providers for ASP.NETのキーワードにカーソルを置き、[F1]ファンクション・キーを押すことで、Visual Studio内でOracle Providers for ASP.NETのマニュアルにアクセスできます。

Oracle Providers for ASP.NETをインストールすると、次の2つの追加設定タスクが必要になります。

関連項目:

データベース・サーバーの設定

次の各項では、プロバイダの構成方法について説明します。

設定に必要なデータベース権限

Oracleデータベースを設定するには、データベース管理者はOracle Providers for ASP.NETスキーマに次のデータベース権限を付与する必要があります。これらの権限によって、表、ビュー、ストアド・プロシージャおよびOracle Providers for ASP.NETで必要なその他のデータベース・オブジェクトを作成するためのスキーマ権限が付与されます。これらのスクリプトは、ASP.NETプロバイダの状態情報が格納され、ASP.NETプロバイダ自体によってその情報が取得されるデータベースに対して実行する必要があります。これらのSQLスクリプトは、SQL*Plusを使用して実行するか、Oracle Developer Tools for Visual Studio内から実行できます。

Oracle Providers for ASP.NETでは、設定中に次の権限が必要です。

  • 通知を変更する

  • ジョブを作成する

  • プロシージャを作成する

  • パブリック・シノニムを作成する

  • ロールを作成する

  • セッションを作成する

  • 表を作成する

  • ビューを作成する

  • パブリック・シノニムを削除する

  • Oracle表領域へのアクセス権を付与し領域を割り当てる

すべてのデータベース権限が、Oracle Providers for ASP.NETのランタイム操作に必要なわけではありません。データベース管理者は、必要に応じて選択的に権限の付与と取消しができます。ランタイム操作では、すべてのプロバイダでスキーマ・ユーザーにCREATE SESSION権限を付与する必要があります。また、実行中は、サイト・マップ・プロバイダとキャッシュ依存性プロバイダに、CHANGE NOTIFICATION権限が必要です。残りの権限は、インストールおよび削除のためにのみスキーマ・ユーザーに付与し、ランタイム操作の際には取り消すことができます。

設定スクリプトの実行中に発生したエラーは、ユーザーに前述の権限を付与する必要があることを示している場合があります。この場合、データベース管理者は、その権限を付与する必要があります。Oracle Session State Provider for ASP.NETにはCREATE JOB権限が必要です。

すべてのOracle Providers for ASP.NETの構成

データベース内で一度にすべてのプロバイダを構成するには、InstallAllOracleASPNETProviders.sqlを実行します。このスクリプトは、ORACLE_BASE\\ORACLE_HOME\ASP.NET\sqlディレクトリにあります。

Oracle Providers for ASP.NETの個別構成

アプリケーションですべてのOracle Providers for ASP.NETを必要としない場合があるため、プロバイダは個別に設定することができます。Oracle Cache Dependency Providerを除き、インストール・スクリプトInstallOracleASPNETCommon.sqlを、その他のインストール・スクリプトより前に実行する必要があります。次に、各Oracle Provider for ASP.NETに対して、そのプロバイダに固有のSQLスクリプトを実行する必要があります(順番は問いません)。

これらのインストール・スクリプトは、ORACLE_BASE\\ORACLE_HOME\ASP.NET\sqlディレクトリにあります。

表1-2 インストール・スクリプト

プロバイダ 必要なインストール・スクリプト

Oracle Membership Provider

InstallOracleMembership.sql

Oracle Personalization Provider

InstallOraclePersonalization.sql

Oracle Profile Provider

InstallOracleProfile.sql

Oracle Role Provider

InstallOracleRoles.sql

Oracle Session State Provider

InstallOracleSessionState.sql

Oracle Site Map Provider

InstallOracleSiteMap.sql

Oracle Web Events Provider

InstallOracleWebEvents.sql

Oracle Cache Dependency Provider

スクリプトの実行は不要です

設定に関する一般情報

Oracle Providers for ASP.NETのインストール・スクリプトを実行する際には、同じディレクトリにある対応する.plbスクリプトが順に実行されます。.plbスクリプトにより、プロバイダが使用するストアド・プロシージャとストアド・ファンクションが作成されます。インストール.sqlスクリプトは、.plbファイルにアクセスできる場所で実行する必要があります。

各プロバイダは、インストール・スクリプトから作成されたデータベース・オブジェクトを削除するための対応するアンインストール・スクリプトも提供します。これらのスクリプトには、Uninstallという接頭辞が付いています。

ASP.NETクライアントの設定

インストール終了後、開発者は、ASP.NETの状態情報を格納および取得するデータベース・スキーマへの接続情報を指定する必要があります。このステップでは、開発者は必要に応じてUser IdPasswordData Source、およびその他の接続文字列情報を指定する必要があります。開発者は、次の例に類似したエントリをmachine.configファイルに指定できます。

<connectionStrings>
<add name="OraAspNetConString" connectionString="User Id=aspnet;Password=<PASSWORD>;Data Source=oracle; " />
</connectionStrings>
 

オプションで、開発者はmachine.config<system.web>セクションに指定された各ASP.NETプロバイダのプロパティをカスタマイズできます。

machine.configは、マシン全体構成によって自動構成されますが、web.configファイルを使用すれば、開発者はOracle Providers for ASP.NETに対してさらに詳細なアプリケーション・レベルの制御を適用できます。このファイルはmachine.configファイルのエントリより優先されます。開発者は、machine.configファイルと同じXML構文を使用してweb.configファイルを設定できます。

開発者は、標準のASP.NET管理ツールを使用して、Oracle Providers for ASP.NETを構成できます。特に、Internet Information Services管理コンソールを使用できます。コンソールのASP.NET構成設定では、Oracleプロバイダの設定を変更できます。あるいは、Visual StudioのWebサイト・プロジェクトで、「Webサイト」メニュー・アイテムからASP.NET構成を選択することで、特定のWebサイト・プロジェクトに対してこれらの設定ができます。

マシン全体構成のインストールにより、自動的にmachine.configがデフォルト値で設定されますが、管理者は、その設定を変更できます。ユーザーは、OraProvCfgユーティリティを使用して、machine.configファイル内のプロバイダ固有のエントリを次のように構成できます。

ノート:

Oracle Providers for ASP.NET 4を構成するには、ORACLE_BASE\ORACLE_HOME\ASP.NET\Bin\4にあるOraProvCfgユーティリティを使用します。

  • OraProvCfgユーティリティのヘルプを表示するには、次のようにします。

    OraProvCfg -help 
    
  • Oracle Providers for ASP.NET 4固有のエントリをmachine.configファイルに追加するには、次のようにします。

    OraProvCfg  /action:config  /product:aspnet  /component:all 
    	         /frameworkversion:v4.0.30319 
    	         /providerpath:c:\Oracle\odp.net\bin\4\Oracle.Web.dll

    プロバイダのパスは状況に合わせて変更する必要があります。

  • Oracle Providers for ASP.NET 4固有のエントリをmachine.configファイルから削除するには、次のようにします。

    OraProvCfg  /action:unconfig  /product:aspnet  /component:all 
    		  /frameworkversion:v4.0.30319

プロバイダのパスは状況に合わせて変更する必要があります。

HKEY_LOCAL_MACHINE\Software\Oracle\NLS_LANGレジストリ・エントリがNAに設定されている場合は、Oracle Providers for ASP.NETの使用時にORA-12705エラーが発生します。この問題を解決するには、HKEY_LOCAL_MACHINE\Software\Oracle\NLS_LANGレジストリ・エントリを削除します。