C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: C#でOracleのストアドを記述したい(その2)


(過去ログ 64 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■36784 / inTopicNo.1)  C#でOracleのストアドを記述したい(その2)
  
□投稿者/ デザパタ大好きっ子 (30回)-(2009/06/05(Fri) 11:36:09)

分類:[.NET 全般] 

こんにちは。

この質問は■36718の続きに相当します。
ただ、質問の内容が変わったので別スレッドにします。

なんとかストアドをサーバーにデプロイできたんですが、次のエラーが出て実行できません。
ORA-28575: 外部プロシージャ・エージェントへのRPC接続をオープンできません。
ORA-06512: "SYS.DBMS_CLR", 行243
ORA-06512: "SYS.GETEMPNAME", 行7
ORA-06512: 行1

VisualStudioのサーバーエクスプローラでSYSのファンクションを確認したところ、GETEMPNAMEは登録されておりました。
GETEMPNAMEは以下を参考に実装しました(SYSに存在しないテーブルを指定しているのでSQLはエラーになると思います)。
ttp://codezine.jp/article/detail/1202?p=3

調べてみますと、どうもリスナーの設定が悪いように思うのですが、どう悪いのかがわかりません。
リスナーの設定は以下を参考に行いました。
ttp://otndnld.oracle.co.jp/document/products/oracle10g/102/windows/B31248-01/intro.htm

現在の設定は以下のようになっています。
[tnsnames.ora]
# tnsnames.ora Network Configuration File: C:\app\Administrator\product\11.1.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

HZN =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = HORIZONSTHP1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = HZN)
    )
  )

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

[listener.ora]
# listener.ora Network Configuration File: C:\app\Administrator\product\11.1.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\app\Administrator\product\11.1.0\db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\Administrator\product\11.1.0\db_1)
      (PROGRAM = extproc)
     )
    (SID_DESC =
      (SID_NAME = HZN)
      (ORACLE_HOME = C:\app\Administrator\product\11.1.0\db_1)
     )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = HORIZONSTHP1)(PORT = 1521))
    )
  )

解決へのアドバイスお願いします。

引用返信 編集キー/
■36791 / inTopicNo.2)  Re[1]: C#でOracleのストアドを記述したい(その2)
□投稿者/ はつね (1017回)-(2009/06/05(Fri) 11:59:01)
はつね さんの Web サイト
No36784 (デザパタ大好きっ子 さん) に返信
> なんとかストアドをサーバーにデプロイできたんですが、次のエラーが出て実行できません。
> ORA-28575: 外部プロシージャ・エージェントへのRPC接続をオープンできません。
> ORA-06512: "SYS.DBMS_CLR", 行243
> ORA-06512: "SYS.GETEMPNAME", 行7
> ORA-06512: 行1

.NETによるストアドの実行権限について調べてみてください。
昔、Windows Developer マガジンの特集でその辺りの解説をした気がしますが手元に原稿がないので詳細不明。
http://www.sesh@p.com/detail.asp?pid=7338

# sh@pの@はoに直してね。

書籍にもちょこっとだけ書いていたので本で確認したけどやっぱり権限っぽい感じです。
http://www.sesh@p.com/detail.asp?pid=7676&mode=spec
引用返信 編集キー/
■36792 / inTopicNo.3)  Re[2]: C#でOracleのストアドを記述したい(その2)
□投稿者/ はつね (1018回)-(2009/06/05(Fri) 12:00:43)
はつね さんの Web サイト
RPC関連だとすると

http://www.atmarkit.co.jp/fdb/rensai/ora_dotnet04/ora_dotnet04_2.html

あたりが参考になるかと。

引用返信 編集キー/
■36799 / inTopicNo.4)  Re[3]: C#でOracleのストアドを記述したい(その2)
□投稿者/ デザパタ大好きっ子 (32回)-(2009/06/05(Fri) 14:01:46)
No36792 (はつね さん) に返信

>.NETによるストアドの実行権限について調べてみてください。
定義者権限と実行者権限の話ですかね?
それでしたら、何も指定していませんので、定義者権限になっていると思います。
SYSユーザーで定義、実行を試みましたので問題ないかと思います。
何よりこの権限の無し時に起こるエラーは違ったもののようですし。

.NETストアドプロシージャをデプロイする際の権限でしょうか?
それでしたら、SYSDBAで行っております。
.NET用のOracleデプロイメント・ウィザードで接続を確立する際、ロールのところで自動的にSYSDBAが選択されておりました。

はつねさんのおっしゃっている「.NETによるストアドの実行権限」というのはまた別の権限のことを指しているんでしょうか?
私の調べた限りではこれ以上のことはわかりませんでした。

>RPC関連だとすると

>http://www.atmarkit.co.jp/fdb/rensai/ora_dotnet04/ora_dotnet04_2.html

>あたりが参考になるかと。

http://codezine.jp/article/detail/1202?p=2
上記と書いてあることがほぼいっしょですね。一応この辺りを参考にしたつもりなのです。

引用返信 編集キー/
■36850 / inTopicNo.5)  Re[4]: C#でOracleのストアドを記述したい(その2)
□投稿者/ デザパタ大好きっ子 (33回)-(2009/06/08(Mon) 09:38:18)
listener.oraの
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))を

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
のように変更したらいけました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -