- PR -

VB.NETのマシンと別のマシンにORACLEのDBサーバーが存在する時の設定について。

投稿者投稿内容
KC@JoJo
会議室デビュー日: 2004/04/12
投稿数: 7
投稿日時: 2004-04-12 17:45
初めて書き込みします。
よろしくお願いしますm( _ _ )m

OS:Win2000Server

 現在、VB.NETとデータベースにoracle9iを使って開発を行っております。
 開発環境なのですが、VB.NETのプログラムが動いているPC(以降Aサーバーと書くことにします)とoracle9iがあるDBサーバーは別マシンになっています。お互いにLANでは繋がっていて、select・insert・delete等一通りの事はAサーバーから行えます。
 
 本題ですが、何をしたいかといいますと、VB.NETのプログラムに画像データを登録する画面がもうけてあるのですが、そこからDBサーバーのテーブルに画像データを登録したいのです。
 oracleのテーブルに画像データを登録するには、BLOB型を使用しPL/SQLを使って登録させるということ、SQL*PLUSからPL/SQLを実行して画像データを登録する方法はわかりました。
 が、VB.NETがネットワークパスを認識してくれないらしくAサーバーからPL/SQLを実行したり、DBサーバーにあるフォルダを参照したりすることができません。
 ちなみに、oracleはINIT.ORAの中で「UTIL_FILE = フォルダ」と指定してやらなければフォルダを認識しないので「UTIL_FILE = フォルダ」でフォルダを指定していますが、ネットワークパスでは認識しませんでしたので、UTIL_FILE = で指定するフォルダはDBサーバー内のフォルダでしか設定できませんでした。

 どなたか、設定方法など知っておられる方、教えていただけないでしょうか。
 よろしくお願いします。
 初めての投稿なだけに、説明不足があったりしているかもしれません。
 その時は、ご指摘いただけるとすぐ説明いたしますので、よろしくお願いします。
 
 大変困っております。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-04-13 08:27

  1. クライアントからAサーバにいったんアップロード
  2. 適切なディレクトリに同じ名前でセーブ
  3. それをOracleサーバに登録

という流れでどうでしょう?
KC@JoJo
会議室デビュー日: 2004/04/12
投稿数: 7
投稿日時: 2004-04-13 09:24
Jitta様 早速の書き込みありがとうございます。

>1.クライアントからAサーバにいったんアップロード
>2.適切なディレクトリに同じ名前でセーブ
>3.それをOracleサーバに登録
>
>という流れでどうでしょう?

 それが、できればいいのですが、画像データをOracleに登録するにはPL/SQLを使わなくてはいけません。PL/SQLは、Oracleサーバー側で動き、Oracleサーバー上のフォルダ(UTIL_FILE=〜で指定したフォルダのみ)しか参照できません。だから、Oracleサーバー上に保存したいのです。(このことは、始めに書いたつもりでいたのですが・・・(汗))
 
 私は、VB.NETの開発から入ったので、VB6のことは(VB.NETもですが)あまり詳しくは、ないのですが、VB6では、ネットワークを介して他のマシンのフォルダを参照したりすることは可能なようです。が、VB.NETでは、セキュリティーの強化のためか初期設定のままでは参照できません。

 すいませんが、よろしくお願いしますm(__)m
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-04-13 10:07
引用:

KC@JoJoさんの書き込み (2004-04-13 09:24) より:

 それが、できればいいのですが、画像データをOracleに登録するにはPL/SQLを使わなくてはいけません。PL/SQLは、Oracleサーバー側で動き、Oracleサーバー上のフォルダ(UTIL_FILE=〜で指定したフォルダのみ)しか参照できません。だから、Oracleサーバー上に保存したいのです。


 理解しているつもりです。BFILE型ではなく、BLOB型ですよね?BFILE型は、実体はディスクにあって、DBにはファイル名が登録される、だったと思いますが、BLOB型だとファイルデータがすべてDBに登録されますよね?違ったかな?Aサーバからの登録はOkということなので、「Aサーバからの登録」という形にすればいい、と思ったのですが???
 あるいは、Oracleサーバの共有ディレクトリを“Aサーバ/ASPNET”ユーザが読み書きできるようにして、そこにセーブする、という形ではどうでしょう?


引用:
 
 私は、VB.NETの開発から入ったので、VB6のことは(VB.NETもですが)あまり詳しくは、ないのですが、VB6では、ネットワークを介して他のマシンのフォルダを参照したりすることは可能なようです。が、VB.NETでは、セキュリティーの強化のためか初期設定のままでは参照できません。


 PC1から、PC2のフォルダを参照することは出来ます。しかし、PC2の共有フォルダにあるアセンブリで、PC1のフォルダに書き込むことは、出来なかったと思います。また、OS(NTFS)の設定として、ユーザによるアクセス制限などがあります。.NETアセンブリから出来ること、OSとして出来ることはきちんと区別しておかなければなりません。引用した部分については、その2つを混同されているように思いました。
KC@JoJo
会議室デビュー日: 2004/04/12
投稿数: 7
投稿日時: 2004-04-13 10:49
Jitta様、書き込みありがとうございます。

> 理解しているつもりです。BFILE型ではなく、BLOB型ですよね?BFILE型は、実体はディスク>にあって、DBにはファイル名が登録される、だったと思いますが、BLOB型だとファイルデータ>がすべてDBに登録されますよね?違ったかな?Aサーバからの登録はOkということなので、「Aサーバからの登録」という形にすればいい、と思ったのですが???
> あるいは、Oracleサーバの共有ディレクトリを“Aサーバ/ASPNET”ユーザが読み書きできる>ようにして、そこにセーブする、という形ではどうでしょう?

BLOB型です。ファイルデータを全てDBに登録したいです。
AサーバーからAサーバーにあるフォルダに画像データを保存するとOracleサーバーのOracleからはAサーバーのフォルダを参照する事ができません。PL/SQLはOracleサーバー上で動きます。
"Aサーバー/ASPNET"ユーザがOracleサーバの共有ディレクトリを読み書きできるようにする方法が知りたいです。
VB.NETでは、"Aサーバー/ASPNET"はパスワードをもっていてOracleサーバを見に行くとパスワードの認証エラー(認証エラーという言葉が適切かどうかわかりませんが・・・・。Oracleサーバのもっている"oraleサーバー/ASPNET"のパスワードと違うと怒られる)。
同じネットワーク上に同じマシン名は存在できませんし・・・。

> PC1から、PC2のフォルダを参照することは出来ます。しかし、PC2の共有フォルダにあるア
>センブリで、PC1のフォルダに書き込むことは、出来なかったと思います。また、OS(NTFS)
>の設定として、ユーザによるアクセス制限などがあります。.NETアセンブリから出来ること、>OSとして出来ることはきちんと区別しておかなければなりません。引用した部分については、>その2つを混同されているように思いました。

 私自身そのあたりは弱いところです。
 確かにJitta様のご指摘のとおり混同しております。というか区別がついていないというのがほんとのところではあります。
 
 何度も申し訳ありませんが、よろしくお願いしますm(__)m
 
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-04-13 11:34
 すみません、なぜかUNIXの.rhostsと混同していました。
#これも、意味がちょっと違うのだが。。。

 特定のマシンのローカルユーザに対して権限を設定することは出来ないので、たとえばASPNETユーザをドメインに設定したユーザグループに所属させ、ドメインのグループに権限を与えます。それはわかりますか?


・・・って、ActiveDirectoryでしょうか?ADは私はわかりません。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-04-13 12:38
KC@JoJoさん、こんにちは。

引用:

 それが、できればいいのですが、画像データをOracleに登録するにはPL/SQLを使わなくてはいけません。


念のために確認なんですが、PL/SQLを使わなければならない理由は何でしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-04-13 13:39
引用:

きくちゃんさんの書き込み (2004-04-13 12:38) より:

念のために確認なんですが、PL/SQLを使わなければならない理由は何でしょうか?


  オラクルのマニュアルのどこかにPL/SQLを使ったLOBの操作例が載っていたので、LOBの操作にはPL/SQL(と言うか、パッケージ)の使用が必須…と思いこんでいたのですが、ODP.NET開発者ガイドやアプリケーション開発者ガイドラージオブジェクトを読むと、ODBCやADO.NET(と言うか、プログラム)からはPL/SQL(と言うか、パッケージ)は不要ですね。

 ただし、BLOB型が最大が4GBなのに対し、.NETでの最大が2GBなので、その制限は受けますが。。。

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-04-13 13:51 ]

スキルアップ/キャリアアップ(JOB@IT)