7.9 Oracle Machine Learning for R接続のOracleウォレットの作成

Oracleウォレットは、Oracle Databaseのセキュリティ資格証明書の格納に使用する、パスワードで保護されたコンテナです。

ウォレットを使用することで、埋込みRスクリプトで接続の詳細を指定するためのセキュアなメカニズムが得られます。

OML4R接続のウォレットを作成するには:

  1. Oracle Wallet Managerを起動します。

    • (LinuxおよびUNIXの場合)コマンド・ラインでowmと入力します。

    • (Windowsの場合)「スタート」「プログラム」「Oracle-HOME_NAME」「統合管理ツール」「Wallet Manager」の順に選択します。

  2. ウォレットを作成するには、ご使用のサポートされているOracle Databaseのドキュメントの手順に従います。

    1. Oracle Database 12c以降の場合は、Oracle Help CenterのOracle Database Documentationページにアクセスしてください。
    2. Oracle Databaseのバージョンを選択します。
    3. 「Topics」セクションで、「Security」を選択します。
    4. 「Centralized User Management」セクションで、Oracle Database Enterprise User Security Administrator's Guideを選択します。
    5. Oracle Wallet Managerの使用方法の章を参照してください。

    Oracle Database 11c、リリース11.2.0.4の場合は、Oracle Database Advanced SecurityガイドOracle Wallet Managerの使用方法を参照してください。

  3. tnsnames.oraで、OML4Rデータベース用の接続文字列を探します。たとえば:

    mydb_test =
          (DESCRIPTION =
             (ADDRESS =
                (PROTOCOL = TCP)
                (HOST = myserver)
                (PORT = 1521)
             )
             (CONNECT_DATA = (sid=ORCL))
          )
    
  4. ウォレットに接続情報を指定します。ステップ2で参照されている、Oracle Databaseのセキュリティに関するドキュメントのステップに従います。

  5. ウォレットを構成した後は、接続識別子を指定するだけで、OML4Rサーバーのデータベースに接続できます。たとえば:

    ore.connect(conn_string = "mydb_test", all = TRUE)
    

    ore.connectについてさらに学習するには、次のようにRヘルプ・コマンドを使用します。

    help(ore.connect)

外部プロシージャで使用するOracle Walletを構成するには

  1. ウォレット・ストアを作成します。
    $ mkstore -create -wrl /home/oracle/wallet

    プロンプトが表示されたら、ユーザー名とパスワードを割り当てます。この例では、データベース・ユーザーOML_USERとパスワードapasswordおよびPDB ORCLを使用します。

  2. ウォレット資格証明を割り当てます。
    $ mkstore -wrl /home/oracle/wallet -createCredential ORCL oml_user
     apassword
  3. SQL*Plusで、ウォレットを使用してOML_USERとしてログインします。
    $ sqlplus /@ORCL
  4. ユーザーを表示します。
    SQL> show user;
    USER is "OML_USER"

例7-4 ウォレット接続のテスト

この例では、OML4Rセッションのウォレット接続で埋込みRの実行を使用してテストします。この例では、R Distributionに含まれているdatasetsパッケージにあるirisデータセットを使用します。

ore.doEval(function(){print("TEST")})

TEST_WALLET_DF
 function() {
                 return(as.data.frame(length(iris)))
            }

ore.scriptLoad("TEST_WALLET_DF")

ore.doEval(FUN.NAME="TEST_WALLET_DF")
   length(iris)

この例のリスト

> ore.doEval(function(){print("TEST")})
[1] "TEST"
> 
> TEST_WALLET_DF
  function() {
                 return(as.data.frame(length(iris)))
             }
> 
> ore.scriptLoad("TEST_WALLET_DF")
> 
> ore.doEval(FUN.NAME="TEST_WALLET_DF")
>    length(iris)
1 5

ノート:

Oracle Databaseは再帰的な外部プロシージャをサポートしていないため、埋込みRの実行では、データベース接続を作成するR関数は失敗します。埋込みRの実行関数をデータベースに接続するには、ore.connectという特別な制御引数を使用します。